{"version":3,"file":"static/js/main.511a9e74.js","mappings":"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","sources":["../node_modules/aws-sdk/clients/acm.js","../node_modules/aws-sdk/clients/amp.js","../node_modules/aws-sdk/clients/apigateway.js","../node_modules/aws-sdk/clients/applicationautoscaling.js","../node_modules/aws-sdk/clients/athena.js","../node_modules/aws-sdk/clients/autoscaling.js","../node_modules/aws-sdk/clients/browser_default.js","../node_modules/aws-sdk/clients/cloudformation.js","../node_modules/aws-sdk/clients/cloudfront.js","../node_modules/aws-sdk/clients/cloudhsm.js","../node_modules/aws-sdk/clients/cloudhsmv2.js","../node_modules/aws-sdk/clients/cloudtrail.js","../node_modules/aws-sdk/clients/cloudwatch.js","../node_modules/aws-sdk/clients/cloudwatchevents.js","../node_modules/aws-sdk/clients/cloudwatchlogs.js","../node_modules/aws-sdk/clients/codebuild.js","../node_modules/aws-sdk/clients/codecommit.js","../node_modules/aws-sdk/clients/codedeploy.js","../node_modules/aws-sdk/clients/codepipeline.js","../node_modules/aws-sdk/clients/cognitoidentity.js","../node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","../node_modules/aws-sdk/clients/cognitosync.js","../node_modules/aws-sdk/clients/comprehend.js","../node_modules/aws-sdk/clients/comprehendmedical.js","../node_modules/aws-sdk/clients/configservice.js","../node_modules/aws-sdk/clients/connect.js","../node_modules/aws-sdk/clients/costexplorer.js","../node_modules/aws-sdk/clients/cur.js","../node_modules/aws-sdk/clients/devicefarm.js","../node_modules/aws-sdk/clients/directconnect.js","../node_modules/aws-sdk/clients/dynamodb.js","../node_modules/aws-sdk/clients/dynamodbstreams.js","../node_modules/aws-sdk/clients/ec2.js","../node_modules/aws-sdk/clients/ecr.js","../node_modules/aws-sdk/clients/ecs.js","../node_modules/aws-sdk/clients/efs.js","../node_modules/aws-sdk/clients/elasticache.js","../node_modules/aws-sdk/clients/elasticbeanstalk.js","../node_modules/aws-sdk/clients/elastictranscoder.js","../node_modules/aws-sdk/clients/elb.js","../node_modules/aws-sdk/clients/elbv2.js","../node_modules/aws-sdk/clients/emr.js","../node_modules/aws-sdk/clients/firehose.js","../node_modules/aws-sdk/clients/forecastqueryservice.js","../node_modules/aws-sdk/clients/forecastservice.js","../node_modules/aws-sdk/clients/gamelift.js","../node_modules/aws-sdk/clients/iam.js","../node_modules/aws-sdk/clients/inspector.js","../node_modules/aws-sdk/clients/iot.js","../node_modules/aws-sdk/clients/iotanalytics.js","../node_modules/aws-sdk/clients/iotdata.js","../node_modules/aws-sdk/clients/kinesis.js","../node_modules/aws-sdk/clients/kinesisvideo.js","../node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","../node_modules/aws-sdk/clients/kinesisvideomedia.js","../node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","../node_modules/aws-sdk/clients/kms.js","../node_modules/aws-sdk/clients/lambda.js","../node_modules/aws-sdk/clients/lexmodelbuildingservice.js","../node_modules/aws-sdk/clients/lexruntime.js","../node_modules/aws-sdk/clients/lexruntimev2.js","../node_modules/aws-sdk/clients/location.js","../node_modules/aws-sdk/clients/machinelearning.js","../node_modules/aws-sdk/clients/marketplacecatalog.js","../node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","../node_modules/aws-sdk/clients/mediastoredata.js","../node_modules/aws-sdk/clients/mobileanalytics.js","../node_modules/aws-sdk/clients/mturk.js","../node_modules/aws-sdk/clients/opsworks.js","../node_modules/aws-sdk/clients/personalize.js","../node_modules/aws-sdk/clients/personalizeevents.js","../node_modules/aws-sdk/clients/personalizeruntime.js","../node_modules/aws-sdk/clients/polly.js","../node_modules/aws-sdk/clients/pricing.js","../node_modules/aws-sdk/clients/rds.js","../node_modules/aws-sdk/clients/redshift.js","../node_modules/aws-sdk/clients/rekognition.js","../node_modules/aws-sdk/clients/resourcegroups.js","../node_modules/aws-sdk/clients/route53.js","../node_modules/aws-sdk/clients/route53domains.js","../node_modules/aws-sdk/clients/s3.js","../node_modules/aws-sdk/clients/secretsmanager.js","../node_modules/aws-sdk/clients/servicecatalog.js","../node_modules/aws-sdk/clients/ses.js","../node_modules/aws-sdk/clients/sns.js","../node_modules/aws-sdk/clients/sqs.js","../node_modules/aws-sdk/clients/ssm.js","../node_modules/aws-sdk/clients/storagegateway.js","../node_modules/aws-sdk/clients/sts.js","../node_modules/aws-sdk/clients/translate.js","../node_modules/aws-sdk/clients/waf.js","../node_modules/aws-sdk/clients/workdocs.js","../node_modules/aws-sdk/clients/xray.js","../node_modules/aws-sdk/lib/api_loader.js","../node_modules/aws-sdk/lib/browser.js","../node_modules/aws-sdk/lib/browserCryptoLib.js","../node_modules/aws-sdk/lib/browserHashUtils.js","../node_modules/aws-sdk/lib/browserHmac.js","../node_modules/aws-sdk/lib/browserMd5.js","../node_modules/aws-sdk/lib/browserSha1.js","../node_modules/aws-sdk/lib/browserSha256.js","../node_modules/aws-sdk/lib/browser_loader.js","../node_modules/aws-sdk/lib/cloudfront/signer.js","../node_modules/aws-sdk/lib/config.js","../node_modules/aws-sdk/lib/config_regional_endpoint.js","../node_modules/aws-sdk/lib/core.js","../node_modules/aws-sdk/lib/credentials.js","../node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","../node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","../node_modules/aws-sdk/lib/credentials/saml_credentials.js","../node_modules/aws-sdk/lib/credentials/temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","../node_modules/aws-sdk/lib/discover_endpoint.js","../node_modules/aws-sdk/lib/dynamodb/converter.js","../node_modules/aws-sdk/lib/dynamodb/document_client.js","../node_modules/aws-sdk/lib/dynamodb/numberValue.js","../node_modules/aws-sdk/lib/dynamodb/set.js","../node_modules/aws-sdk/lib/dynamodb/translator.js","../node_modules/aws-sdk/lib/dynamodb/types.js","../node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","../node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","../node_modules/aws-sdk/lib/event-stream/int64.js","../node_modules/aws-sdk/lib/event-stream/parse-event.js","../node_modules/aws-sdk/lib/event-stream/parse-message.js","../node_modules/aws-sdk/lib/event-stream/split-message.js","../node_modules/aws-sdk/lib/event_listeners.js","../node_modules/aws-sdk/lib/http.js","../node_modules/aws-sdk/lib/http/xhr.js","../node_modules/aws-sdk/lib/json/builder.js","../node_modules/aws-sdk/lib/json/parser.js","../node_modules/aws-sdk/lib/maintenance_mode_message.js","../node_modules/aws-sdk/lib/model/api.js","../node_modules/aws-sdk/lib/model/collection.js","../node_modules/aws-sdk/lib/model/operation.js","../node_modules/aws-sdk/lib/model/paginator.js","../node_modules/aws-sdk/lib/model/resource_waiter.js","../node_modules/aws-sdk/lib/model/shape.js","../node_modules/aws-sdk/lib/param_validator.js","../node_modules/aws-sdk/lib/polly/presigner.js","../node_modules/aws-sdk/lib/protocol/helpers.js","../node_modules/aws-sdk/lib/protocol/json.js","../node_modules/aws-sdk/lib/protocol/query.js","../node_modules/aws-sdk/lib/protocol/rest.js","../node_modules/aws-sdk/lib/protocol/rest_json.js","../node_modules/aws-sdk/lib/protocol/rest_xml.js","../node_modules/aws-sdk/lib/query/query_param_serializer.js","../node_modules/aws-sdk/lib/rds/signer.js","../node_modules/aws-sdk/lib/realclock/browserClock.js","../node_modules/aws-sdk/lib/region/utils.js","../node_modules/aws-sdk/lib/region_config.js","../node_modules/aws-sdk/lib/request.js","../node_modules/aws-sdk/lib/resource_waiter.js","../node_modules/aws-sdk/lib/response.js","../node_modules/aws-sdk/lib/s3/managed_upload.js","../node_modules/aws-sdk/lib/sequential_executor.js","../node_modules/aws-sdk/lib/service.js","../node_modules/aws-sdk/lib/services/apigateway.js","../node_modules/aws-sdk/lib/services/cloudfront.js","../node_modules/aws-sdk/lib/services/dynamodb.js","../node_modules/aws-sdk/lib/services/ec2.js","../node_modules/aws-sdk/lib/services/iotdata.js","../node_modules/aws-sdk/lib/services/lambda.js","../node_modules/aws-sdk/lib/services/machinelearning.js","../node_modules/aws-sdk/lib/services/polly.js","../node_modules/aws-sdk/lib/services/rds.js","../node_modules/aws-sdk/lib/services/rdsutil.js","../node_modules/aws-sdk/lib/services/route53.js","../node_modules/aws-sdk/lib/services/s3.js","../node_modules/aws-sdk/lib/services/s3util.js","../node_modules/aws-sdk/lib/services/sqs.js","../node_modules/aws-sdk/lib/services/sts.js","../node_modules/aws-sdk/lib/signers/bearer.js","../node_modules/aws-sdk/lib/signers/presign.js","../node_modules/aws-sdk/lib/signers/request_signer.js","../node_modules/aws-sdk/lib/signers/s3.js","../node_modules/aws-sdk/lib/signers/v2.js","../node_modules/aws-sdk/lib/signers/v3.js","../node_modules/aws-sdk/lib/signers/v3https.js","../node_modules/aws-sdk/lib/signers/v4.js","../node_modules/aws-sdk/lib/signers/v4_credentials.js","../node_modules/aws-sdk/lib/state_machine.js","../node_modules/aws-sdk/lib/util.js","../node_modules/aws-sdk/lib/xml/browser_parser.js","../node_modules/aws-sdk/lib/xml/builder.js","../node_modules/aws-sdk/lib/xml/escape-attribute.js","../node_modules/aws-sdk/lib/xml/escape-element.js","../node_modules/aws-sdk/lib/xml/xml-node.js","../node_modules/aws-sdk/lib/xml/xml-text.js","../node_modules/aws-sdk/node_modules/events/events.js","../node_modules/aws-sdk/node_modules/uuid/dist/bytesToUuid.js","../node_modules/aws-sdk/node_modules/uuid/dist/index.js","../node_modules/aws-sdk/node_modules/uuid/dist/md5-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/rng-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/sha1-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/v1.js","../node_modules/aws-sdk/node_modules/uuid/dist/v3.js","../node_modules/aws-sdk/node_modules/uuid/dist/v35.js","../node_modules/aws-sdk/node_modules/uuid/dist/v4.js","../node_modules/aws-sdk/node_modules/uuid/dist/v5.js","../node_modules/aws-sdk/vendor/endpoint-cache/index.js","../node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/define-data-property/index.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-typed-array/index.js","../node_modules/jmespath/jmespath.js","../node_modules/possible-typed-array-names/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-custom-roulette/dist/bundle.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","../node_modules/available-typed-arrays/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","LandingPage.js","Starters2024.js","Rookies2024.js","MintMoments2024Rounds6to10.js","MomentInfo.js","Clock.js","AFLMintRaffles.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['amp'] = {};\nAWS.Amp = Service.defineService('amp', ['2020-08-01']);\nObject.defineProperty(apiLoader.services['amp'], '2020-08-01', {\n get: function get() {\n var model = require('../apis/amp-2020-08-01.min.json');\n model.paginators = require('../apis/amp-2020-08-01.paginators.json').pagination;\n model.waiters = require('../apis/amp-2020-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Amp;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Amp: require('./amp'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['pricing'] = {};\nAWS.Pricing = Service.defineService('pricing', ['2017-10-15']);\nObject.defineProperty(apiLoader.services['pricing'], '2017-10-15', {\n get: function get() {\n var model = require('../apis/pricing-2017-10-15.min.json');\n model.paginators = require('../apis/pricing-2017-10-15.paginators.json').pagination;\n model.waiters = require('../apis/pricing-2017-10-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Pricing;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['workdocs'] = {};\nAWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);\nObject.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {\n get: function get() {\n var model = require('../apis/workdocs-2016-05-01.min.json');\n model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WorkDocs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","var AWS = require('../core'),\n url = AWS.util.url,\n crypto = AWS.util.crypto.lib,\n base64Encode = AWS.util.base64.encode,\n inherit = AWS.util.inherit;\n\nvar queryEncode = function (string) {\n var replacements = {\n '+': '-',\n '=': '_',\n '/': '~'\n };\n return string.replace(/[\\+=\\/]/g, function (match) {\n return replacements[match];\n });\n};\n\nvar signPolicy = function (policy, privateKey) {\n var sign = crypto.createSign('RSA-SHA1');\n sign.write(policy);\n return queryEncode(sign.sign(privateKey, 'base64'));\n};\n\nvar signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {\n var policy = JSON.stringify({\n Statement: [\n {\n Resource: url,\n Condition: { DateLessThan: { 'AWS:EpochTime': expires } }\n }\n ]\n });\n\n return {\n Expires: expires,\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy.toString(), privateKey)\n };\n};\n\nvar signWithCustomPolicy = function (policy, keyPairId, privateKey) {\n policy = policy.replace(/\\s/mg, '');\n\n return {\n Policy: queryEncode(base64Encode(policy)),\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy, privateKey)\n };\n};\n\nvar determineScheme = function (url) {\n var parts = url.split('://');\n if (parts.length < 2) {\n throw new Error('Invalid URL.');\n }\n\n return parts[0].replace('*', '');\n};\n\nvar getRtmpUrl = function (rtmpUrl) {\n var parsed = url.parse(rtmpUrl);\n return parsed.path.replace(/^\\//, '') + (parsed.hash || '');\n};\n\nvar getResource = function (url) {\n switch (determineScheme(url)) {\n case 'http':\n case 'https':\n return url;\n case 'rtmp':\n return getRtmpUrl(url);\n default:\n throw new Error('Invalid URI scheme. Scheme must be one of'\n + ' http, https, or rtmp');\n }\n};\n\nvar handleError = function (err, callback) {\n if (!callback || typeof callback !== 'function') {\n throw err;\n }\n\n callback(err);\n};\n\nvar handleSuccess = function (result, callback) {\n if (!callback || typeof callback !== 'function') {\n return result;\n }\n\n callback(null, result);\n};\n\nAWS.CloudFront.Signer = inherit({\n /**\n * A signer object can be used to generate signed URLs and cookies for granting\n * access to content on restricted CloudFront distributions.\n *\n * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html\n *\n * @param keyPairId [String] (Required) The ID of the CloudFront key pair\n * being used.\n * @param privateKey [String] (Required) A private key in RSA format.\n */\n constructor: function Signer(keyPairId, privateKey) {\n if (keyPairId === void 0 || privateKey === void 0) {\n throw new Error('A key pair ID and private key are required');\n }\n\n this.keyPairId = keyPairId;\n this.privateKey = privateKey;\n },\n\n /**\n * Create a signed Amazon CloudFront Cookie.\n *\n * @param options [Object] The options to create a signed cookie.\n * @option options url [String] The URL to which the signature will grant\n * access. Required unless you pass in a full\n * policy.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the hash as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [Object] if called synchronously (with no callback), returns the\n * signed cookie parameters.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedCookie: function (options, cb) {\n var signatureHash = 'policy' in options\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);\n\n var cookieHash = {};\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n cookieHash['CloudFront-' + key] = signatureHash[key];\n }\n }\n\n return handleSuccess(cookieHash, cb);\n },\n\n /**\n * Create a signed Amazon CloudFront URL.\n *\n * Keep in mind that URLs meant for use in media/flash players may have\n * different requirements for URL formats (e.g. some require that the\n * extension be removed, some require the file name to be prefixed\n * - mp4:, some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n *\n * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1622.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\nrequire('./maintenance_mode_message');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 100 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n this.httpRequest.path = this.httpRequest.endpoint.path;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (shape.isDocument) {\n return structure;\n }\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n var isAwsQueryCompatible = shape.api && shape.api.awsQueryCompatible;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n } else if (isAwsQueryCompatible && memberShape.defaultValue) {\n if (memberShape.type === 'list') {\n struct[name] = typeof memberShape.defaultValue === 'function' ? memberShape.defaultValue() : memberShape.defaultValue;\n }\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","var warning = [\n 'The AWS SDK for JavaScript (v2) will enter maintenance mode',\n 'on September 8, 2024 and reach end-of-support on September 8, 2025.\\n',\n 'Please migrate your code to use AWS SDK for JavaScript (v3).',\n 'For more information, check blog post at https://a.co/cUPnyil'\n].join('\\n');\n\nmodule.exports = {\n suppress: false\n};\n\n/**\n * To suppress this message:\n * @example\n * require('aws-sdk/lib/maintenance_mode_message').suppress = true;\n */\nfunction emitWarning() {\n if (typeof process === 'undefined')\n return;\n\n // Skip maintenance mode message in Lambda environments\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_EXECUTION_ENV !== 'undefined' &&\n process.env.AWS_EXECUTION_ENV.indexOf('AWS_Lambda_') === 0\n ) {\n return;\n }\n\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE !== 'undefined'\n ) {\n return;\n }\n\n if (typeof process.emitWarning === 'function') {\n process.emitWarning(warning, {\n type: 'NOTE'\n });\n }\n}\n\nsetTimeout(function () {\n if (!module.exports.suppress) {\n emitWarning();\n }\n}, 0);\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","var Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n property(this, 'isDocument', Boolean(shape.document));\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else if (paramValue !== undefined && paramValue !== null) {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n\n if (api.awsQueryCompatible) {\n if (!httpRequest.params) {\n httpRequest.params = {};\n }\n // because Query protocol does this.\n Object.assign(httpRequest.params, req.params);\n }\n\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = code.split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n\n // The minimized models do not have error shapes, so\n // without expanding the model size, it's not possible\n // to validate the response shape (members) or\n // check if any are sensitive to logging.\n\n // Assign the fields as non-enumerable, allowing specific access only.\n for (var key in e || {}) {\n if (key === 'code' || key === 'message') {\n continue;\n }\n error['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(error, key, {\n value: e[key],\n enumerable: false,\n writable: true\n });\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match('= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","var util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n fn.call(this, name, null);\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db',\n operations: {}\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n [region, 'internal-*'],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov'\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * 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\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","require('../polly/presigner');\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.setExpiresString);\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n if (!operationsWith200StatusCodeError[resp.request.operation]) return;\n var httpResponse = resp.httpResponse;\n if (httpResponse.body && httpResponse.body.toString().match('')) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n var service = this.service ? this.service : this;\n service.extractError(resp);\n throw resp.error;\n } else if (!httpResponse.body || !httpResponse.body.toString().match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (operationsWith200StatusCodeError[request.operation] &&\n error.statusCode === 200) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n },\n\n /**\n * @api private\n */\n setExpiresString: function setExpiresString(response) {\n // Check if response contains Expires value, and populate ExpiresString.\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n response.httpResponse.headers.expiresstring = response.httpResponse.headers.expires;\n }\n }\n\n // Check if value in Expires is not a Date using parseTimestamp.\n try {\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n AWS.util.date.parseTimestamp(response.httpResponse.headers.expires);\n }\n }\n } catch (e) {\n console.log('AWS SDK', '(warning)', e);\n delete response.httpResponse.headers.expires;\n }\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) {\n err.originalError = originalError;\n }\n\n\n for (var key in options || {}) {\n if (key[0] === '[' && key[key.length - 1] === ']') {\n key = key.slice(1, -1);\n if (key === 'code' || key === 'message') {\n continue;\n }\n err['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(err, key, {\n value: err[key] || (options && options[key]) || (originalError && originalError[key]),\n enumerable: false,\n writable: true\n });\n }\n }\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\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\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\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.\nEventEmitter.defaultMaxListeners = 10;\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(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\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\nvar _default = bytesToUuid;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\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++) bytes[i] = msg.charCodeAt(i);\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\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// 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\nfunction 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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// 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++) bytes[i] = msg.charCodeAt(i);\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++) W[t] = M[i][t];\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\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\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.default)();\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 : (0, _bytesToUuid.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n var generateUUID = function (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 || (0, _bytesToUuid.default)(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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\n var rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\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 || (0, _bytesToUuid.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\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 Array.isArray(val);\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 a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\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) && (isArrayBuffer(val.buffer));\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 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 plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\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 FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\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.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\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 (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\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\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\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 isPlainObject: isPlainObject,\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 extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\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\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\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 stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"React\"],t):\"object\"==typeof exports?exports.Wheel=t(require(\"react\")):e.Wheel=t(e.React)}(window,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=11)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";(function(e){var r=n(2),i=n(0),o=n.n(i),a=n(6),s=n.n(a),c=n(7),l=n(8),u=n(4),f=n(3),h=n.n(f);function d(){return(d=Object.assign||function(e){for(var t=1;t1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\"))}var x=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,i=r;e>=i;)(i<<=1)<0&&A(16,\"\"+e);this.groupSizes=new Uint32Array(i),this.groupSizes.set(n),this.length=i;for(var o=r;o=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),i=r+n,o=r;o=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(S))return r}}(n),o=void 0!==i?i.nextSibling:null;r.setAttribute(S,\"active\"),r.setAttribute(\"data-styled-version\",\"5.2.1\");var a=W();return a&&r.setAttribute(\"nonce\",a),n.insertBefore(r,o),r},D=function(){function e(e){var t=this.element=z(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(l+=e+\",\")})),r+=\"\"+s+c+'{content:\"'+l+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),K=/(a)(d)/gi,$=function(e){return String.fromCharCode(e+(e>25?39:97))};function U(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=$(t%52)+n;return($(t%52)+n).replace(K,\"$1-$2\")}var q=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},X=function(e){return q(5381,e)};function J(e){for(var t=0;t>>0);if(!t.hasNameForId(r,a)){var s=n(o,\".\"+a,void 0,r);t.insertRules(r,a,s)}i.push(a),this.staticRulesId=a}else{for(var c=this.rules.length,l=q(this.baseHash,n.hash),u=\"\",f=0;f>>0);if(!t.hasNameForId(r,g)){var m=n(u,\".\"+g,void 0,r);t.insertRules(r,g,m)}i.push(g)}}return i.join(\" \")},e}(),V=/^\\s*\\/\\/.*$/gm,Z=[\":\",\"[\",\".\",\"#\"];function ee(e){var t,n,r,i,o=void 0===e?v:e,a=o.options,s=void 0===a?v:a,l=o.plugins,u=void 0===l?m:l,f=new c.a(s),h=[],d=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,i,o,a,s,c,l,u,f){switch(n){case 1:if(0===u&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===l)return r+\"/*|*/\";break;case 3:switch(l){case 102:case 112:return e(i[0]+r),\"\";default:return r+(0===f?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){h.push(e)})),p=function(e,r,o){return 0===r&&Z.includes(o[n.length])||o.match(i)?e:\".\"+t};function g(e,o,a,s){void 0===s&&(s=\"&\");var c=e.replace(V,\"\"),l=o&&a?a+\" \"+o+\" { \"+c+\" }\":c;return t=s,n=o,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),i=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),f(a||!o?\"\":o,l)}return f.use([].concat(u,[function(e,t,i){2===e&&i.length&&i[0].lastIndexOf(n)>0&&(i[0]=i[0].replace(r,p))},d,function(e){if(-2===e){var t=h;return h=[],t}}])),g.hash=u.length?u.reduce((function(e,t){return t.name||A(15),q(e,t.name)}),5381).toString():\"\",g}var te=o.a.createContext(),ne=(te.Consumer,o.a.createContext()),re=(ne.Consumer,new _),ie=ee();function oe(){return Object(i.useContext)(te)||re}function ae(){return Object(i.useContext)(ne)||ie}function se(e){var t=Object(i.useState)(e.stylisPlugins),n=t[0],r=t[1],a=oe(),c=Object(i.useMemo)((function(){var t=a;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=Object(i.useMemo)((function(){return ee({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return Object(i.useEffect)((function(){s()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),o.a.createElement(te.Provider,{value:c},o.a.createElement(ne.Provider,{value:l},e.children))}var ce=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=ie);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return A(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=ie),this.name+e.hash},e}(),le=/([A-Z])/,ue=/([A-Z])/g,fe=/^ms-/,he=function(e){return\"-\"+e.toLowerCase()};function de(e){return le.test(e)?e.replace(ue,he).replace(fe,\"-ms-\"):e}var pe=function(e){return null==e||!1===e||\"\"===e};function ge(e,t,n,r){if(Array.isArray(e)){for(var i,o=[],a=0,s=e.length;a1?t-1:0),r=1;r?@[\\\\\\]^`{|}~-]+/g,be=/(^-|-$)/g;function we(e){return e.replace(ye,\"-\").replace(be,\"\")}var Se=function(e){return U(X(e)>>>0)};function ke(e){return\"string\"==typeof e&&!0}var Ce=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Ae=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function xe(e,t,n){var r=e[n];Ce(t)&&Ce(r)?Oe(r,t):e[n]=t}function Oe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(i[n]=e[n]);return i}(t,[\"componentId\"]),o=r&&r+\"-\"+(ke(e)?e:we(b(e)));return Pe(e,d({},i,{attrs:k,componentId:o}),n)},Object.defineProperty(A,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?Oe({},e.defaultProps,t):t}}),A.toString=function(){return\".\"+A.styledComponentId},a&&h()(A,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),A}var Ee=function(e){return function e(t,n,i){if(void 0===i&&(i=v),!Object(r.isValidElementType)(n))return A(1,String(n));var o=function(){return t(n,i,me.apply(void 0,arguments))};return o.withConfig=function(r){return e(t,n,d({},i,{},r))},o.attrs=function(r){return e(t,n,d({},i,{attrs:Array.prototype.concat(i.attrs,r).filter(Boolean)}))},o}(Pe,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"tspan\"].forEach((function(e){Ee[e]=Ee(e)}));!function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=J(e),_.registerId(this.componentId+1)}var t=e.prototype;t.createStyles=function(e,t,n,r){var i=r(ge(this.rules,t,n,r).join(\"\"),\"\"),o=this.componentId+e;n.insertRules(o,o,i)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&_.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)}}();!function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString(),n=W();return\"\"},this.getStyleTags=function(){return e.sealed?A(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return A(2);var n=((t={})[S]=\"\",t[\"data-styled-version\"]=\"5.2.1\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=W();return r&&(n.nonce=r),[o.a.createElement(\"style\",d({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new _({isServer:!0}),this.sealed=!1}var t=e.prototype;t.collectStyles=function(e){return this.sealed?A(2):o.a.createElement(se,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return A(3)}}();t.a=Ee}).call(this,n(9))},function(e,t,n){\"use strict\";e.exports=n(10)},function(e,t,n){\"use strict\";var r=n(2),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var l=Object.defineProperty,u=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,h=Object.getOwnPropertyDescriptor,d=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if(\"string\"!=typeof n){if(p){var i=d(n);i&&i!==p&&e(t,i,r)}var a=u(n);f&&(a=a.concat(f(n)));for(var s=c(t),g=c(n),m=0;m=t.f?i():e.fonts.load(function(e){return x(e)+\" \"+e.f+\"00 300px \"+C(e.c)}(t.a),t.h).then((function(e){1<=e.length?r():setTimeout(o,25)}),(function(){i()}))}()})),i=null,o=new Promise((function(e,n){i=setTimeout(n,t.f)}));Promise.race([o,r]).then((function(){i&&(clearTimeout(i),i=null),t.g(t.a)}),(function(){t.j(t.a)}))};var W={D:\"serif\",C:\"sans-serif\"},z=null;function D(){if(null===z){var e=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);z=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))}return z}function B(e,t,n){for(var r in W)if(W.hasOwnProperty(r)&&t===e.f[W[r]]&&n===e.f[W[r]])return!0;return!1}function F(e){var t,n=e.g.a.offsetWidth,r=e.h.a.offsetWidth;(t=n===e.f.serif&&r===e.f[\"sans-serif\"])||(t=D()&&B(e,n,r)),t?s()-e.A>=e.w?D()&&B(e,n,r)&&(null===e.u||e.u.hasOwnProperty(e.a.c))?H(e,e.v):H(e,e.B):function(e){setTimeout(a((function(){F(this)}),e),50)}(e):H(e,e.v)}function H(e,t){setTimeout(a((function(){h(this.g.a),h(this.h.a),h(this.j.a),h(this.m.a),t(this.a)}),e),0)}function G(e,t,n){this.c=e,this.a=t,this.f=0,this.m=this.j=!1,this.s=n}N.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f[\"sans-serif\"]=this.m.a.offsetWidth,this.A=s(),F(this)};var _=null;function K(e){0==--e.f&&e.j&&(e.m?((e=e.a).g&&d(e.f,[e.a.c(\"wf\",\"active\")],[e.a.c(\"wf\",\"loading\"),e.a.c(\"wf\",\"inactive\")]),P(e,\"active\")):j(e.a))}function $(e){this.j=e,this.a=new E,this.h=0,this.f=this.g=!0}function U(e,t,n,r,i){var o=0==--e.h;(e.f||e.g)&&setTimeout((function(){var e=i||null,s=r||{};if(0===n.length&&o)j(t.a);else{t.f+=n.length,o&&(t.j=o);var c,l=[];for(c=0;cr&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(g,\"$1\"+e.trim());case 58:return e.trim()+t.replace(g,\"$1\"+e.trim());default:if(0<1*n&&0c.charCodeAt(8))break;case 115:a=a.replace(c,\"-webkit-\"+c)+\";\"+a;break;case 207:case 102:a=a.replace(c,\"-webkit-\"+(102s.charCodeAt(0)&&(s=s.trim()),s=[s],0d)&&(B=(G=G.replace(\" \",\":\")).length),01)for(var n=1;nt/2?-360+a:a},f=function(e,t,n){return Math.min(Math.max(e,+n),t)},h=function(e){return!!e&&!l.includes(e.toLowerCase())},d=function(e){return e.slice(-1)[0].slice(-1)[0]+1},p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";const g=new Image;g.src=\"data:image/png;base64,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\";var m=n(1);const v=m.a.img`\n -webkit-user-drag: none;\n -khtml-user-drag: none;\n -moz-user-drag: none;\n -o-user-drag: none;\n user-drag: none;\n`,y=m.a.div`\n position: relative;\n width: 80vw;\n max-width: 445px;\n height: 80vw;\n max-height: 445px;\n object-fit: contain;\n flex-shrink: 0;\n z-index: 5;\n pointer-events: none;\n`,b=m.a.div`\n position: absolute;\n width: 100%;\n left: 0px;\n right: 0px;\n top: 0px;\n bottom: 0px;\n display: flex;\n justify-content: center;\n align-items: center;\n transform: rotate(${e=>e.startRotationDegrees}deg);\n\n &.started-spinning {\n animation: spin-${({classKey:e})=>e} ${({startSpinningTime:e})=>e/1e3}s cubic-bezier(\n 0.71,\n ${e=>e.disableInitialAnimation?0:-.29},\n 0.96,\n 0.9\n ) 0s 1 normal forwards running,\n continueSpin-${({classKey:e})=>e} ${({continueSpinningTime:e})=>e/1e3}s linear ${({startSpinningTime:e})=>e/1e3}s 1 normal forwards running,\n stopSpin-${({classKey:e})=>e} ${({stopSpinningTime:e})=>e/1e3}s cubic-bezier(0, 0, 0.35, 1.02) ${({startSpinningTime:e,continueSpinningTime:t})=>(e+t)/1e3}s 1 normal forwards\n running;\n }\n\n @keyframes spin-${({classKey:e})=>e} {\n from {\n transform: rotate(${e=>e.startRotationDegrees}deg);\n }\n to {\n transform: rotate(${e=>e.startRotationDegrees+360}deg);\n }\n }\n @keyframes continueSpin-${({classKey:e})=>e} {\n from {\n transform: rotate(${e=>e.startRotationDegrees}deg);\n }\n to {\n transform: rotate(${e=>e.startRotationDegrees+360}deg);\n }\n }\n @keyframes stopSpin-${({classKey:e})=>e} {\n from {\n transform: rotate(${e=>e.startRotationDegrees}deg);\n }\n to {\n transform: rotate(${e=>1440+e.finalRotationDegrees}deg);\n }\n }\n`,w=Object(m.a)(v)`\n position: absolute;\n z-index: 5;\n width: 17%;\n right: 6px;\n top: 15px;\n`,S=m.a.canvas`\n width: 98%;\n height: 98%;\n`;var k=function(e,t,n,r,i,o){e.beginPath(),e.moveTo(t+(r+1)*Math.cos(o),n+(r+1)*Math.sin(o)),e.lineTo(t+(i-1)*Math.cos(o),n+(i-1)*Math.sin(o)),e.closePath(),e.stroke()},C=function(e){var t=e.width,n=e.height,o=e.data,a=e.outerBorderColor,s=e.outerBorderWidth,c=e.innerRadius,l=e.innerBorderColor,u=e.innerBorderWidth,h=e.radiusLineColor,p=e.radiusLineWidth,g=e.fontFamily,m=e.fontWeight,v=e.fontSize,y=e.fontStyle,b=e.perpendicularText,w=e.prizeMap,C=e.rouletteUpdater,A=e.textDistance,x=Object(r.createRef)(),O={outerBorderColor:a,outerBorderWidth:s,innerRadius:c,innerBorderColor:l,innerBorderWidth:u,radiusLineColor:h,radiusLineWidth:p,fontFamily:g,fontWeight:m,fontSize:v,fontStyle:y,perpendicularText:b,prizeMap:w,rouletteUpdater:C,textDistance:A};return Object(r.useEffect)((function(){!function(e,t,n){var r,i,o,a,s,c=n.outerBorderColor,l=n.outerBorderWidth,u=n.innerRadius,h=n.innerBorderColor,p=n.innerBorderWidth,g=n.radiusLineColor,m=n.radiusLineWidth,v=n.fontFamily,y=n.fontWeight,b=n.fontSize,w=n.fontStyle,S=n.perpendicularText,C=n.prizeMap,A=n.textDistance,x=d(C);l*=2,p*=2,m*=2;var O=e.current;if(null==O?void 0:O.getContext(\"2d\")){var T=O.getContext(\"2d\");T.clearRect(0,0,500,500),T.strokeStyle=\"transparent\",T.lineWidth=0;for(var j=0,P=O.width/2-10,E=P*f(0,100,A)/100,R=P*f(0,100,u)/100,I=O.width/2,M=O.height/2,L=0;L0)try{a.a.load({google:{families:Array.from(new Set(b.filter((function(e){return!!e}))))},timeout:1e3,fontactive:function(){Me(!Ie)},active:function(){Ge(!0),Me(!Ie)}})}catch(e){console.log(\"Error loading webfonts:\",e)}else Ge(!0);le(x([],y,!0)),he(m),Qe(ne,m),Ee(!0)}),[o,S,O]),Object(r.useEffect)((function(){var e;if(t&&!Oe){Te(!0),Ye();var r=fe[n][Math.floor(Math.random()*(null===(e=fe[n])||void 0===e?void 0:e.length))],i=u(r,d(fe));ye(i)}}),[t]),Object(r.useEffect)((function(){Ce&&(Te(!1),ge(ve))}),[Ce]);var Ye=function(){Se(!0),Ae(!1),_e.current=!0,setTimeout((function(){_e.current&&(_e.current=!1,Se(!1),Ae(!0),m())}),Je)},Qe=function(e,t){var n;if(ne>=0){var r=Math.floor(e)%(null==t?void 0:t.length),i=t[r][Math.floor((null===(n=t[r])||void 0===n?void 0:n.length)/2)];ge(u(i,d(t),!1))}};return Pe?i.a.createElement(y,{style:!He||De>0&&Ne!==De?{visibility:\"hidden\"}:{}},i.a.createElement(b,{className:we?\"started-spinning\":\"\",classKey:Ke,startSpinningTime:Ue,continueSpinningTime:qe,stopSpinningTime:Xe,startRotationDegrees:pe,finalRotationDegrees:ve,disableInitialAnimation:ae},i.a.createElement(C,{width:\"900\",height:\"900\",data:ce,outerBorderColor:j,outerBorderWidth:E,innerRadius:I,innerBorderColor:L,innerBorderWidth:W,radiusLineColor:D,radiusLineWidth:F,fontFamily:G,fontWeight:U,fontStyle:X,fontSize:K,perpendicularText:Y,prizeMap:fe,rouletteUpdater:Ie,textDistance:V})),i.a.createElement(w,{style:null==ie?void 0:ie.style,src:(null==ie?void 0:ie.src)||g.src,alt:\"roulette-static\"})):null}}])}));","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\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\nvar punycode = require('punycode');\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 // 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 && 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 (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\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 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 puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\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 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 (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 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 (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\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 Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\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 Object.keys(relative).forEach(function(k) {\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 (!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 especialy 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 (!isNull(result.pathname) || !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) && (last === '.' || last === '..') ||\n 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 especialy 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 (!isNull(result.pathname) || !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\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"3173fe30\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"aflmint:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkaflmint\"] = self[\"webpackChunkaflmint\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n unstable_actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n unstable_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n\n let actionData: Record | null | undefined;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result, statusCode: status };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a