From 81db9806901a83f4d0016446cdc48e700ab6e788 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Thu, 27 Feb 2020 10:39:38 -0800 Subject: [PATCH] s3api: Pass through CORS headers This adds support for presigned GET URLs, at least. Note that there is no support yet for preflight requests, so a whole bunch of other CORS stuff *doesn't* work (yet). This was just an easy first step. Change-Id: I43150a630a2a7620099e6bfecaed3bbe958ba423 --- .zuul.yaml | 5 + swift/common/middleware/s3api/s3response.py | 77 +++++--- test/cors/README.rst | 27 ++- test/cors/harness.js | 13 +- test/cors/index.html | 2 + test/cors/main.py | 3 + test/cors/test-s3-obj.js | 177 ++++++++++++++++++ test/cors/vendor/aws-sdk-2.829.0.min.js | 10 + test/unit/common/middleware/s3api/test_obj.py | 73 ++++++++ .../middleware/s3api/test_s3response.py | 2 + .../saio_single_node_setup/add_s3api.yaml | 8 + 11 files changed, 371 insertions(+), 26 deletions(-) create mode 100644 test/cors/test-s3-obj.js create mode 100644 test/cors/vendor/aws-sdk-2.829.0.min.js diff --git a/.zuul.yaml b/.zuul.yaml index ff2cd0278b..9d30139e2a 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -272,6 +272,8 @@ description: | Setup a SAIO dev environment and run ceph-s3tests timeout: 5400 + vars: + s3_acl: yes pre-run: - tools/playbooks/common/install_dependencies.yaml - tools/playbooks/saio_single_node_setup/setup_saio.yaml @@ -315,7 +317,10 @@ description: | Setup a SAIO dev environment and run Swift's CORS functional tests timeout: 1200 + vars: + s3_acl: no pre-run: + - tools/playbooks/saio_single_node_setup/add_s3api.yaml - tools/playbooks/cors/install_selenium.yaml run: tools/playbooks/cors/run.yaml post-run: tools/playbooks/cors/post.yaml diff --git a/swift/common/middleware/s3api/s3response.py b/swift/common/middleware/s3api/s3response.py index fc4b9078d7..3ba4018a65 100644 --- a/swift/common/middleware/s3api/s3response.py +++ b/swift/common/middleware/s3api/s3response.py @@ -46,6 +46,55 @@ class HeaderKeyDict(header_key_dict.HeaderKeyDict): return s +def translate_swift_to_s3(key, val): + _key = swob.bytes_to_wsgi(swob.wsgi_to_bytes(key).lower()) + + def translate_meta_key(_key): + if not _key.startswith('x-object-meta-'): + return _key + # Note that AWS allows user-defined metadata with underscores in the + # header, while WSGI (and other protocols derived from CGI) does not + # differentiate between an underscore and a dash. Fortunately, + # eventlet exposes the raw headers from the client, so we could + # translate '_' to '=5F' on the way in. Now, we translate back. + return 'x-amz-meta-' + _key[14:].replace('=5f', '_') + + if _key.startswith('x-object-meta-'): + return translate_meta_key(_key), val + elif _key in ('content-length', 'content-type', + 'content-range', 'content-encoding', + 'content-disposition', 'content-language', + 'etag', 'last-modified', 'x-robots-tag', + 'cache-control', 'expires'): + return key, val + elif _key == 'x-object-version-id': + return 'x-amz-version-id', val + elif _key == 'x-copied-from-version-id': + return 'x-amz-copy-source-version-id', val + elif _key == 'x-backend-content-type' and \ + val == DELETE_MARKER_CONTENT_TYPE: + return 'x-amz-delete-marker', 'true' + elif _key == 'access-control-expose-headers': + exposed_headers = val.split(', ') + exposed_headers.extend([ + 'x-amz-request-id', + 'x-amz-id-2', + ]) + return 'access-control-expose-headers', ', '.join( + translate_meta_key(h) for h in exposed_headers) + elif _key == 'access-control-allow-methods': + methods = val.split(', ') + try: + methods.remove('COPY') # that's not a thing in S3 + except ValueError: + pass # not there? don't worry about it + return key, ', '.join(methods) + elif _key.startswith('access-control-'): + return key, val + # else, drop the header + return None + + class S3ResponseBase(object): """ Base class for swift3 responses. @@ -98,29 +147,13 @@ class S3Response(S3ResponseBase, swob.Response): # Handle swift headers for key, val in sw_headers.items(): - _key = swob.bytes_to_wsgi(swob.wsgi_to_bytes(key).lower()) + s3_pair = translate_swift_to_s3(key, val) + if s3_pair is None: + continue + headers[s3_pair[0]] = s3_pair[1] - if _key.startswith('x-object-meta-'): - # Note that AWS ignores user-defined headers with '=' in the - # header name. We translated underscores to '=5F' on the way - # in, though. - headers['x-amz-meta-' + _key[14:].replace('=5f', '_')] = val - elif _key in ('content-length', 'content-type', - 'content-range', 'content-encoding', - 'content-disposition', 'content-language', - 'etag', 'last-modified', 'x-robots-tag', - 'cache-control', 'expires'): - headers[key] = val - elif _key == 'x-object-version-id': - headers['x-amz-version-id'] = val - elif _key == 'x-copied-from-version-id': - headers['x-amz-copy-source-version-id'] = val - elif _key == 'x-static-large-object': - # for delete slo - self.is_slo = config_true_value(val) - elif _key == 'x-backend-content-type' and \ - val == DELETE_MARKER_CONTENT_TYPE: - headers['x-amz-delete-marker'] = 'true' + self.is_slo = config_true_value(sw_headers.get( + 'x-static-large-object')) # Check whether we stored the AWS-style etag on upload override_etag = s3_sysmeta_headers.get( diff --git a/test/cors/README.rst b/test/cors/README.rst index 40a3e8c656..72fc8b4524 100644 --- a/test/cors/README.rst +++ b/test/cors/README.rst @@ -41,6 +41,16 @@ environment variables to determine how to connect to Swift: * ``OS_PASSWORD`` (or ``ST_KEY``) * ``OS_STORAGE_URL`` (optional) +There are additional environment variables to exercise the S3 API: + +* ``S3_ENDPOINT`` +* ``S3_USER`` +* ``S3_KEY`` + +.. note:: + It is necessary to set `s3_acl = False` in the `[filter:s3api]` section of + your `proxy-server.conf` for all the s3 object tests to pass. + .. TODO: verify that this works with Keystone @@ -54,7 +64,7 @@ To inspect the test results in your local browser, run:: This will create some test containers and object in Swift, start a simple static site, and emit a URL to visit to run the tests, like:: - Serving test at http://localhost:8000/#OS_AUTH_URL=http://saio/auth/v1.0&OS_USERNAME=test:tester&OS_PASSWORD=testing&OS_STORAGE_URL=http://saio/v1/AUTH_test + Serving test at http://localhost:8000/#OS_AUTH_URL=http://saio/auth/v1.0&OS_USERNAME=test:tester&OS_PASSWORD=testing&OS_STORAGE_URL=http://saio/v1/AUTH_test&S3_ENDPOINT=http://saio&S3_USER=test%3Atester&S3_KEY=testing .. note:: You can use ``--hostname`` and ``--port`` to adjust the origin used. @@ -95,3 +105,18 @@ for the Python bindings for more information about setting this up. When using selenium, the test runner will try to run tests in Firefox, Chrome, Safari, Edge, and IE if available; if a browser seems to not be available, its tests will be skipped. + +Updating aws-sdk-js +------------------- + +There are tests that exercise CORS over the S3 API; these use a vendored +version of `aws-sdk-js `__ that only +covers the S3 service. The current version used is 2.829.0, built on +2021-01-21 by + +* visiting https://sdk.amazonaws.com/builder/js/, +* clearing all services, +* explicitly adding AWS.S3, +* clicking "Build" to download, +* saving in the ``test/cors/vendor`` directory, and finally +* updating the version number in ``test/cors/test-s3*.js``. diff --git a/test/cors/harness.js b/test/cors/harness.js index 64a7500927..abd4b13b20 100644 --- a/test/cors/harness.js +++ b/test/cors/harness.js @@ -14,10 +14,17 @@ function makeUrl (path) { export function MakeRequest (method, path, headers, body, params) { var url = makeUrl(path) + headers = headers || {} params = params || {} - // give each request a unique query string to avoid ever fetching from cache - params['cors-test-time'] = Date.now().toString() - params['cors-test-random'] = Math.random().toString() + if (!( + url.searchParams.has('Signature') || + url.searchParams.has('X-Amz-Signature') || + 'Authorization' in headers + )) { + // give each Swift request a unique query string to avoid ever fetching from cache + params['cors-test-time'] = Date.now().toString() + params['cors-test-random'] = Math.random().toString() + } for (var key in params) { url.searchParams.append(key, params[key]) } diff --git a/test/cors/index.html b/test/cors/index.html index 9844536f61..9a9654756a 100644 --- a/test/cors/index.html +++ b/test/cors/index.html @@ -22,6 +22,7 @@ td:nth-child(2) { .map(v => v.split('=')) .reduce( (acc, [key, val]) => ({ ...acc, [unescape(key)]: unescape(val) }), {}) console.log(PARAMS) + var _xamzrequire // Needed to be able to import the sdk later @@ -29,6 +30,7 @@ td:nth-child(2) { +

CORS Tests

diff --git a/test/cors/main.py b/test/cors/main.py index eb3edc3d68..ddc35310f8 100755 --- a/test/cors/main.py +++ b/test/cors/main.py @@ -39,6 +39,9 @@ DEFAULT_ENV = { 'OS_USERNAME': os.environ.get('ST_USER', 'test:tester'), 'OS_PASSWORD': os.environ.get('ST_KEY', 'testing'), 'OS_STORAGE_URL': None, + 'S3_ENDPOINT': 'http://localhost:8080', + 'S3_USER': 'test:tester', + 'S3_KEY': 'testing', } ENV = {key: os.environ.get(key, default) for key, default in DEFAULT_ENV.items()} diff --git a/test/cors/test-s3-obj.js b/test/cors/test-s3-obj.js new file mode 100644 index 0000000000..35dd198158 --- /dev/null +++ b/test/cors/test-s3-obj.js @@ -0,0 +1,177 @@ +/* global PARAMS */ + +import { + runTests, + MakeRequest, + HasStatus, + HasHeaders, + DoesNotHaveHeaders, + HasNoBody, + BodyHasLength, + CorsBlocked +} from './harness.js' + +import './vendor/aws-sdk-2.829.0.min.js' +const AWS = window.AWS + +function CheckTransactionIdHeaders (resp) { + return Promise.resolve(resp) + .then(HasHeaders([ + 'x-amz-request-id', + 'x-amz-id-2', + 'X-Openstack-Request-Id', + 'X-Trans-Id' + ])) + .then((resp) => { + const txnId = resp.getResponseHeader('X-Openstack-Request-Id') + return Promise.resolve(resp) + .then(HasHeaders({ + 'x-amz-request-id': txnId, + 'x-amz-id-2': txnId, + 'X-Trans-Id': txnId + })) + }) +} +function CheckS3Headers (resp) { + return Promise.resolve(resp) + .then(HasHeaders([ + 'Last-Modified', + 'Content-Type' + ])) + .then(CheckTransactionIdHeaders) + .then(DoesNotHaveHeaders([ + 'X-Timestamp', + 'Accept-Ranges', + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Date', + // Hmmm.... + 'Content-Range', + 'X-Account-Bytes-Used', + 'X-Account-Container-Count', + 'X-Account-Object-Count', + 'X-Container-Bytes-Used', + 'X-Container-Object-Count' + ])) +} + +function MakeS3Request (service, operation, params) { + return new Promise((resolve, reject) => { + const s3req = service[operation](params) + // Don't *actually* send it + s3req.removeListener('send', AWS.EventListeners.Core.SEND) + + // Instead, copy method, path, headers over to a new test-harness request + s3req.addListener('send', function () { + const endpoint = s3req.httpRequest.endpoint + const signedReq = s3req.httpRequest + + const filteredHeaders = {} + for (const header of Object.keys(signedReq.headers)) { + if (header === 'Host' || header === 'Content-Length') { + continue // browser won't let you send these anyway + } + filteredHeaders[header] = signedReq.headers[header] + } + resolve(MakeRequest( + signedReq.method, + endpoint.protocol + '//' + endpoint.host + signedReq.path, + filteredHeaders, + signedReq.body + )) + }) + + s3req.send() + }) +} + +function makeTests (params) { + const service = new AWS.S3(params) + return [ + ['presigned GET, no CORS', + () => MakeRequest('GET', service.getSignedUrl('getObject', { + Bucket: 'public-no-cors', + Key: 'obj' + })) + .then(CorsBlocked)], + ['presigned HEAD, no CORS', + () => MakeRequest('HEAD', service.getSignedUrl('headObject', { + Bucket: 'public-no-cors', + Key: 'obj' + })) + .then(CorsBlocked)], + ['presigned GET, object exists', + () => MakeRequest('GET', service.getSignedUrl('getObject', { + Bucket: 'private-with-cors', + Key: 'obj' + })) + .then(HasStatus(200, 'OK')) + .then(CheckS3Headers) + .then(HasHeaders(['x-amz-meta-mtime'])) + .then(DoesNotHaveHeaders(['X-Object-Meta-Mtime'])) + .then(HasHeaders({ + 'Content-Type': 'application/octet-stream', + Etag: '"0f343b0931126a20f133d67c2b018a3b"' + })) + .then(BodyHasLength(1024))], + ['presigned HEAD, object exists', + () => MakeRequest('HEAD', service.getSignedUrl('headObject', { + Bucket: 'private-with-cors', + Key: 'obj' + })) + .then(HasStatus(200, 'OK')) + .then(CheckS3Headers) + .then(HasHeaders(['x-amz-meta-mtime'])) + .then(DoesNotHaveHeaders(['X-Object-Meta-Mtime'])) + .then(HasHeaders({ + 'Content-Type': 'application/octet-stream', + Etag: '"0f343b0931126a20f133d67c2b018a3b"' + })) + .then(HasNoBody)], + ['GET, object exists', + () => MakeS3Request(service, 'getObject', { + Bucket: 'private-with-cors', + Key: 'obj' + }) + .then(CorsBlocked)], // Pre-flight failed + ['PUT', + () => MakeS3Request(service, 'putObject', { + Bucket: 'private-with-cors', + Key: 'put-target', + Body: 'test' + }) + .then(CorsBlocked)], // Pre-flight failed + ['GET If-Match matching', + () => MakeS3Request(service, 'getObject', { + Bucket: 'private-with-cors', + Key: 'obj', + IfMatch: '0f343b0931126a20f133d67c2b018a3b' + }) + .then(CorsBlocked)], // Pre-flight failed + ['GET Range', + () => MakeS3Request(service, 'getObject', { + Bucket: 'private-with-cors', + Key: 'obj', + Range: 'bytes=100-199' + }) + .then(CorsBlocked)], // Pre-flight failed + ] +} + +runTests('s3 obj (v2)', makeTests({ + endpoint: PARAMS.S3_ENDPOINT || 'http://localhost:8080', + region: PARAMS.S3_REGION || 'us-east-1', + accessKeyId: PARAMS.S3_USER || 'test:tester', + secretAccessKey: PARAMS.S3_KEY || 'testing', + s3ForcePathStyle: true, + signatureVersion: 'v2' +})) + +runTests('s3 obj (v4)', makeTests({ + endpoint: PARAMS.S3_ENDPOINT || 'http://localhost:8080', + region: PARAMS.S3_REGION || 'us-east-1', + accessKeyId: PARAMS.S3_USER || 'test:tester', + secretAccessKey: PARAMS.S3_KEY || 'testing', + s3ForcePathStyle: true, + signatureVersion: 'v4' +})) diff --git a/test/cors/vendor/aws-sdk-2.829.0.min.js b/test/cors/vendor/aws-sdk-2.829.0.min.js new file mode 100644 index 0000000000..b803ed5b84 --- /dev/null +++ b/test/cors/vendor/aws-sdk-2.829.0.min.js @@ -0,0 +1,10 @@ +_xamzrequire=function(){function e(t,r,n){function i(s,a){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){return i(t[s][1][e]||e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s=0||r.indexOf("fips")>=0)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"ARN endpoint is not compatible with FIPS region"});if(!t&&r!==s)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"Configured region conflicts with access point region"});if(t&&i.getEndpointSuffix(r)!==i.getEndpointSuffix(s))throw n.util.error(new Error,{code:"InvalidConfiguration",message:"Configured region and access point region not in same partition"});if(e.service.config.useAccelerateEndpoint)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"useAccelerateEndpoint config is not supported with access point ARN"});if("s3-outposts"===e.service._parsedArn.service&&e.service.config.useDualstack)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"useDualstack config is not supported with outposts access point ARN"})},loadUseArnRegionConfig:function(e){var t="AWS_S3_USE_ARN_REGION",i="s3_use_arn_region",o=!0,s=e.service._originalConfig||{};if(void 0!==e.service.config.s3UseArnRegion)return e.service.config.s3UseArnRegion;if(void 0!==s.s3UseArnRegion)o=!0===s.s3UseArnRegion;else if(n.util.isNode())if(r.env[t]){var a=r.env[t].trim().toLowerCase();if(["false","true"].indexOf(a)<0)throw n.util.error(new Error,{code:"InvalidConfiguration",message:t+" only accepts true or false. Got "+r.env[t],retryable:!1});o="true"===a}else{var u={},c={};try{u=n.util.getProfilesFromSharedConfig(n.util.iniLoader),c=u[r.env.AWS_PROFILE||n.util.defaultProfile]}catch(e){}if(c[i]){if(["false","true"].indexOf(c[i].trim().toLowerCase())<0)throw n.util.error(new Error,{code:"InvalidConfiguration",message:i+" only accepts true or false. Got "+c[i],retryable:!1});o="true"===c[i].trim().toLowerCase()}}return e.service.config.s3UseArnRegion=o,o},validatePopulateUriFromArn:function(e){if(e.service._originalConfig&&e.service._originalConfig.endpoint)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"Custom endpoint is not compatible with access point ARN"});if(e.service.config.s3ForcePathStyle)throw n.util.error(new Error,{code:"InvalidConfiguration",message:"Cannot construct path-style endpoint with access point"})},dnsCompatibleBucketName:function(e){var t=e,r=new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/),n=new RegExp(/(\d+\.){3}\d+/),i=new RegExp(/\.\./);return!(!t.match(r)||t.match(n)||t.match(i))}};t.exports=o}).call(this)}).call(this,e("_process"))},{"../core":39,"../region_config":82,_process:8}],38:[function(e,t,r){(function(r){(function(){function n(e,t){if("string"==typeof e){if(["legacy","regional"].indexOf(e.toLowerCase())>=0)return e.toLowerCase();throw o.util.error(new Error,t)}}function i(e,t){e=e||{};var i;if(e[t.clientConfig]&&(i=n(e[t.clientConfig],{code:"InvalidConfiguration",message:'invalid "'+t.clientConfig+'" configuration. Expect "legacy" or "regional". Got "'+e[t.clientConfig]+'".'})))return i;if(!o.util.isNode())return i;if(Object.prototype.hasOwnProperty.call(r.env,t.env)){if(i=n(r.env[t.env],{code:"InvalidEnvironmentalVariable",message:"invalid "+t.env+' environmental variable. Expect "legacy" or "regional". Got "'+r.env[t.env]+'".'}))return i}var s={};try{s=o.util.getProfilesFromSharedConfig(o.util.iniLoader)[r.env.AWS_PROFILE||o.util.defaultProfile]}catch(e){}if(s&&Object.prototype.hasOwnProperty.call(s,t.sharedConfig)){if(i=n(s[t.sharedConfig],{code:"InvalidConfiguration",message:"invalid "+t.sharedConfig+' profile config. Expect "legacy" or "regional". Got "'+s[t.sharedConfig]+'".'}))return i}return i}var o=e("./core");t.exports=i}).call(this)}).call(this,e("_process"))},{"./core":39,_process:8}],39:[function(e,t,r){var n={util:e("./util")};({}).toString(),t.exports=n,n.util.update(n,{VERSION:"2.829.0",Signers:{},Protocol:{Json:e("./protocol/json"),Query:e("./protocol/query"),Rest:e("./protocol/rest"),RestJson:e("./protocol/rest_json"),RestXml:e("./protocol/rest_xml")},XML:{Builder:e("./xml/builder"),Parser:null},JSON:{Builder:e("./json/builder"),Parser:e("./json/parser")},Model:{Api:e("./model/api"),Operation:e("./model/operation"),Shape:e("./model/shape"),Paginator:e("./model/paginator"),ResourceWaiter:e("./model/resource_waiter")},apiLoader:e("./api_loader"),EndpointCache:e("../vendor/endpoint-cache").EndpointCache}),e("./sequential_executor"),e("./service"),e("./config"),e("./http"),e("./event_listeners"),e("./request"),e("./response"),e("./resource_waiter"),e("./signers/request_signer"),e("./param_validator"),n.events=new n.SequentialExecutor,n.util.memoizedProperty(n,"endpointCache",function(){return new n.EndpointCache(n.config.endpointCacheSize)},!0)},{"../vendor/endpoint-cache":125,"./api_loader":27,"./config":37,"./event_listeners":60,"./http":61,"./json/builder":63,"./json/parser":64,"./model/api":65,"./model/operation":67,"./model/paginator":68,"./model/resource_waiter":69,"./model/shape":70,"./param_validator":71,"./protocol/json":74,"./protocol/query":75,"./protocol/rest":76,"./protocol/rest_json":77,"./protocol/rest_xml":78,"./request":84,"./resource_waiter":85,"./response":86,"./sequential_executor":88,"./service":89,"./signers/request_signer":110,"./util":118,"./xml/builder":120}],125:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("./utils/LRU"),i=1e3,o=function(){function e(e){void 0===e&&(e=i),this.maxSize=e,this.cache=new n.LRUCache(e)}return Object.defineProperty(e.prototype,"size",{get:function(){return this.cache.length},enumerable:!0,configurable:!0}),e.prototype.put=function(t,r){var n="string"!=typeof t?e.getKeyString(t):t,i=this.populateValue(r);this.cache.put(n,i)},e.prototype.get=function(t){var r="string"!=typeof t?e.getKeyString(t):t,n=Date.now(),i=this.cache.get(r);if(i)for(var o=0;o0||n?o.toString():""},t.exports=n},{"../util":118,"./xml-node":123,"./xml-text":124}],124:[function(e,t,r){function n(e){this.value=e}var i=e("./escape-element").escapeElement;n.prototype.toString=function(){return i(""+this.value)},t.exports={XmlText:n}},{"./escape-element":122}],122:[function(e,t,r){function n(e){return e.replace(/&/g,"&").replace(//g,">")}t.exports={escapeElement:n}},{}],123:[function(e,t,r){function n(e,t){void 0===t&&(t=[]),this.name=e,this.children=t,this.attributes={}}var i=e("./escape-attribute").escapeAttribute;n.prototype.addAttribute=function(e,t){return this.attributes[e]=t,this},n.prototype.addChildNode=function(e){return this.children.push(e),this},n.prototype.removeAttribute=function(e){return delete this.attributes[e],this},n.prototype.toString=function(){for(var e=Boolean(this.children.length),t="<"+this.name,r=this.attributes,n=0,o=Object.keys(r);n"+this.children.map(function(e){return e.toString()}).join("")+"":"/>"},t.exports={XmlNode:n}},{"./escape-attribute":121}],121:[function(e,t,r){function n(e){return e.replace(/&/g,"&").replace(/'/g,"'").replace(//g,">").replace(/"/g,""")}t.exports={escapeAttribute:n}},{}],110:[function(e,t,r){var n=e("../core"),i=n.util.inherit;n.Signers.RequestSigner=i({constructor:function(e){this.request=e},setServiceClientId:function(e){this.serviceClientId=e},getServiceClientId:function(){return this.serviceClientId}}),n.Signers.RequestSigner.getVersion=function(e){switch(e){case"v2":return n.Signers.V2;case"v3":return n.Signers.V3;case"s3v4":case"v4":return n.Signers.V4;case"s3":return n.Signers.S3;case"v3https":return n.Signers.V3Https}throw new Error("Unknown signing version "+e)},e("./v2"),e("./v3"),e("./v3https"),e("./v4"),e("./s3"),e("./presign")},{"../core":39,"./presign":109,"./s3":111,"./v2":112,"./v3":113,"./v3https":114,"./v4":115}],115:[function(e,t,r){var n=e("../core"),i=e("./v4_credentials"),o=n.util.inherit;n.Signers.V4=o(n.Signers.RequestSigner,{constructor:function(e,t,r){n.Signers.RequestSigner.call(this,e),this.serviceName=t,r=r||{},this.signatureCache="boolean"!=typeof r.signatureCache||r.signatureCache,this.operation=r.operation,this.signatureVersion=r.signatureVersion},algorithm:"AWS4-HMAC-SHA256",addAuthorization:function(e,t){var r=n.util.date.iso8601(t).replace(/[:\-]|\.\d{3}/g,"");this.isPresigned()?this.updateForPresigned(e,r):this.addHeaders(e,r),this.request.headers.Authorization=this.authorization(e,r)},addHeaders:function(e,t){this.request.headers["X-Amz-Date"]=t,e.sessionToken&&(this.request.headers["x-amz-security-token"]=e.sessionToken)},updateForPresigned:function(e,t){var r=this.credentialString(t),i={"X-Amz-Date":t,"X-Amz-Algorithm":this.algorithm,"X-Amz-Credential":e.accessKeyId+"/"+r,"X-Amz-Expires":this.request.headers["presigned-expires"],"X-Amz-SignedHeaders":this.signedHeaders()};e.sessionToken&&(i["X-Amz-Security-Token"]=e.sessionToken),this.request.headers["Content-Type"]&&(i["Content-Type"]=this.request.headers["Content-Type"]),this.request.headers["Content-MD5"]&&(i["Content-MD5"]=this.request.headers["Content-MD5"]),this.request.headers["Cache-Control"]&&(i["Cache-Control"]=this.request.headers["Cache-Control"]),n.util.each.call(this,this.request.headers,function(e,t){if("presigned-expires"!==e&&this.isSignableHeader(e)){var r=e.toLowerCase();0===r.indexOf("x-amz-meta-")?i[r]=t:0===r.indexOf("x-amz-")&&(i[e]=t)}});var o=this.request.path.indexOf("?")>=0?"&":"?";this.request.path+=o+n.util.queryParamsToString(i)},authorization:function(e,t){var r=[],n=this.credentialString(t);return r.push(this.algorithm+" Credential="+e.accessKeyId+"/"+n),r.push("SignedHeaders="+this.signedHeaders()),r.push("Signature="+this.signature(e,t)),r.join(", ")},signature:function(e,t){var r=i.getSigningKey(e,t.substr(0,8),this.request.region,this.serviceName,this.signatureCache);return n.util.crypto.hmac(r,this.stringToSign(t),"hex")},stringToSign:function(e){var t=[];return t.push("AWS4-HMAC-SHA256"),t.push(e),t.push(this.credentialString(e)),t.push(this.hexEncodedHash(this.canonicalString())),t.join("\n")},canonicalString:function(){var e=[],t=this.request.pathname();return"s3"!==this.serviceName&&"s3v4"!==this.signatureVersion&&(t=n.util.uriEscapePath(t)),e.push(this.request.method),e.push(t),e.push(this.request.search()),e.push(this.canonicalHeaders()+"\n"),e.push(this.signedHeaders()),e.push(this.hexEncodedBodyHash()),e.join("\n")},canonicalHeaders:function(){var e=[];n.util.each.call(this,this.request.headers,function(t,r){e.push([t,r])}),e.sort(function(e,t){return e[0].toLowerCase()50&&delete i[o.shift()]),f},emptyCache:function(){i={},o=[]}}},{"../core":39}],114:[function(e,t,r){var n=e("../core"),i=n.util.inherit;e("./v3"),n.Signers.V3Https=i(n.Signers.V3,{authorization:function(e){return"AWS3-HTTPS AWSAccessKeyId="+e.accessKeyId+",Algorithm=HmacSHA256,Signature="+this.signature(e)},stringToSign:function(){return this.request.headers["X-Amz-Date"]}}),t.exports=n.Signers.V3Https},{"../core":39,"./v3":113}],113:[function(e,t,r){var n=e("../core"),i=n.util.inherit;n.Signers.V3=i(n.Signers.RequestSigner,{addAuthorization:function(e,t){var r=n.util.date.rfc822(t);this.request.headers["X-Amz-Date"]=r,e.sessionToken&&(this.request.headers["x-amz-security-token"]=e.sessionToken),this.request.headers["X-Amzn-Authorization"]=this.authorization(e,r)},authorization:function(e){return"AWS3 AWSAccessKeyId="+e.accessKeyId+",Algorithm=HmacSHA256,SignedHeaders="+this.signedHeaders()+",Signature="+this.signature(e)},signedHeaders:function(){var e=[];return n.util.arrayEach(this.headersToSign(),function(t){e.push(t.toLowerCase())}),e.sort().join(";")},canonicalHeaders:function(){var e=this.request.headers,t=[];return n.util.arrayEach(this.headersToSign(),function(r){t.push(r.toLowerCase().trim()+":"+String(e[r]).trim())}),t.sort().join("\n")+"\n"},headersToSign:function(){var e=[];return n.util.each(this.request.headers,function(t){("Host"===t||"Content-Encoding"===t||t.match(/^X-Amz/i))&&e.push(t)}),e},signature:function(e){return n.util.crypto.hmac(e.secretAccessKey,this.stringToSign(),"base64")},stringToSign:function(){var e=[];return e.push(this.request.method),e.push("/"),e.push(""),e.push(this.canonicalHeaders()),e.push(this.request.body),n.util.crypto.sha256(e.join("\n"))}}),t.exports=n.Signers.V3},{"../core":39}],112:[function(e,t,r){var n=e("../core"),i=n.util.inherit;n.Signers.V2=i(n.Signers.RequestSigner,{addAuthorization:function(e,t){t||(t=n.util.date.getDate());var r=this.request;r.params.Timestamp=n.util.date.iso8601(t),r.params.SignatureVersion="2",r.params.SignatureMethod="HmacSHA256",r.params.AWSAccessKeyId=e.accessKeyId,e.sessionToken&&(r.params.SecurityToken=e.sessionToken),delete r.params.Signature,r.params.Signature=this.signature(e),r.body=n.util.queryParamsToString(r.params),r.headers["Content-Length"]=r.body.length},signature:function(e){return n.util.crypto.hmac(e.secretAccessKey,this.stringToSign(),"base64")},stringToSign:function(){var e=[];return e.push(this.request.method),e.push(this.request.endpoint.host.toLowerCase()),e.push(this.request.pathname()),e.push(n.util.queryParamsToString(this.request.params)),e.join("\n")}}),t.exports=n.Signers.V2},{"../core":39}],111:[function(e,t,r){var n=e("../core"),i=n.util.inherit;n.Signers.S3=i(n.Signers.RequestSigner,{subResources:{acl:1,accelerate:1,analytics:1,cors:1,lifecycle:1,delete:1,inventory:1,location:1,logging:1,metrics:1,notification:1,partNumber:1,policy:1,requestPayment:1,replication:1,restore:1,tagging:1,torrent:1,uploadId:1,uploads:1,versionId:1,versioning:1,versions:1,website:1},responseHeaders:{"response-content-type":1,"response-content-language":1,"response-expires":1,"response-cache-control":1,"response-content-disposition":1,"response-content-encoding":1},addAuthorization:function(e,t){this.request.headers["presigned-expires"]||(this.request.headers["X-Amz-Date"]=n.util.date.rfc822(t)),e.sessionToken&&(this.request.headers["x-amz-security-token"]=e.sessionToken);var r=this.sign(e.secretAccessKey,this.stringToSign()),i="AWS "+e.accessKeyId+":"+r;this.request.headers.Authorization=i},stringToSign:function(){var e=this.request,t=[];t.push(e.method),t.push(e.headers["Content-MD5"]||""),t.push(e.headers["Content-Type"]||""),t.push(e.headers["presigned-expires"]||"");var r=this.canonicalizedAmzHeaders();return r&&t.push(r),t.push(this.canonicalizedResource()),t.join("\n")},canonicalizedAmzHeaders:function(){var e=[];n.util.each(this.request.headers,function(t){t.match(/^x-amz-/i)&&e.push(t)}),e.sort(function(e,t){return e.toLowerCase()604800){throw o.util.error(new Error,{code:"InvalidExpiryTime",message:"Presigning does not support expiry time greater than a week with SigV4 signing.",retryable:!1})}e.httpRequest.headers[a]=t}else{if(r!==o.Signers.S3)throw o.util.error(new Error,{message:"Presigning only supports S3 or SigV4 signing.",code:"UnsupportedSigner",retryable:!1});var n=e.service?e.service.getSkewCorrectedDate():o.util.date.getDate();e.httpRequest.headers[a]=parseInt(o.util.date.unixTimestamp(n)+t,10).toString()}}function i(e){var t=e.httpRequest.endpoint,r=o.util.urlParse(e.httpRequest.path),n={};r.search&&(n=o.util.queryStringParse(r.search.substr(1)));var i=e.httpRequest.headers.Authorization.split(" ");if("AWS"===i[0])i=i[1].split(":"),n.Signature=i.pop(),n.AWSAccessKeyId=i.join(":"),o.util.each(e.httpRequest.headers,function(e,t){e===a&&(e="Expires"),0===e.indexOf("x-amz-meta-")&&(delete n[e],e=e.toLowerCase()),n[e]=t}),delete e.httpRequest.headers[a],delete n.Authorization,delete n.Host;else if("AWS4-HMAC-SHA256"===i[0]){i.shift();var s=i.join(" "),u=s.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1];n["X-Amz-Signature"]=u,delete n.Expires}t.pathname=r.pathname,t.search=o.util.queryParamsToString(n)}var o=e("../core"),s=o.util.inherit,a="presigned-expires";o.Signers.Presign=s({sign:function(e,t,r){if(e.httpRequest.headers[a]=t||3600,e.on("build",n),e.on("sign",i),e.removeListener("afterBuild",o.EventListeners.Core.SET_CONTENT_LENGTH),e.removeListener("afterBuild",o.EventListeners.Core.COMPUTE_SHA256),e.emit("beforePresign",[e]),!r){if(e.build(),e.response.error)throw e.response.error;return o.util.urlFormat(e.httpRequest.endpoint)}e.build(function(){this.response.error?r(this.response.error):r(null,o.util.urlFormat(e.httpRequest.endpoint))})}}),t.exports=o.Signers.Presign},{"../core":39}],89:[function(e,t,r){(function(r){(function(){var n=e("./core"),i=e("./model/api"),o=e("./region_config"),s=n.util.inherit,a=0;n.Service=s({constructor:function(e){if(!this.loadServiceClass)throw n.util.error(new Error,"Service must be constructed with `new' operator");var t=this.loadServiceClass(e||{});if(t){var r=n.util.copy(e),i=new t(e);return Object.defineProperty(i,"_originalConfig",{get:function(){return r},enumerable:!1,configurable:!0}),i._clientId=++a,i}this.initialize(e)},initialize:function(e){var t=n.config[this.serviceIdentifier];if(this.config=new n.Config(n.config),t&&this.config.update(t,!0),e&&this.config.update(e,!0),this.validateService(),this.config.endpoint||o.configureEndpoint(this),this.config.endpoint=this.endpointFromTemplate(this.config.endpoint),this.setEndpoint(this.config.endpoint),n.SequentialExecutor.call(this),n.Service.addDefaultMonitoringListeners(this),(this.config.clientSideMonitoring||n.Service._clientSideMonitoring)&&this.publisher){var i=this.publisher;this.addNamedListener("PUBLISH_API_CALL","apiCall",function(e){r.nextTick(function(){i.eventHandler(e)})}),this.addNamedListener("PUBLISH_API_ATTEMPT","apiCallAttempt",function(e){r.nextTick(function(){i.eventHandler(e)})})}},validateService:function(){},loadServiceClass:function(e){var t=e;if(n.util.isEmpty(this.api)){if(t.apiConfig)return n.Service.defineServiceApi(this.constructor,t.apiConfig);if(this.constructor.services){t=new n.Config(n.config),t.update(e,!0);var r=t.apiVersions[this.constructor.serviceIdentifier];return r=r||t.apiVersion,this.getLatestServiceClass(r)}return null}return null},getLatestServiceClass:function(e){return e=this.getLatestServiceVersion(e),null===this.constructor.services[e]&&n.Service.defineServiceApi(this.constructor,e),this.constructor.services[e]},getLatestServiceVersion:function(e){if(!this.constructor.services||0===this.constructor.services.length)throw new Error("No services defined on "+this.constructor.serviceIdentifier);if(e?n.util.isType(e,Date)&&(e=n.util.date.iso8601(e).split("T")[0]):e="latest",Object.hasOwnProperty(this.constructor.services,e))return e;for(var t=Object.keys(this.constructor.services).sort(),r=null,i=t.length-1;i>=0;i--)if("*"!==t[i][t[i].length-1]&&(r=t[i]),t[i].substr(0,10)<=e)return r;throw new Error("Could not find "+this.constructor.serviceIdentifier+" API to satisfy version constraint `"+e+"'")},api:{},defaultRetryCount:3,customizeRequests:function(e){if(e){if("function"!=typeof e)throw new Error("Invalid callback type '"+typeof e+"' provided in customizeRequests");this.customRequestHandler=e}else this.customRequestHandler=null},makeRequest:function(e,t,r){if("function"==typeof t&&(r=t,t=null),t=t||{},this.config.params){var i=this.api.operations[e];i&&(t=n.util.copy(t),n.util.each(this.config.params,function(e,r){i.input.members[e]&&(void 0!==t[e]&&null!==t[e]||(t[e]=r))}))}var o=new n.Request(this,e,t);return this.addAllRequestListeners(o),this.attachMonitoringEmitter(o),r&&o.send(r),o},makeUnauthenticatedRequest:function(e,t,r){"function"==typeof t&&(r=t,t={});var n=this.makeRequest(e,t).toUnauthenticated();return r?n.send(r):n},waitFor:function(e,t,r){return new n.ResourceWaiter(this,e).wait(t,r)},addAllRequestListeners:function(e){for(var t=[n.events,n.EventListeners.Core,this.serviceInterface(),n.EventListeners.CorePost],r=0;r299?(i.code&&(r.FinalAwsException=i.code),i.message&&(r.FinalAwsExceptionMessage=i.message)):((i.code||i.name)&&(r.FinalSdkException=i.code||i.name),i.message&&(r.FinalSdkExceptionMessage=i.message))}return r},apiAttemptEvent:function(e){var t=e.service.api.operations[e.operation],r={Type:"ApiCallAttempt",Api:t?t.name:e.operation,Version:1,Service:e.service.api.serviceId||e.service.api.endpointPrefix,Fqdn:e.httpRequest.endpoint.hostname,UserAgent:e.httpRequest.getUserAgent()},n=e.response;return n.httpResponse.statusCode&&(r.HttpStatusCode=n.httpResponse.statusCode),!e._unAuthenticated&&e.service.config.credentials&&e.service.config.credentials.accessKeyId&&(r.AccessKey=e.service.config.credentials.accessKeyId),n.httpResponse.headers?(e.httpRequest.headers["x-amz-security-token"]&&(r.SessionToken=e.httpRequest.headers["x-amz-security-token"]),n.httpResponse.headers["x-amzn-requestid"]&&(r.XAmznRequestId=n.httpResponse.headers["x-amzn-requestid"]),n.httpResponse.headers["x-amz-request-id"]&&(r.XAmzRequestId=n.httpResponse.headers["x-amz-request-id"]),n.httpResponse.headers["x-amz-id-2"]&&(r.XAmzId2=n.httpResponse.headers["x-amz-id-2"]),r):r},attemptFailEvent:function(e){var t=this.apiAttemptEvent(e),r=e.response,n=r.error;return r.httpResponse.statusCode>299?(n.code&&(t.AwsException=n.code),n.message&&(t.AwsExceptionMessage=n.message)):((n.code||n.name)&&(t.SdkException=n.code||n.name),n.message&&(t.SdkExceptionMessage=n.message)),t},attachMonitoringEmitter:function(e){var t,r,i,o,s,a,u=0,c=this;e.on("validate",function(){o=n.util.realClock.now(),a=Date.now()},!0),e.on("sign",function(){r=n.util.realClock.now(),t=Date.now(),s=e.httpRequest.region,u++},!0),e.on("validateResponse",function(){i=Math.round(n.util.realClock.now()-r)}),e.addNamedListener("API_CALL_ATTEMPT","success",function(){var r=c.apiAttemptEvent(e);r.Timestamp=t,r.AttemptLatency=i>=0?i:0,r.Region=s,c.emit("apiCallAttempt",[r])}),e.addNamedListener("API_CALL_ATTEMPT_RETRY","retry",function(){ +var o=c.attemptFailEvent(e);o.Timestamp=t,i=i||Math.round(n.util.realClock.now()-r),o.AttemptLatency=i>=0?i:0,o.Region=s,c.emit("apiCallAttempt",[o])}),e.addNamedListener("API_CALL","complete",function(){var t=c.apiCallEvent(e);if(t.AttemptCount=u,!(t.AttemptCount<=0)){t.Timestamp=a;var r=Math.round(n.util.realClock.now()-o);t.Latency=r>=0?r:0;var i=e.response;i.error&&i.error.retryable&&"number"==typeof i.retryCount&&"number"==typeof i.maxRetries&&i.retryCount>=i.maxRetries&&(t.MaxRetriesExceeded=1),c.emit("apiCall",[t])}})},setupRequestListeners:function(e){},getSigningName:function(){return this.api.signingName||this.api.endpointPrefix},getSignerClass:function(e){var t,r=null,i="";if(e){r=(e.service.api.operations||{})[e.operation]||null,i=r?r.authtype:""}return t=this.config.signatureVersion?this.config.signatureVersion:"v4"===i||"v4-unsigned-body"===i?"v4":this.api.signatureVersion,n.Signers.RequestSigner.getVersion(t)},serviceInterface:function(){switch(this.api.protocol){case"ec2":case"query":return n.EventListeners.Query;case"json":return n.EventListeners.Json;case"rest-json":return n.EventListeners.RestJson;case"rest-xml":return n.EventListeners.RestXml}if(this.api.protocol)throw new Error("Invalid service `protocol' "+this.api.protocol+" in API config")},successfulResponse:function(e){return e.httpResponse.statusCode<300},numRetries:function(){return void 0!==this.config.maxRetries?this.config.maxRetries:this.defaultRetryCount},retryDelays:function(e,t){return n.util.calculateRetryDelay(e,this.config.retryDelayOptions,t)},retryableError:function(e){return!!this.timeoutError(e)||(!!this.networkingError(e)||(!!this.expiredCredentialsError(e)||(!!this.throttledError(e)||e.statusCode>=500)))},networkingError:function(e){return"NetworkingError"===e.code},timeoutError:function(e){return"TimeoutError"===e.code},expiredCredentialsError:function(e){return"ExpiredTokenException"===e.code},clockSkewError:function(e){switch(e.code){case"RequestTimeTooSkewed":case"RequestExpired":case"InvalidSignatureException":case"SignatureDoesNotMatch":case"AuthFailure":case"RequestInTheFuture":return!0;default:return!1}},getSkewCorrectedDate:function(){return new Date(Date.now()+this.config.systemClockOffset)},applyClockOffset:function(e){e&&(this.config.systemClockOffset=e-Date.now())},isClockSkewed:function(e){if(e)return Math.abs(this.getSkewCorrectedDate().getTime()-e)>=3e5},throttledError:function(e){if(429===e.statusCode)return!0;switch(e.code){case"ProvisionedThroughputExceededException":case"Throttling":case"ThrottlingException":case"RequestLimitExceeded":case"RequestThrottled":case"RequestThrottledException":case"TooManyRequestsException":case"TransactionInProgressException":case"EC2ThrottledException":return!0;default:return!1}},endpointFromTemplate:function(e){if("string"!=typeof e)return e;var t=e;return t=t.replace(/\{service\}/g,this.api.endpointPrefix),t=t.replace(/\{region\}/g,this.config.region),t=t.replace(/\{scheme\}/g,this.config.sslEnabled?"https":"http")},setEndpoint:function(e){this.endpoint=new n.Endpoint(e,this.config)},paginationConfig:function(e,t){var r=this.api.operations[e].paginator;if(!r){if(t){var i=new Error;throw n.util.error(i,"No pagination configuration for "+e)}return null}return r}}),n.util.update(n.Service,{defineMethods:function(e){n.util.each(e.prototype.api.operations,function(t){if(!e.prototype[t]){"none"===e.prototype.api.operations[t].authtype?e.prototype[t]=function(e,r){return this.makeUnauthenticatedRequest(t,e,r)}:e.prototype[t]=function(e,r){return this.makeRequest(t,e,r)}}})},defineService:function(e,t,r){n.Service._serviceMap[e]=!0,Array.isArray(t)||(r=t,t=[]);var i=s(n.Service,r||{});if("string"==typeof e){n.Service.addVersions(i,t);var o=i.serviceIdentifier||e;i.serviceIdentifier=o}else i.prototype.api=e,n.Service.defineMethods(i);if(n.SequentialExecutor.call(this.prototype),!this.prototype.publisher&&n.util.clientSideMonitoring){var a=n.util.clientSideMonitoring.Publisher,u=n.util.clientSideMonitoring.configProvider,c=u();this.prototype.publisher=new a(c),c.enabled&&(n.Service._clientSideMonitoring=!0)}return n.SequentialExecutor.call(i.prototype),n.Service.addDefaultMonitoringListeners(i.prototype),i},addVersions:function(e,t){Array.isArray(t)||(t=[t]),e.services=e.services||{};for(var r=0;r=0){u=!0;var c=0}var l=function(){u&&c!==a?i.emit("error",n.util.error(new Error("Stream content length mismatch. Received "+c+" of "+a+" bytes."),{code:"StreamContentLengthMismatch"})):2===n.HttpClient.streamsApiVersion?i.end():i.emit("end")},h=s.httpResponse.createUnbufferedStream();if(2===n.HttpClient.streamsApiVersion)if(u){var p=new e.PassThrough;p._write=function(t){return t&&t.length&&(c+=t.length),e.PassThrough.prototype._write.apply(this,arguments)},p.on("end",l),i.on("error",function(e){u=!1,h.unpipe(p),p.emit("end"),p.end()}),h.pipe(p).pipe(i,{end:!1})}else h.pipe(i);else u&&h.on("data",function(e){e&&e.length&&(c+=e.length)}),h.on("data",function(e){i.emit("data",e)}),h.on("end",l);h.on("error",function(e){u=!1,i.emit("error",e)})}}),i},emitEvent:function(e,t,r){"function"==typeof t&&(r=t,t=null),r||(r=function(){}),t||(t=this.eventParameters(e,this.response)),n.SequentialExecutor.prototype.emit.call(this,e,t,function(e){e&&(this.response.error=e),r.call(this,e)})},eventParameters:function(e){switch(e){case"restart":case"validate":case"sign":case"build":case"afterValidate":case"afterBuild":return[this];case"error":return[this.response.error,this.response];default:return[this.response]}},presign:function(e,t){return t||"function"!=typeof e||(t=e,e=null),(new n.Signers.Presign).sign(this.toGet(),e,t)},isPresigned:function(){return Object.prototype.hasOwnProperty.call(this.httpRequest.headers,"presigned-expires")},toUnauthenticated:function(){return this._unAuthenticated=!0,this.removeListener("validate",n.EventListeners.Core.VALIDATE_CREDENTIALS),this.removeListener("sign",n.EventListeners.Core.SIGN),this},toGet:function(){return"query"!==this.service.api.protocol&&"ec2"!==this.service.api.protocol||(this.removeListener("build",this.buildAsGet),this.addListener("build",this.buildAsGet)),this},buildAsGet:function(e){e.httpRequest.method="GET",e.httpRequest.path=e.service.endpoint.path+"?"+e.httpRequest.body,e.httpRequest.body="",delete e.httpRequest.headers["Content-Length"],delete e.httpRequest.headers["Content-Type"]},haltHandlersOnError:function(){this._haltHandlersOnError=!0}}),n.Request.addPromisesToClass=function(e){this.prototype.promise=function(){var t=this;return this.httpRequest.appendToUserAgent("promise"),new e(function(e,r){t.on("complete",function(t){t.error?r(t.error):e(Object.defineProperty(t.data||{},"$response",{value:t}))}),t.runTo()})}},n.Request.deletePromisesFromClass=function(){delete this.prototype.promise},n.util.addPromises(n.Request),n.util.mixin(n.Request,n.SequentialExecutor)}).call(this)}).call(this,e("_process"))},{"./core":39,"./state_machine":117,_process:8,jmespath:7}],117:[function(e,t,r){function n(e,t){this.currentState=t||null,this.states=e||{}}n.prototype.runTo=function(e,t,r,n){"function"==typeof e&&(n=r,r=t,t=e,e=null);var i=this,o=i.states[i.currentState];o.fn.call(r||i,n,function(n){if(n){if(!o.fail)return t?t.call(r,n):null;i.currentState=o.fail}else{if(!o.accept)return t?t.call(r):null;i.currentState=o.accept}if(i.currentState===e)return t?t.call(r,n):null;i.runTo(e,t,r,n)})},n.prototype.addState=function(e,t,r,n){return"function"==typeof t?(n=t,t=null,r=null):"function"==typeof r&&(n=r,r=null),this.currentState||(this.currentState=e),this.states[e]={accept:t,fail:r,fn:n},this},t.exports=n},{}],71:[function(e,t,r){var n=e("./core");n.ParamValidator=n.util.inherit({constructor:function(e){!0!==e&&void 0!==e||(e={min:!0}),this.validation=e},validate:function(e,t,r){if(this.errors=[],this.validateMember(e,t||{},r||"params"),this.errors.length>1){var i=this.errors.join("\n* ");throw i="There were "+this.errors.length+" validation errors:\n* "+i,n.util.error(new Error(i),{code:"MultipleValidationErrors",errors:this.errors})}if(1===this.errors.length)throw this.errors[0];return!0},fail:function(e,t){this.errors.push(n.util.error(new Error(t),{code:e}))},validateStructure:function(e,t,r){this.validateType(t,r,["object"],"structure");for(var n,i=0;e.required&&i= 1, but found "'+t+'" for '+r)},validatePattern:function(e,t,r){this.validation.pattern&&void 0!==e.pattern&&(new RegExp(e.pattern).test(t)||this.fail("PatternMatchError",'Provided value "'+t+'" does not match regex pattern /'+e.pattern+"/ for "+r))},validateRange:function(e,t,r,n){this.validation.min&&void 0!==e.min&&t= "+e.min+", but found "+t+" for "+r),this.validation.max&&void 0!==e.max&&t>e.max&&this.fail("MaxRangeError","Expected "+n+" <= "+e.max+", but found "+t+" for "+r)},validateEnum:function(e,t,r){this.validation.enum&&void 0!==e.enum&&-1===e.enum.indexOf(t)&&this.fail("EnumError","Found string value of "+t+", but expected "+e.enum.join("|")+" for "+r)},validateType:function(e,t,r,i){if(null===e||void 0===e)return!1;for(var o=!1,s=0;s=0)return e.httpRequest.headers["X-Amz-Content-Sha256"]="UNSIGNED-PAYLOAD",t();i.util.computeSha256(o,function(r,n){r?t(r):(e.httpRequest.headers["X-Amz-Content-Sha256"]=n,t())})}else t()}}),e("SET_CONTENT_LENGTH","afterBuild",function(e){var t=n(e),r=i.util.getRequestPayloadShape(e);if(void 0===e.httpRequest.headers["Content-Length"])try{var o=i.util.string.byteLength(e.httpRequest.body);e.httpRequest.headers["Content-Length"]=o}catch(n){if(r&&r.isStreaming){if(r.requiresLength)throw n;if(t.indexOf("unsigned-body")>=0)return void(e.httpRequest.headers["Transfer-Encoding"]="chunked");throw n}throw n}}),e("SET_HTTP_HOST","afterBuild",function(e){e.httpRequest.headers.Host=e.httpRequest.endpoint.host}),e("RESTART","restart",function(){var e=this.response.error;e&&e.retryable&&(this.httpRequest=new i.HttpRequest(this.service.endpoint,this.service.region),this.response.retryCount=600?this.emit("sign",[this],function(e){e?t(e):s()}):s()}),e("HTTP_HEADERS","httpHeaders",function(e,t,r,n){r.httpResponse.statusCode=e,r.httpResponse.statusMessage=n,r.httpResponse.headers=t,r.httpResponse.body=i.util.buffer.toBuffer(""),r.httpResponse.buffers=[],r.httpResponse.numBytes=0;var o=t.date||t.Date,s=r.request.service;if(o){var a=Date.parse(o);s.config.correctClockSkew&&s.isClockSkewed(a)&&s.applyClockOffset(a)}}),e("HTTP_DATA","httpData",function(e,t){if(e){if(i.util.isNode()){t.httpResponse.numBytes+=e.length;var r=t.httpResponse.headers["content-length"],n={loaded:t.httpResponse.numBytes,total:r};t.request.emit("httpDownloadProgress",[n,t])}t.httpResponse.buffers.push(i.util.buffer.toBuffer(e))}}),e("HTTP_DONE","httpDone",function(e){if(e.httpResponse.buffers&&e.httpResponse.buffers.length>0){var t=i.util.buffer.concat(e.httpResponse.buffers);e.httpResponse.body=t}delete e.httpResponse.numBytes,delete e.httpResponse.buffers}),e("FINALIZE_ERROR","retry",function(e){e.httpResponse.statusCode&&(e.error.statusCode=e.httpResponse.statusCode,void 0===e.error.retryable&&(e.error.retryable=this.service.retryableError(e.error,this)))}),e("INVALIDATE_CREDENTIALS","retry",function(e){if(e.error)switch(e.error.code){case"RequestExpired":case"ExpiredTokenException":case"ExpiredToken":e.error.retryable=!0,e.request.service.config.credentials.expired=!0}}),e("EXPIRED_SIGNATURE","retry",function(e){var t=e.error;t&&"string"==typeof t.code&&"string"==typeof t.message&&t.code.match(/Signature/)&&t.message.match(/expired/)&&(e.error.retryable=!0)}),e("CLOCK_SKEWED","retry",function(e){e.error&&this.service.clockSkewError(e.error)&&this.service.config.correctClockSkew&&(e.error.retryable=!0)}),e("REDIRECT","retry",function(e){e.error&&e.error.statusCode>=300&&e.error.statusCode<400&&e.httpResponse.headers.location&&(this.httpRequest.endpoint=new i.Endpoint(e.httpResponse.headers.location),this.httpRequest.headers.Host=this.httpRequest.endpoint.host,e.error.redirect=!0,e.error.retryable=!0)}),e("RETRY_CHECK","retry",function(e){e.error&&(e.error.redirect&&e.redirectCount=0?(e.error=null,setTimeout(t,r)):t()})}),CorePost:(new o).addNamedListeners(function(e){e("EXTRACT_REQUEST_ID","extractData",i.util.extractRequestId),e("EXTRACT_REQUEST_ID","extractError",i.util.extractRequestId),e("ENOTFOUND_ERROR","httpError",function(e){if("NetworkingError"===e.code&&function(e){return"ENOTFOUND"===e.errno||"number"==typeof e.errno&&"function"==typeof i.util.getSystemErrorName&&["EAI_NONAME","EAI_NODATA"].indexOf(i.util.getSystemErrorName(e.errno)>=0)}(e)){var t="Inaccessible host: `"+e.hostname+"'. This service may not be available in the `"+e.region+"' region.";this.response.error=i.util.error(new Error(t),{code:"UnknownEndpoint",region:e.region,hostname:e.hostname,retryable:!0,originalError:e})}})}),Logger:(new o).addNamedListeners(function(t){t("LOG_REQUEST","complete",function(t){function r(e,t){if(!t)return t;if(e.isSensitive)return"***SensitiveInformation***";switch(e.type){case"structure":var n={};return i.util.each(t,function(t,i){Object.prototype.hasOwnProperty.call(e.members,t)?n[t]=r(e.members[t],i):n[t]=i}),n;case"list":var o=[];return i.util.arrayEach(t,function(t,n){o.push(r(e.member,t))}),o;case"map":var s={};return i.util.each(t,function(t,n){s[t]=r(e.value,n)}),s;default:return t}}var n=t.request,o=n.service.config.logger;if(o){var s=function(){var s=t.request.service.getSkewCorrectedDate().getTime(),a=(s-n.startTime.getTime())/1e3,u=!!o.isTTY,c=t.httpResponse.statusCode,l=n.params;if(n.service.api.operations&&n.service.api.operations[n.operation]&&n.service.api.operations[n.operation].input){l=r(n.service.api.operations[n.operation].input,n.params)}var h=e("util").inspect(l,!0,null),p="";return u&&(p+=""),p+="[AWS "+n.service.serviceIdentifier+" "+c,p+=" "+a.toString()+"s "+t.retryCount+" retries]",u&&(p+=""),p+=" "+i.util.string.lowerFirst(n.operation),p+="("+h+")",u&&(p+=""),p}();"function"==typeof o.log?o.log(s):"function"==typeof o.write&&o.write(s+"\n")}})}),Json:(new o).addNamedListeners(function(t){var r=e("./protocol/json");t("BUILD","build",r.buildRequest),t("EXTRACT_DATA","extractData",r.extractData),t("EXTRACT_ERROR","extractError",r.extractError)}),Rest:(new o).addNamedListeners(function(t){var r=e("./protocol/rest");t("BUILD","build",r.buildRequest),t("EXTRACT_DATA","extractData",r.extractData),t("EXTRACT_ERROR","extractError",r.extractError)}),RestJson:(new o).addNamedListeners(function(t){var r=e("./protocol/rest_json");t("BUILD","build",r.buildRequest),t("EXTRACT_DATA","extractData",r.extractData),t("EXTRACT_ERROR","extractError",r.extractError)}),RestXml:(new o).addNamedListeners(function(t){var r=e("./protocol/rest_xml");t("BUILD","build",r.buildRequest),t("EXTRACT_DATA","extractData",r.extractData),t("EXTRACT_ERROR","extractError",r.extractError)}),Query:(new o).addNamedListeners(function(t){var r=e("./protocol/query");t("BUILD","build",r.buildRequest),t("EXTRACT_DATA","extractData",r.extractData),t("EXTRACT_ERROR","extractError",r.extractError)})}},{"./core":39,"./discover_endpoint":47,"./protocol/json":74,"./protocol/query":75,"./protocol/rest":76,"./protocol/rest_json":77,"./protocol/rest_xml":78,"./sequential_executor":88,util:20}],88:[function(e,t,r){var n=e("./core");n.SequentialExecutor=n.util.inherit({constructor:function(){this._events={}},listeners:function(e){return this._events[e]?this._events[e].slice(0):[]},on:function(e,t,r){return this._events[e]?r?this._events[e].unshift(t):this._events[e].push(t):this._events[e]=[t],this},onAsync:function(e,t,r){return t._isAsync=!0,this.on(e,t,r)},removeListener:function(e,t){var r=this._events[e];if(r){for(var n=r.length,i=-1,o=0;o-1&&r.splice(i,1)}return this},removeAllListeners:function(e){return e?delete this._events[e]:this._events={},this},emit:function(e,t,r){r||(r=function(){});var n=this.listeners(e),i=n.length;return this.callListeners(n,t,r),i>0},callListeners:function(e,t,r,i){function o(i){if(i&&(a=n.util.error(a||new Error,i),s._haltHandlersOnError))return r.call(s,a);s.callListeners(e,t,r,a)}for(var s=this,a=i||null;e.length>0;){var u=e.shift();if(u._isAsync)return void u.apply(s,t.concat([o]));try{u.apply(s,t)}catch(e){a=n.util.error(a||new Error,e)}if(a&&s._haltHandlersOnError)return void r.call(s,a)}r.call(s,a)},addListeners:function(e){var t=this;return e._events&&(e=e._events),n.util.each(e,function(e,r){"function"==typeof r&&(r=[r]),n.util.arrayEach(r,function(r){t.on(e,r)})}),t},addNamedListener:function(e,t,r,n){return this[e]=r,this.addListener(t,r,n),this},addNamedAsyncListener:function(e,t,r,n){return r._isAsync=!0,this.addNamedListener(e,t,r,n)},addNamedListeners:function(e){var t=this;return e(function(){t.addNamedListener.apply(t,arguments)},function(){t.addNamedAsyncListener.apply(t,arguments)}),this}}),n.SequentialExecutor.prototype.addListener=n.SequentialExecutor.prototype.on,t.exports=n.SequentialExecutor},{"./core":39}],78:[function(e,t,r){function n(e){var t=e.service.api.operations[e.operation].input,r=new a.XML.Builder,n=e.params,i=t.payload;if(i){var o=t.members[i];if(void 0===(n=n[i]))return;if("structure"===o.type){var s=o.name;e.httpRequest.body=r.toXML(n,o,s,!0)}else e.httpRequest.body=n}else e.httpRequest.body=r.toXML(n,t,t.name||t.shape||u.string.upperFirst(e.operation)+"Request")}function i(e){c.buildRequest(e),["GET","HEAD"].indexOf(e.httpRequest.method)<0&&n(e)}function o(e){c.extractError(e);var t;try{t=(new a.XML.Parser).parse(e.httpResponse.body.toString())}catch(r){t={Code:e.httpResponse.statusCode,Message:e.httpResponse.statusMessage}}t.Errors&&(t=t.Errors),t.Error&&(t=t.Error),t.Code?e.error=u.error(new Error,{code:t.Code,message:t.Message}):e.error=u.error(new Error,{code:e.httpResponse.statusCode,message:null})}function s(e){c.extractData(e);var t,r=e.request,n=e.httpResponse.body,i=r.service.api.operations[r.operation],o=i.output,s=(i.hasEventOutput,o.payload);if(s){var l=o.members[s];l.isEventStream?(t=new a.XML.Parser,e.data[s]=u.createEventStream(2===a.HttpClient.streamsApiVersion?e.httpResponse.stream:e.httpResponse.body,t,l)):"structure"===l.type?(t=new a.XML.Parser,e.data[s]=t.parse(n.toString(),l)):"binary"===l.type||l.isStreaming?e.data[s]=n:e.data[s]=l.toType(n)}else if(n.length>0){t=new a.XML.Parser;var h=t.parse(n.toString(),o);u.update(e.data,h)}}var a=e("../core"),u=e("../util"),c=e("./rest");t.exports={buildRequest:i,extractError:o,extractData:s}},{"../core":39,"../util":118,"./rest":76}],77:[function(e,t,r){function n(e){var t=new h,r=e.service.api.operations[e.operation].input;if(r.payload){var n={},o=r.members[r.payload];if(void 0===(n=e.params[r.payload]))return;"structure"===o.type?(e.httpRequest.body=t.build(n,o),i(e)):(e.httpRequest.body=n,("binary"===o.type||o.isStreaming)&&i(e,!0))}else{var s=t.build(e.params,r);"{}"===s&&"GET"===e.httpRequest.method||(e.httpRequest.body=s),i(e)}}function i(e,t){var r=e.service.api.operations[e.operation];r.input;if(!e.httpRequest.headers["Content-Type"]){var n=t?"binary/octet-stream":"application/json";e.httpRequest.headers["Content-Type"]=n}}function o(e){c.buildRequest(e),["HEAD","DELETE"].indexOf(e.httpRequest.method)<0&&n(e)}function s(e){l.extractError(e)}function a(e){c.extractData(e);var t,r=e.request,n=r.service.api.operations[r.operation],i=r.service.api.operations[r.operation].output||{};n.hasEventOutput;if(i.payload){var o=i.members[i.payload],s=e.httpResponse.body;if(o.isEventStream)t=new p,e.data[payload]=u.createEventStream(2===AWS.HttpClient.streamsApiVersion?e.httpResponse.stream:s,t,o);else if("structure"===o.type||"list"===o.type){var t=new p;e.data[i.payload]=t.parse(s,o)}else"binary"===o.type||o.isStreaming?e.data[i.payload]=s:e.data[i.payload]=o.toType(s)}else{var a=e.data;l.extractData(e),e.data=u.merge(a,e.data)}}var u=e("../util"),c=e("./rest"),l=e("./json"),h=e("../json/builder"),p=e("../json/parser");t.exports={buildRequest:o,extractError:s,extractData:a}},{"../json/builder":63,"../json/parser":64,"../util":118,"./json":74,"./rest":76}],76:[function(e,t,r){function n(e){e.httpRequest.method=e.service.api.operations[e.operation].httpMethod}function i(e,t,r,n){var i=[e,t].join("/");i=i.replace(/\/+/g,"/");var o={},s=!1;if(l.each(r.members,function(e,t){var r=n[e];if(null!==r&&void 0!==r)if("uri"===t.location){var a=new RegExp("\\{"+t.name+"(\\+)?\\}");i=i.replace(a,function(e,t){return(t?l.uriEscapePath:l.uriEscape)(String(r))})}else"querystring"===t.location&&(s=!0,"list"===t.type?o[t.name]=r.map(function(e){return l.uriEscape(t.member.toWireFormat(e).toString())}):"map"===t.type?l.each(r,function(e,t){Array.isArray(t)?o[e]=t.map(function(e){return l.uriEscape(String(e))}):o[e]=l.uriEscape(String(t))}):o[t.name]=l.uriEscape(t.toWireFormat(r).toString()))}),s){i+=i.indexOf("?")>=0?"&":"?";var a=[];l.arrayEach(Object.keys(o).sort(),function(e){Array.isArray(o[e])||(o[e]=[o[e]]);for(var t=0;t-1?t||"":t,this.isJsonValue?JSON.parse(t):t&&"function"==typeof t.toString?t.toString():t},this.toWireFormat=function(e){return this.isJsonValue?JSON.stringify(e):e}}function p(){o.apply(this,arguments),this.toType=function(e){return null===e||void 0===e?null:parseFloat(e)},this.toWireFormat=this.toType}function f(){o.apply(this,arguments),this.toType=function(e){return null===e||void 0===e?null:parseInt(e,10)},this.toWireFormat=this.toType}function d(){o.apply(this,arguments),this.toType=function(e){var t=y.base64.decode(e);if(this.isSensitive&&y.isNode()&&"function"==typeof y.Buffer.alloc){var r=y.Buffer.alloc(t.length,t);t.fill(0),t=r}return t},this.toWireFormat=y.base64.encode}function m(){d.apply(this,arguments)}function v(){o.apply(this,arguments),this.toType=function(e){return"boolean"==typeof e?e:null===e||void 0===e?null:"true"===e}}var g=e("./collection"),y=e("../util");o.normalizedTypes={character:"string",double:"float",long:"integer",short:"integer",biginteger:"integer",bigdecimal:"float",blob:"binary"},o.types={structure:a,list:u,map:c,boolean:v,timestamp:l,float:p,integer:f,string:h,base64:m,binary:d},o.resolve=function(e,t){if(e.shape){var r=t.api.shapes[e.shape];if(!r)throw new Error("Cannot find shape reference: "+e.shape);return r}return null},o.create=function(e,t,r){if(e.isShape)return e;var n=o.resolve(e,t);if(n){var i=Object.keys(e);t.documentation||(i=i.filter(function(e){return!e.match(/documentation/)}));var s=function(){n.constructor.call(this,e,t,r)};return s.prototype=n,new s}e.type||(e.members?e.type="structure":e.member?e.type="list":e.key?e.type="map":e.type="string");var a=e.type;if(o.normalizedTypes[e.type]&&(e.type=o.normalizedTypes[e.type]),o.types[e.type])return new o.types[e.type](e,t,r);throw new Error("Unrecognized shape type: "+a)},o.shapes={StructureShape:a,ListShape:u,MapShape:c,StringShape:h,BooleanShape:v,Base64Shape:m},t.exports=o},{"../util":118,"./collection":66}],66:[function(e,t,r){function n(e,t,r,n){o(this,n(e),function(){return r(e,t)})}function i(e,t,r,i,o){i=i||String;var s=this;for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(n.call(s,a,e[a],r,i),o&&o(a,e[a]))}var o=e("../util").memoizedProperty;t.exports=i},{"../util":118}],74:[function(e,t,r){function n(e){var t=e.httpRequest,r=e.service.api,n=r.targetPrefix+"."+r.operations[e.operation].name,i=r.jsonVersion||"1.0",o=r.operations[e.operation].input,s=new a;1===i&&(i="1.0"),t.body=s.build(e.params||{},o),t.headers["Content-Type"]="application/x-amz-json-"+i,t.headers["X-Amz-Target"]=n,c(e)}function i(e){var t={},r=e.httpResponse;if(t.code=r.headers["x-amzn-errortype"]||"UnknownError","string"==typeof t.code&&(t.code=t.code.split(":")[0]),r.body.length>0)try{var n=JSON.parse(r.body.toString()),i=n.__type||n.code||n.Code;i&&(t.code=i.split("#").pop()),"RequestEntityTooLarge"===t.code?t.message="Request body must be less than 1 MB":t.message=n.message||n.Message||null}catch(n){t.statusCode=r.statusCode,t.message=r.statusMessage}else t.statusCode=r.statusCode,t.message=r.statusCode.toString();e.error=s.error(new Error,t)}function o(e){var t=e.httpResponse.body.toString()||"{}";if(!1===e.request.service.config.convertResponseTypes)e.data=JSON.parse(t);else{var r=e.request.service.api.operations[e.request.operation],n=r.output||{},i=new u;e.data=i.parse(t,n)}}var s=e("../util"),a=e("../json/builder"),u=e("../json/parser"),c=e("./helpers").populateHostPrefix;t.exports={buildRequest:n,extractError:i,extractData:o}},{"../json/builder":63,"../json/parser":64,"../util":118,"./helpers":73}],73:[function(e,t,r){function n(e){if(!e.service.config.hostPrefixEnabled)return e;var t=e.service.api.operations[e.operation];if(i(e))return e;if(t.endpoint&&t.endpoint.hostPrefix){var r=t.endpoint.hostPrefix,n=o(r,e.params,t.input);s(e.httpRequest.endpoint,n),a(e.httpRequest.endpoint.hostname)}return e}function i(e){var t=e.service.api,r=t.operations[e.operation],n=t.endpointOperation&&t.endpointOperation===u.string.lowerFirst(r.name);return"NULL"!==r.endpointDiscoveryRequired||!0===n}function o(e,t,r){return u.each(r.members,function(r,n){if(!0===n.hostLabel){if("string"!=typeof t[r]||""===t[r])throw u.error(new Error,{message:"Parameter "+r+" should be a non-empty string.",code:"InvalidParameter"});var i=new RegExp("\\{"+r+"\\}","g");e=e.replace(i,t[r])}}),e}function s(e,t){e.host&&(e.host=t+e.host),e.hostname&&(e.hostname=t+e.hostname)}function a(e){var t=e.split("."),r=/^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9]$/;u.arrayEach(t,function(e){if(!e.length||e.length<1||e.length>63)throw u.error(new Error,{code:"ValidationError",message:"Hostname label length should be between 1 to 63 characters, inclusive."});if(!r.test(e))throw c.util.error(new Error,{code:"ValidationError",message:e+" is not hostname compatible."})})}var u=e("../util"),c=e("../core");t.exports={populateHostPrefix:n}},{"../core":39,"../util":118}],64:[function(e,t,r){function n(){}function i(e,t){if(t&&void 0!==e)switch(t.type){case"structure":return o(e,t);case"map":return a(e,t);case"list":return s(e,t);default:return u(e,t)}}function o(e,t){if(null!=e){var r={},n=t.members;return c.each(n,function(t,n){var o=n.isLocationName?n.name:t;if(Object.prototype.hasOwnProperty.call(e,o)){var s=e[o],a=i(s,n);void 0!==a&&(r[t]=a)}}),r}}function s(e,t){if(null!=e){var r=[];return c.arrayEach(e,function(e){var n=i(e,t.member);void 0===n?r.push(null):r.push(n)}),r}}function a(e,t){if(null!=e){var r={};return c.each(e,function(e,n){var o=i(n,t.value);r[e]=void 0===o?null:o}),r}}function u(e,t){return t.toType(e)}var c=e("../util");n.prototype.parse=function(e,t){return i(JSON.parse(e),t)},t.exports=n},{"../util":118}],63:[function(e,t,r){function n(){}function i(e,t){if(t&&void 0!==e&&null!==e)switch(t.type){case"structure":return o(e,t);case"map":return a(e,t);case"list":return s(e,t);default:return u(e,t)}}function o(e,t){var r={};return c.each(e,function(e,n){var o=t.members[e];if(o){if("body"!==o.location)return;var s=o.isLocationName?o.name:e,a=i(n,o);void 0!==a&&(r[s]=a)}}),r}function s(e,t){var r=[];return c.arrayEach(e,function(e){var n=i(e,t.member);void 0!==n&&r.push(n)}),r}function a(e,t){var r={};return c.each(e,function(e,n){var o=i(n,t.value);void 0!==o&&(r[e]=o)}),r}function u(e,t){return t.toWireFormat(e)}var c=e("../util");n.prototype.build=function(e,t){return JSON.stringify(i(e,t))},t.exports=n},{"../util":118}],47:[function(e,t,r){(function(r){(function(){function n(e){var t=e.service,r=t.api||{},n={};return t.config.region&&(n.region=t.config.region),r.serviceId&&(n.serviceId=r.serviceId),t.config.credentials.accessKeyId&&(n.accessKeyId=t.config.credentials.accessKeyId),n}function i(e,t,r){r&&void 0!==t&&null!==t&&"structure"===r.type&&r.required&&r.required.length>0&&m.arrayEach(r.required,function(n){var o=r.members[n];if(!0===o.endpointDiscoveryId){var s=o.isLocationName?o.name:n;e[s]=String(t[n])}else i(e,t[n],o)})}function o(e,t){var r={};return i(r,e.params,t),r}function s(e){var t=e.service,r=t.api,i=r.operations?r.operations[e.operation]:void 0,s=i?i.input:void 0,a=o(e,s),c=n(e);Object.keys(a).length>0&&(c=m.update(c,a),i&&(c.operation=i.name));var l=d.endpointCache.get(c);if(!l||1!==l.length||""!==l[0].Address)if(l&&l.length>0)e.httpRequest.updateEndpoint(l[0].Address);else{var h=t.makeRequest(r.endpointOperation,{Operation:i.name,Identifiers:a});u(h),h.removeListener("validate",d.EventListeners.Core.VALIDATE_PARAMETERS),h.removeListener("retry",d.EventListeners.Core.RETRY_CHECK),d.endpointCache.put(c,[{Address:"",CachePeriodInMinutes:1}]),h.send(function(e,t){t&&t.Endpoints?d.endpointCache.put(c,t.Endpoints):e&&d.endpointCache.put(c,[{Address:"",CachePeriodInMinutes:1}])})}}function a(e,t){var r=e.service,i=r.api,s=i.operations?i.operations[e.operation]:void 0,a=s?s.input:void 0,c=o(e,a),l=n(e);Object.keys(c).length>0&&(l=m.update(l,c),s&&(l.operation=s.name));var h=d.EndpointCache.getKeyString(l),p=d.endpointCache.get(h);if(p&&1===p.length&&""===p[0].Address)return g[h]||(g[h]=[]),void g[h].push({request:e,callback:t});if(p&&p.length>0)e.httpRequest.updateEndpoint(p[0].Address),t();else{var f=r.makeRequest(i.endpointOperation,{Operation:s.name,Identifiers:c});f.removeListener("validate",d.EventListeners.Core.VALIDATE_PARAMETERS),u(f),d.endpointCache.put(h,[{Address:"",CachePeriodInMinutes:60}]),f.send(function(r,n){if(r){if(e.response.error=m.error(r,{retryable:!1}),d.endpointCache.remove(l),g[h]){var i=g[h];m.arrayEach(i,function(e){e.request.response.error=m.error(r,{retryable:!1}),e.callback()}),delete g[h]}}else if(n&&(d.endpointCache.put(h,n.Endpoints), +e.httpRequest.updateEndpoint(n.Endpoints[0].Address),g[h])){var i=g[h];m.arrayEach(i,function(e){e.request.httpRequest.updateEndpoint(n.Endpoints[0].Address),e.callback()}),delete g[h]}t()})}}function u(e){var t=e.service.api,r=t.apiVersion;r&&!e.httpRequest.headers["x-amz-api-version"]&&(e.httpRequest.headers["x-amz-api-version"]=r)}function c(e){var t=e.error,r=e.httpResponse;if(t&&("InvalidEndpointException"===t.code||421===r.statusCode)){var i=e.request,s=i.service.api.operations||{},a=s[i.operation]?s[i.operation].input:void 0,u=o(i,a),c=n(i);Object.keys(u).length>0&&(c=m.update(c,u),s[i.operation]&&(c.operation=s[i.operation].name)),d.endpointCache.remove(c)}}function l(e){if(e._originalConfig&&e._originalConfig.endpoint&&!0===e._originalConfig.endpointDiscoveryEnabled)throw m.error(new Error,{code:"ConfigurationException",message:"Custom endpoint is supplied; endpointDiscoveryEnabled must not be true."});var t=d.config[e.serviceIdentifier]||{};return Boolean(d.config.endpoint||t.endpoint||e._originalConfig&&e._originalConfig.endpoint)}function h(e){return["false","0"].indexOf(e)>=0}function p(e){var t=e.service||{};if(void 0!==t.config.endpointDiscoveryEnabled)return t.config.endpointDiscoveryEnabled;if(!m.isBrowser()){for(var n=0;n=e.length)return t.push(null);var i=r+n;i>e.length&&(i=e.length),t.push(e.slice(r,i)),r=i},t},concat:function(e){var t,r=0,n=0,i=null;for(t=0;t>>8^t[255&(r^e.readUInt8(n))]}return(-1^r)>>>0},hmac:function(e,t,r,n){return r||(r="binary"),"buffer"===r&&(r=void 0),n||(n="sha256"),"string"==typeof t&&(t=o.buffer.toBuffer(t)),o.crypto.lib.createHmac(n,e).update(t).digest(r)},md5:function(e,t,r){return o.crypto.hash("md5",e,t,r)},sha256:function(e,t,r){return o.crypto.hash("sha256",e,t,r)},hash:function(e,t,r,n){var i=o.crypto.createHash(e);r||(r="binary"),"buffer"===r&&(r=void 0),"string"==typeof t&&(t=o.buffer.toBuffer(t));var s=o.arraySliceFn(t),a=o.Buffer.isBuffer(t);if(o.isBrowser()&&"undefined"!=typeof ArrayBuffer&&t&&t.buffer instanceof ArrayBuffer&&(a=!0),n&&"object"==typeof t&&"function"==typeof t.on&&!a)t.on("data",function(e){i.update(e)}),t.on("error",function(e){n(e)}),t.on("end",function(){n(null,i.digest(r))});else{if(!n||!s||a||"undefined"==typeof FileReader){o.isBrowser()&&"object"==typeof t&&!a&&(t=new o.Buffer(new Uint8Array(t)));var u=i.update(t).digest(r);return n&&n(null,u),u}var c=0,l=new FileReader;l.onerror=function(){n(new Error("Failed to read data."))},l.onload=function(){var e=new o.Buffer(new Uint8Array(l.result));i.update(e),c+=e.length,l._continueReading()},l._continueReading=function(){if(c>=t.size)return void n(null,i.digest(r));var e=c+524288;e>t.size&&(e=t.size),l.readAsArrayBuffer(s.call(t,c,e))},l._continueReading()}},toHex:function(e){for(var t=[],r=0;r=3e5,!1),i.config.isClockSkewed},applyClockOffset:function(e){e&&(i.config.systemClockOffset=e-(new Date).getTime())},extractRequestId:function(e){var t=e.httpResponse.headers["x-amz-request-id"]||e.httpResponse.headers["x-amzn-requestid"];!t&&e.data&&e.data.ResponseMetadata&&(t=e.data.ResponseMetadata.RequestId),t&&(e.requestId=t),e.error&&(e.error.requestId=t)},addPromises:function(e,t){var r=!1;void 0===t&&i&&i.config&&(t=i.config.getPromisesDependency()),void 0===t&&"undefined"!=typeof Promise&&(t=Promise),"function"!=typeof t&&(r=!0),Array.isArray(e)||(e=[e]);for(var n=0;n=0)return a++,void setTimeout(c,i+(e.retryAfter||0))}r(e)},c=function(){var t="";n.handleRequest(e,s,function(e){e.on("data",function(e){t+=e.toString()}),e.on("end",function(){var n=e.statusCode;if(n<300)r(null,t);else{var i=1e3*parseInt(e.headers["retry-after"],10)||0,s=o.error(new Error,{statusCode:n,retryable:n>=500||429===n});i&&s.retryable&&(s.retryAfter=i),u(s)}})},u)};i.util.defer(c)},uuid:{v4:function(){return e("uuid").v4()}},convertPayloadToString:function(e){var t=e.request,r=t.operation,n=t.service.api.operations[r].output||{};n.payload&&e.data[n.payload]&&(e.data[n.payload]=e.data[n.payload].toString())},defer:function(e){"object"==typeof r&&"function"==typeof r.nextTick?r.nextTick(e):"function"==typeof n?n(e):setTimeout(e,0)},getRequestPayloadShape:function(e){var t=e.service.api.operations;if(t){var r=(t||{})[e.operation];if(r&&r.input&&r.input.payload)return r.input.members[r.input.payload]}},getProfilesFromSharedConfig:function(e,t){function n(e,t){for(var r=0,n=Object.keys(t);r=6},parse:function(e){var t=e.split(":");return{partition:t[1],service:t[2],region:t[3],accountId:t[4],resource:t.slice(5).join(":")}},build:function(e){if(void 0===e.service||void 0===e.region||void 0===e.accountId||void 0===e.resource)throw o.error(new Error("Input ARN object is invalid"));return"arn:"+(e.partition||"aws")+":"+e.service+":"+e.region+":"+e.accountId+":"+e.resource}},defaultProfile:"default",configOptInEnv:"AWS_SDK_LOAD_CONFIG",sharedCredentialsFileEnv:"AWS_SHARED_CREDENTIALS_FILE",sharedConfigFileEnv:"AWS_CONFIG_FILE",imdsDisabledEnv:"AWS_EC2_METADATA_DISABLED"};t.exports=o}).call(this)}).call(this,e("_process"),e("timers").setImmediate)},{"../apis/metadata.json":26,"./core":39,_process:8,fs:2,timers:16,uuid:21}],37:[function(e,t,r){var n=e("./core");e("./credentials"),e("./credentials/credential_provider_chain");var i;n.Config=n.util.inherit({constructor:function(e){void 0===e&&(e={}),e=this.extractCredentials(e),n.util.each.call(this,this.keys,function(t,r){this.set(t,e[t],r)})},getCredentials:function(e){function t(t){e(t,t?null:i.credentials)}function r(e,t){return new n.util.error(t||new Error,{code:"CredentialsError",message:e,name:"CredentialsError"})}var i=this;i.credentials?"function"==typeof i.credentials.get?function(){i.credentials.get(function(e){e&&(e=r("Could not load credentials from "+i.credentials.constructor.name,e)),t(e)})}():function(){var e=null;i.credentials.accessKeyId&&i.credentials.secretAccessKey||(e=r("Missing credentials")),t(e)}():i.credentialProvider?i.credentialProvider.resolve(function(e,n){e&&(e=r("Could not load credentials from any providers",e)),i.credentials=n,t(e)}):t(r("No credentials to load"))},update:function(e,t){t=t||!1,e=this.extractCredentials(e),n.util.each.call(this,e,function(e,r){(t||Object.prototype.hasOwnProperty.call(this.keys,e)||n.Service.hasService(e))&&this.set(e,r)})},loadFromPath:function(e){this.clear();var t=JSON.parse(n.util.readFileSync(e)),r=new n.FileSystemCredentials(e),i=new n.CredentialProviderChain;return i.providers.unshift(r),i.resolve(function(e,r){if(e)throw e;t.credentials=r}),this.constructor(t),this},clear:function(){n.util.each.call(this,this.keys,function(e){delete this[e]}),this.set("credentials",void 0),this.set("credentialProvider",void 0)},set:function(e,t,r){void 0===t?(void 0===r&&(r=this.keys[e]),this[e]="function"==typeof r?r.call(this):r):"httpOptions"===e&&this[e]?this[e]=n.util.merge(this[e],t):this[e]=t},keys:{credentials:null,credentialProvider:null,region:null,logger:null,apiVersions:{},apiVersion:null,endpoint:void 0,httpOptions:{timeout:12e4},maxRetries:void 0,maxRedirects:10,paramValidation:!0,sslEnabled:!0,s3ForcePathStyle:!1,s3BucketEndpoint:!1,s3DisableBodySigning:!0,s3UsEast1RegionalEndpoint:"legacy",s3UseArnRegion:void 0,computeChecksums:!0,convertResponseTypes:!0,correctClockSkew:!1,customUserAgent:null,dynamoDbCrc32:!0,systemClockOffset:0,signatureVersion:null,signatureCache:!0,retryDelayOptions:{},useAccelerateEndpoint:!1,clientSideMonitoring:!1,endpointDiscoveryEnabled:void 0,endpointCacheSize:1e3,hostPrefixEnabled:!0,stsRegionalEndpoints:"legacy"},extractCredentials:function(e){return e.accessKeyId&&e.secretAccessKey&&(e=n.util.copy(e),e.credentials=new n.Credentials(e)),e},setPromisesDependency:function(e){i=e,null===e&&"function"==typeof Promise&&(i=Promise);var t=[n.Request,n.Credentials,n.CredentialProviderChain];n.S3&&(t.push(n.S3),n.S3.ManagedUpload&&t.push(n.S3.ManagedUpload)),n.util.addPromises(t,i)},getPromisesDependency:function(){return i}}),n.config=new n.Config},{"./core":39,"./credentials":40,"./credentials/credential_provider_chain":43}],43:[function(e,t,r){var n=e("../core");n.CredentialProviderChain=n.util.inherit(n.Credentials,{constructor:function(e){this.providers=e||n.CredentialProviderChain.defaultProviders.slice(0),this.resolveCallbacks=[]},resolve:function(e){function t(e,s){if(!e&&s||i===o.length)return n.util.arrayEach(r.resolveCallbacks,function(t){t(e,s)}),void(r.resolveCallbacks.length=0);var a=o[i++];s="function"==typeof a?a.call():a,s.get?s.get(function(e){t(e,e?null:s)}):t(null,s)}var r=this;if(0===r.providers.length)return e(new Error("No providers")),r;if(1===r.resolveCallbacks.push(e)){var i=0,o=r.providers.slice(0);t()}return r}}),n.CredentialProviderChain.defaultProviders=[],n.CredentialProviderChain.addPromisesToClass=function(e){this.prototype.resolvePromise=n.util.promisifyMethod("resolve",e)},n.CredentialProviderChain.deletePromisesFromClass=function(){delete this.prototype.resolvePromise},n.util.addPromises(n.CredentialProviderChain)},{"../core":39}],40:[function(e,t,r){var n=e("./core");n.Credentials=n.util.inherit({constructor:function(){if(n.util.hideProperties(this,["secretAccessKey"]),this.expired=!1,this.expireTime=null,this.refreshCallbacks=[],1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0].credentials||arguments[0];this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}else this.accessKeyId=arguments[0],this.secretAccessKey=arguments[1],this.sessionToken=arguments[2]},expiryWindow:15,needsRefresh:function(){var e=n.util.date.getDate().getTime(),t=new Date(e+1e3*this.expiryWindow);return!!(this.expireTime&&t>this.expireTime)||(this.expired||!this.accessKeyId||!this.secretAccessKey)},get:function(e){var t=this;this.needsRefresh()?this.refresh(function(r){r||(t.expired=!1),e&&e(r)}):e&&e()},refresh:function(e){this.expired=!1,e()},coalesceRefresh:function(e,t){var r=this;1===r.refreshCallbacks.push(e)&&r.load(function(e){n.util.arrayEach(r.refreshCallbacks,function(r){t?r(e):n.util.defer(function(){r(e)})}),r.refreshCallbacks.length=0})},load:function(e){e()}}),n.Credentials.addPromisesToClass=function(e){this.prototype.getPromise=n.util.promisifyMethod("get",e),this.prototype.refreshPromise=n.util.promisifyMethod("refresh",e)},n.Credentials.deletePromisesFromClass=function(){delete this.prototype.getPromise,delete this.prototype.refreshPromise},n.util.addPromises(n.Credentials)},{"./core":39}],27:[function(e,t,r){function n(e,t){if(!n.services.hasOwnProperty(e))throw new Error("InvalidService: Failed to load api for "+e);return n.services[e][t]}n.services={},t.exports=n},{}],26:[function(e,t,r){t.exports={acm:{name:"ACM",cors:!0},apigateway:{name:"APIGateway",cors:!0},applicationautoscaling:{prefix:"application-autoscaling",name:"ApplicationAutoScaling",cors:!0},appstream:{name:"AppStream"},autoscaling:{name:"AutoScaling",cors:!0},batch:{name:"Batch"},budgets:{name:"Budgets"},clouddirectory:{name:"CloudDirectory",versions:["2016-05-10*"]},cloudformation:{name:"CloudFormation",cors:!0},cloudfront:{name:"CloudFront",versions:["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*","2017-03-25*","2017-10-30*","2018-06-18*","2018-11-05*","2019-03-26*"],cors:!0},cloudhsm:{name:"CloudHSM",cors:!0},cloudsearch:{name:"CloudSearch"},cloudsearchdomain:{name:"CloudSearchDomain"},cloudtrail:{name:"CloudTrail",cors:!0},cloudwatch:{prefix:"monitoring",name:"CloudWatch",cors:!0},cloudwatchevents:{prefix:"events",name:"CloudWatchEvents",versions:["2014-02-03*"],cors:!0},cloudwatchlogs:{prefix:"logs",name:"CloudWatchLogs",cors:!0},codebuild:{name:"CodeBuild",cors:!0},codecommit:{name:"CodeCommit",cors:!0},codedeploy:{name:"CodeDeploy",cors:!0},codepipeline:{name:"CodePipeline",cors:!0},cognitoidentity:{prefix:"cognito-identity",name:"CognitoIdentity",cors:!0},cognitoidentityserviceprovider:{prefix:"cognito-idp",name:"CognitoIdentityServiceProvider",cors:!0},cognitosync:{prefix:"cognito-sync",name:"CognitoSync",cors:!0},configservice:{prefix:"config",name:"ConfigService",cors:!0},cur:{name:"CUR",cors:!0},datapipeline:{name:"DataPipeline"},devicefarm:{name:"DeviceFarm",cors:!0},directconnect:{name:"DirectConnect",cors:!0},directoryservice:{prefix:"ds",name:"DirectoryService"},discovery:{name:"Discovery"},dms:{name:"DMS"},dynamodb:{name:"DynamoDB",cors:!0},dynamodbstreams:{prefix:"streams.dynamodb",name:"DynamoDBStreams",cors:!0},ec2:{name:"EC2",versions:["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*"],cors:!0},ecr:{name:"ECR",cors:!0},ecs:{name:"ECS",cors:!0},efs:{prefix:"elasticfilesystem",name:"EFS",cors:!0},elasticache:{name:"ElastiCache",versions:["2012-11-15*","2014-03-24*","2014-07-15*","2014-09-30*"],cors:!0},elasticbeanstalk:{name:"ElasticBeanstalk",cors:!0},elb:{prefix:"elasticloadbalancing",name:"ELB",cors:!0},elbv2:{prefix:"elasticloadbalancingv2",name:"ELBv2",cors:!0},emr:{prefix:"elasticmapreduce",name:"EMR",cors:!0},es:{name:"ES"},elastictranscoder:{name:"ElasticTranscoder",cors:!0},firehose:{name:"Firehose",cors:!0},gamelift:{name:"GameLift",cors:!0},glacier:{name:"Glacier"},health:{name:"Health"},iam:{name:"IAM",cors:!0},importexport:{name:"ImportExport"},inspector:{name:"Inspector",versions:["2015-08-18*"],cors:!0},iot:{name:"Iot",cors:!0},iotdata:{prefix:"iot-data",name:"IotData",cors:!0},kinesis:{name:"Kinesis",cors:!0},kinesisanalytics:{name:"KinesisAnalytics"},kms:{name:"KMS",cors:!0},lambda:{name:"Lambda",cors:!0},lexruntime:{prefix:"runtime.lex",name:"LexRuntime",cors:!0},lightsail:{name:"Lightsail"},machinelearning:{name:"MachineLearning",cors:!0},marketplacecommerceanalytics:{name:"MarketplaceCommerceAnalytics",cors:!0},marketplacemetering:{prefix:"meteringmarketplace",name:"MarketplaceMetering"},mturk:{prefix:"mturk-requester",name:"MTurk",cors:!0},mobileanalytics:{name:"MobileAnalytics",cors:!0},opsworks:{name:"OpsWorks",cors:!0},opsworkscm:{name:"OpsWorksCM"},organizations:{name:"Organizations"},pinpoint:{name:"Pinpoint"},polly:{name:"Polly",cors:!0},rds:{name:"RDS",versions:["2014-09-01*"],cors:!0},redshift:{name:"Redshift",cors:!0},rekognition:{name:"Rekognition",cors:!0},resourcegroupstaggingapi:{name:"ResourceGroupsTaggingAPI"},route53:{name:"Route53",cors:!0},route53domains:{name:"Route53Domains",cors:!0},s3:{name:"S3",dualstackAvailable:!0,cors:!0},s3control:{name:"S3Control",dualstackAvailable:!0,xmlNoDefaultLists:!0},servicecatalog:{name:"ServiceCatalog",cors:!0},ses:{prefix:"email",name:"SES",cors:!0},shield:{name:"Shield"},simpledb:{prefix:"sdb",name:"SimpleDB"},sms:{name:"SMS"},snowball:{name:"Snowball"},sns:{name:"SNS",cors:!0},sqs:{name:"SQS",cors:!0},ssm:{name:"SSM",cors:!0},storagegateway:{name:"StorageGateway",cors:!0},stepfunctions:{prefix:"states",name:"StepFunctions"},sts:{name:"STS",cors:!0},support:{name:"Support"},swf:{name:"SWF"},xray:{name:"XRay",cors:!0},waf:{name:"WAF",cors:!0},wafregional:{prefix:"waf-regional",name:"WAFRegional"},workdocs:{name:"WorkDocs",cors:!0},workspaces:{name:"WorkSpaces"},codestar:{name:"CodeStar"},lexmodelbuildingservice:{prefix:"lex-models",name:"LexModelBuildingService",cors:!0},marketplaceentitlementservice:{prefix:"entitlement.marketplace",name:"MarketplaceEntitlementService"},athena:{name:"Athena"},greengrass:{name:"Greengrass"},dax:{name:"DAX"},migrationhub:{prefix:"AWSMigrationHub",name:"MigrationHub"},cloudhsmv2:{name:"CloudHSMV2"},glue:{name:"Glue"},mobile:{name:"Mobile"},pricing:{name:"Pricing",cors:!0},costexplorer:{prefix:"ce",name:"CostExplorer",cors:!0},mediaconvert:{name:"MediaConvert"},medialive:{name:"MediaLive"},mediapackage:{name:"MediaPackage"},mediastore:{name:"MediaStore"},mediastoredata:{prefix:"mediastore-data",name:"MediaStoreData",cors:!0},appsync:{name:"AppSync"},guardduty:{name:"GuardDuty"},mq:{name:"MQ"},comprehend:{name:"Comprehend",cors:!0},iotjobsdataplane:{prefix:"iot-jobs-data",name:"IoTJobsDataPlane"},kinesisvideoarchivedmedia:{prefix:"kinesis-video-archived-media",name:"KinesisVideoArchivedMedia",cors:!0},kinesisvideomedia:{prefix:"kinesis-video-media",name:"KinesisVideoMedia",cors:!0},kinesisvideo:{name:"KinesisVideo",cors:!0},sagemakerruntime:{prefix:"runtime.sagemaker",name:"SageMakerRuntime"},sagemaker:{name:"SageMaker"},translate:{name:"Translate",cors:!0},resourcegroups:{prefix:"resource-groups",name:"ResourceGroups",cors:!0},alexaforbusiness:{name:"AlexaForBusiness"},cloud9:{name:"Cloud9"},serverlessapplicationrepository:{prefix:"serverlessrepo",name:"ServerlessApplicationRepository"},servicediscovery:{name:"ServiceDiscovery"},workmail:{name:"WorkMail"},autoscalingplans:{prefix:"autoscaling-plans",name:"AutoScalingPlans"},transcribeservice:{prefix:"transcribe",name:"TranscribeService"},connect:{name:"Connect",cors:!0},acmpca:{prefix:"acm-pca",name:"ACMPCA"},fms:{name:"FMS"},secretsmanager:{name:"SecretsManager",cors:!0},iotanalytics:{name:"IoTAnalytics",cors:!0},iot1clickdevicesservice:{prefix:"iot1click-devices",name:"IoT1ClickDevicesService"},iot1clickprojects:{prefix:"iot1click-projects",name:"IoT1ClickProjects"},pi:{name:"PI"},neptune:{name:"Neptune"},mediatailor:{name:"MediaTailor"},eks:{name:"EKS"},macie:{name:"Macie"},dlm:{name:"DLM"},signer:{name:"Signer"},chime:{name:"Chime"},pinpointemail:{prefix:"pinpoint-email",name:"PinpointEmail"},ram:{name:"RAM"},route53resolver:{name:"Route53Resolver"},pinpointsmsvoice:{prefix:"sms-voice",name:"PinpointSMSVoice"},quicksight:{name:"QuickSight"},rdsdataservice:{prefix:"rds-data",name:"RDSDataService"},amplify:{name:"Amplify"},datasync:{name:"DataSync"},robomaker:{name:"RoboMaker"},transfer:{name:"Transfer"},globalaccelerator:{name:"GlobalAccelerator"},comprehendmedical:{name:"ComprehendMedical",cors:!0},kinesisanalyticsv2:{name:"KinesisAnalyticsV2"},mediaconnect:{name:"MediaConnect"},fsx:{name:"FSx"},securityhub:{name:"SecurityHub"},appmesh:{name:"AppMesh",versions:["2018-10-01*"]},licensemanager:{prefix:"license-manager",name:"LicenseManager"},kafka:{name:"Kafka"},apigatewaymanagementapi:{ +name:"ApiGatewayManagementApi"},apigatewayv2:{name:"ApiGatewayV2"},docdb:{name:"DocDB"},backup:{name:"Backup"},worklink:{name:"WorkLink"},textract:{name:"Textract"},managedblockchain:{name:"ManagedBlockchain"},mediapackagevod:{prefix:"mediapackage-vod",name:"MediaPackageVod"},groundstation:{name:"GroundStation"},iotthingsgraph:{name:"IoTThingsGraph"},iotevents:{name:"IoTEvents"},ioteventsdata:{prefix:"iotevents-data",name:"IoTEventsData"},personalize:{name:"Personalize",cors:!0},personalizeevents:{prefix:"personalize-events",name:"PersonalizeEvents",cors:!0},personalizeruntime:{prefix:"personalize-runtime",name:"PersonalizeRuntime",cors:!0},applicationinsights:{prefix:"application-insights",name:"ApplicationInsights"},servicequotas:{prefix:"service-quotas",name:"ServiceQuotas"},ec2instanceconnect:{prefix:"ec2-instance-connect",name:"EC2InstanceConnect"},eventbridge:{name:"EventBridge"},lakeformation:{name:"LakeFormation"},forecastservice:{prefix:"forecast",name:"ForecastService",cors:!0},forecastqueryservice:{prefix:"forecastquery",name:"ForecastQueryService",cors:!0},qldb:{name:"QLDB"},qldbsession:{prefix:"qldb-session",name:"QLDBSession"},workmailmessageflow:{name:"WorkMailMessageFlow"},codestarnotifications:{prefix:"codestar-notifications",name:"CodeStarNotifications"},savingsplans:{name:"SavingsPlans"},sso:{name:"SSO"},ssooidc:{prefix:"sso-oidc",name:"SSOOIDC"},marketplacecatalog:{prefix:"marketplace-catalog",name:"MarketplaceCatalog"},dataexchange:{name:"DataExchange"},sesv2:{name:"SESV2"},migrationhubconfig:{prefix:"migrationhub-config",name:"MigrationHubConfig"},connectparticipant:{name:"ConnectParticipant"},appconfig:{name:"AppConfig"},iotsecuretunneling:{name:"IoTSecureTunneling"},wafv2:{name:"WAFV2"},elasticinference:{prefix:"elastic-inference",name:"ElasticInference"},imagebuilder:{name:"Imagebuilder"},schemas:{name:"Schemas"},accessanalyzer:{name:"AccessAnalyzer"},codegurureviewer:{prefix:"codeguru-reviewer",name:"CodeGuruReviewer"},codeguruprofiler:{name:"CodeGuruProfiler"},computeoptimizer:{prefix:"compute-optimizer",name:"ComputeOptimizer"},frauddetector:{name:"FraudDetector"},kendra:{name:"Kendra"},networkmanager:{name:"NetworkManager"},outposts:{name:"Outposts"},augmentedairuntime:{prefix:"sagemaker-a2i-runtime",name:"AugmentedAIRuntime"},ebs:{name:"EBS"},kinesisvideosignalingchannels:{prefix:"kinesis-video-signaling",name:"KinesisVideoSignalingChannels",cors:!0},detective:{name:"Detective"},codestarconnections:{prefix:"codestar-connections",name:"CodeStarconnections"},synthetics:{name:"Synthetics"},iotsitewise:{name:"IoTSiteWise"},macie2:{name:"Macie2"},codeartifact:{name:"CodeArtifact"},honeycode:{name:"Honeycode"},ivs:{name:"IVS"},braket:{name:"Braket"},identitystore:{name:"IdentityStore"},appflow:{name:"Appflow"},redshiftdata:{prefix:"redshift-data",name:"RedshiftData"},ssoadmin:{prefix:"sso-admin",name:"SSOAdmin"},timestreamquery:{prefix:"timestream-query",name:"TimestreamQuery"},timestreamwrite:{prefix:"timestream-write",name:"TimestreamWrite"},s3outposts:{name:"S3Outposts"},databrew:{name:"DataBrew"},servicecatalogappregistry:{prefix:"servicecatalog-appregistry",name:"ServiceCatalogAppRegistry"},networkfirewall:{prefix:"network-firewall",name:"NetworkFirewall"},mwaa:{name:"MWAA"},amplifybackend:{name:"AmplifyBackend"},appintegrations:{name:"AppIntegrations"},connectcontactlens:{prefix:"connect-contact-lens",name:"ConnectContactLens"},devopsguru:{prefix:"devops-guru",name:"DevOpsGuru"},ecrpublic:{prefix:"ecr-public",name:"ECRPUBLIC"},lookoutvision:{name:"LookoutVision"},sagemakerfeaturestoreruntime:{prefix:"sagemaker-featurestore-runtime",name:"SageMakerFeatureStoreRuntime"},customerprofiles:{prefix:"customer-profiles",name:"CustomerProfiles"},auditmanager:{name:"AuditManager"},emrcontainers:{prefix:"emr-containers",name:"EMRcontainers"},healthlake:{name:"HealthLake"},sagemakeredge:{prefix:"sagemaker-edge",name:"SagemakerEdge"},amp:{name:"Amp"},greengrassv2:{name:"GreengrassV2"},iotdeviceadvisor:{name:"IotDeviceAdvisor"},iotfleethub:{name:"IoTFleetHub"},iotwireless:{name:"IoTWireless"},location:{name:"Location"},wellarchitected:{name:"WellArchitected"}}},{}],21:[function(e,t,r){var n=e("./v1"),i=e("./v4"),o=i;o.v1=n,o.v4=i,t.exports=o},{"./v1":24,"./v4":25}],25:[function(e,t,r){function n(e,t,r){var n=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||i)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;++a)t[n+a]=s[a];return t||o(s)}var i=e("./lib/rng"),o=e("./lib/bytesToUuid");t.exports=n},{"./lib/bytesToUuid":22,"./lib/rng":23}],24:[function(e,t,r){function n(e,t,r){var n=t&&r||0,l=t||[];e=e||{};var h=e.node||i,p=void 0!==e.clockseq?e.clockseq:o;if(null==h||null==p){var f=s();null==h&&(h=i=[1|f[0],f[1],f[2],f[3],f[4],f[5]]),null==p&&(p=o=16383&(f[6]<<8|f[7]))}var d=void 0!==e.msecs?e.msecs:(new Date).getTime(),m=void 0!==e.nsecs?e.nsecs:c+1,v=d-u+(m-c)/1e4;if(v<0&&void 0===e.clockseq&&(p=p+1&16383),(v<0||d>u)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");u=d,c=m,o=p,d+=122192928e5;var g=(1e4*(268435455&d)+m)%4294967296;l[n++]=g>>>24&255,l[n++]=g>>>16&255,l[n++]=g>>>8&255,l[n++]=255&g;var y=d/4294967296*1e4&268435455;l[n++]=y>>>8&255,l[n++]=255&y,l[n++]=y>>>24&15|16,l[n++]=y>>>16&255,l[n++]=p>>>8|128,l[n++]=255&p;for(var b=0;b<6;++b)l[n+b]=h[b];return t||a(l)}var i,o,s=e("./lib/rng"),a=e("./lib/bytesToUuid"),u=0,c=0;t.exports=n},{"./lib/bytesToUuid":22,"./lib/rng":23}],23:[function(e,t,r){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var i=new Uint8Array(16);t.exports=function(){return n(i),i}}else{var o=new Array(16);t.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),o[t]=e>>>((3&t)<<3)&255;return o}}},{}],22:[function(e,t,r){function n(e,t){var r=t||0,n=i;return[n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]]].join("")}for(var i=[],o=0;o<256;++o)i[o]=(o+256).toString(16).substr(1);t.exports=n},{}],20:[function(e,t,r){(function(t,n){(function(){function i(e,t){var n={seen:[],stylize:s};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(t)?n.showHidden=t:t&&r._extend(n,t),E(n.showHidden)&&(n.showHidden=!1),E(n.depth)&&(n.depth=2),E(n.colors)&&(n.colors=!1),E(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),u(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function s(e,t){return e}function a(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function u(e,t,n){if(e.customInspect&&t&&A(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return b(i)||(i=u(e,i,n)),i}var o=c(e,t);if(o)return o;var s=Object.keys(t),m=a(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(t)),x(t)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(t);if(0===s.length){if(A(t)){var v=t.name?": "+t.name:"";return e.stylize("[Function"+v+"]","special")}if(_(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(x(t))return l(t)}var g="",y=!1,w=["{","}"];if(d(t)&&(y=!0,w=["[","]"]),A(t)){g=" [Function"+(t.name?": "+t.name:"")+"]"}if(_(t)&&(g=" "+RegExp.prototype.toString.call(t)),C(t)&&(g=" "+Date.prototype.toUTCString.call(t)),x(t)&&(g=" "+l(t)),0===s.length&&(!y||0==t.length))return w[0]+g+w[1];if(n<0)return _(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var E;return E=y?h(e,t,n,m,s):s.map(function(r){return p(e,t,n,m,r,y)}),e.seen.pop(),f(E,g,w)}function c(e,t){if(E(t))return e.stylize("undefined","undefined");if(b(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return y(t)?e.stylize(""+t,"number"):m(t)?e.stylize(""+t,"boolean"):v(t)?e.stylize("null","null"):void 0}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function h(e,t,r,n,i){for(var o=[],s=0,a=t.length;s-1&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n"))):a=e.stylize("[Circular]","special")),E(s)){if(o&&i.match(/^\d+$/))return a;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function f(e,t,r){var n=0;return e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function d(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function v(e){return null===e}function g(e){return null==e}function y(e){return"number"==typeof e}function b(e){return"string"==typeof e}function w(e){return"symbol"==typeof e}function E(e){return void 0===e}function _(e){return S(e)&&"[object RegExp]"===T(e)}function S(e){return"object"==typeof e&&null!==e}function C(e){return S(e)&&"[object Date]"===T(e)}function x(e){return S(e)&&("[object Error]"===T(e)||e instanceof Error)}function A(e){return"function"==typeof e}function R(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function T(e){return Object.prototype.toString.call(e)}function k(e){return e<10?"0"+e.toString(10):e.toString(10)}function I(){var e=new Date,t=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(":");return[e.getDate(),N[e.getMonth()],t].join(" ")}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P=/%[sdj%]/g;r.format=function(e){if(!b(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),a=n[r];r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r.setImmediate="function"==typeof t?t:function(e){var t=c++,n=!(arguments.length<2)&&a.call(arguments,1);return u[t]=!0,o(function(){u[t]&&(n?e.apply(null,n):e.call(null),r.clearImmediate(t))}),t},r.clearImmediate="function"==typeof n?n:function(e){delete u[e]}}).call(this)}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":8,timers:16}],8:[function(e,t,r){function n(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function o(e){if(h===setTimeout)return setTimeout(e,0);if((h===n||!h)&&setTimeout)return h=setTimeout,setTimeout(e,0);try{return h(e,0)}catch(t){try{return h.call(null,e,0)}catch(t){return h.call(this,e,0)}}}function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===i||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function a(){v&&d&&(v=!1,d.length?m=d.concat(m):g=-1,m.length&&u())}function u(){if(!v){var e=o(a);v=!0;for(var t=m.length;t;){for(d=m,m=[];++g1)for(var r=1;r="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e}function a(e){return e>="0"&&e<="9"||"-"===e}function u(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e}function c(){}function l(){}function h(e){this.runtime=e}function p(e){this._interpreter=e,this.functionTable={abs:{_func:this._functionAbs,_signature:[{types:[g]}]},avg:{_func:this._functionAvg,_signature:[{types:[S]}]},ceil:{_func:this._functionCeil,_signature:[{types:[g]}]},contains:{_func:this._functionContains,_signature:[{types:[b,w]},{types:[y]}]},ends_with:{_func:this._functionEndsWith,_signature:[{types:[b]},{types:[b]}]},floor:{_func:this._functionFloor,_signature:[{types:[g]}]},length:{_func:this._functionLength,_signature:[{types:[b,w,E]}]},map:{_func:this._functionMap,_signature:[{types:[_]},{types:[w]}]},max:{_func:this._functionMax,_signature:[{types:[S,C]}]},merge:{_func:this._functionMerge,_signature:[{types:[E],variadic:!0}]},max_by:{_func:this._functionMaxBy,_signature:[{types:[w]},{types:[_]}]},sum:{_func:this._functionSum,_signature:[{types:[S]}]},starts_with:{_func:this._functionStartsWith,_signature:[{types:[b]},{types:[b]}]},min:{_func:this._functionMin,_signature:[{types:[S,C]}]},min_by:{_func:this._functionMinBy,_signature:[{types:[w]},{types:[_]}]},type:{_func:this._functionType,_signature:[{types:[y]}]},keys:{_func:this._functionKeys,_signature:[{types:[E]}]},values:{_func:this._functionValues,_signature:[{types:[E]}]},sort:{_func:this._functionSort,_signature:[{types:[C,S]}]},sort_by:{_func:this._functionSortBy,_signature:[{types:[w]},{types:[_]}]},join:{_func:this._functionJoin,_signature:[{types:[b]},{types:[C]}]},reverse:{_func:this._functionReverse,_signature:[{types:[b,w]}]},to_array:{_func:this._functionToArray,_signature:[{types:[y]}]},to_string:{_func:this._functionToString,_signature:[{types:[y]}]},to_number:{_func:this._functionToNumber,_signature:[{types:[y]}]},not_null:{_func:this._functionNotNull,_signature:[{types:[y],variadic:!0}]}}}function f(e){return(new l).parse(e)}function d(e){return(new c).tokenize(e)}function m(e,t){var r=new l,n=new p,i=new h(n);n._interpreter=i;var o=r.parse(t);return i.search(o,e)}var v;v="function"==typeof String.prototype.trimLeft?function(e){return e.trimLeft()}:function(e){return e.match(/^\s*(.*)/)[1]};var g=0,y=1,b=2,w=3,E=4,_=6,S=8,C=9,x={".":"Dot","*":"Star",",":"Comma",":":"Colon","{":"Lbrace","}":"Rbrace","]":"Rbracket","(":"Lparen",")":"Rparen","@":"Current"},A={"<":!0,">":!0,"=":!0,"!":!0},R={" ":!0,"\t":!0,"\n":!0};c.prototype={tokenize:function(e){var t=[];this._current=0;for(var r,n,i;this._current"===r?"="===e[this._current]?(this._current++,{type:"GTE",value:">=",start:t}):{type:"GT",value:">",start:t}:"="===r&&"="===e[this._current]?(this._current++,{type:"EQ",value:"==",start:t}):void 0},_consumeLiteral:function(e){this._current++;for(var t,r=this._current,n=e.length;"`"!==e[this._current]&&this._current=0)return!0;if(r.indexOf(e)>=0)return!0;if(!(n.indexOf(e[0])>=0))return!1;try{return JSON.parse(e),!0}catch(e){return!1}}};var T={};T.EOF=0,T.UnquotedIdentifier=0,T.QuotedIdentifier=0,T.Rbracket=0,T.Rparen=0,T.Comma=0,T.Rbrace=0,T.Number=0,T.Current=0,T.Expref=0,T.Pipe=1,T.Or=2,T.And=3,T.EQ=5,T.GT=5,T.LT=5,T.GTE=5,T.LTE=5,T.NE=5,T.Flatten=9,T.Star=20,T.Filter=21,T.Dot=40,T.Not=45,T.Lbrace=50,T.Lbracket=55,T.Lparen=60,l.prototype={parse:function(e){this._loadTokens(e),this.index=0;var t=this.expression(0);if("EOF"!==this._lookahead(0)){var r=this._lookaheadToken(0),n=new Error("Unexpected token type: "+r.type+", value: "+r.value);throw n.name="ParserError",n}return t},_loadTokens:function(e){var t=new c,r=t.tokenize(e);r.push({type:"EOF",value:"",start:e.length}),this.tokens=r},expression:function(e){var t=this._lookaheadToken(0);this._advance();for(var r=this.nud(t),n=this._lookahead(0);e=0?this.expression(e):"Lbracket"===t?(this._match("Lbracket"),this._parseMultiselectList()):"Lbrace"===t?(this._match("Lbrace"),this._parseMultiselectHash()):void 0},_parseProjectionRHS:function(e){var t;if(T[this._lookahead(0)]<10)t={type:"Identity"};else if("Lbracket"===this._lookahead(0))t=this.expression(e);else if("Filter"===this._lookahead(0))t=this.expression(e);else{if("Dot"!==this._lookahead(0)){var r=this._lookaheadToken(0),n=new Error("Sytanx error, unexpected token: "+r.value+"("+r.type+")");throw n.name="ParserError",n}this._match("Dot"),t=this._parseDotRHS(e)}return t},_parseMultiselectList:function(){for(var e=[];"Rbracket"!==this._lookahead(0);){var t=this.expression(0);if(e.push(t),"Comma"===this._lookahead(0)&&(this._match("Comma"),"Rbracket"===this._lookahead(0)))throw new Error("Unexpected token Rbracket")}return this._match("Rbracket"),{type:"MultiSelectList",children:e}},_parseMultiselectHash:function(){for(var e,t,r,n,i=[],o=["UnquotedIdentifier","QuotedIdentifier"];;){if(e=this._lookaheadToken(0),o.indexOf(e.type)<0)throw new Error("Expecting an identifier token, got: "+e.type);if(t=e.value,this._advance(),this._match("Colon"),r=this.expression(0),n={type:"KeyValuePair",name:t,value:r},i.push(n),"Comma"===this._lookahead(0))this._match("Comma");else if("Rbrace"===this._lookahead(0)){this._match("Rbrace");break}}return{type:"MultiSelectHash",children:i}}},h.prototype={search:function(e,t){return this.visit(e,t)},visit:function(e,s){var a,u,c,l,h,p,f,d,m;switch(e.type){case"Field":return null===s?null:r(s)?(p=s[e.name],void 0===p?null:p):null;case"Subexpression":for(c=this.visit(e.children[0],s),m=1;m0)for(m=b;mw;m+=E)c.push(s[m]);return c;case"Projection":var _=this.visit(e.children[0],s);if(!t(_))return null;for(d=[],m=0;m<_.length;m++)null!==(u=this.visit(e.children[1],_[m]))&&d.push(u);return d;case"ValueProjection":if(_=this.visit(e.children[0],s),!r(_))return null;d=[];var S=o(_);for(m=0;mh;break;case"GTE":c=l>=h;break;case"LT":c=l=e&&(t=r<0?e-1:e),t}},p.prototype={callFunction:function(e,t){var r=this.functionTable[e];if(void 0===r)throw new Error("Unknown function: "+e+"()");return this._validateArgs(e,t,r._signature),r._func.call(this,t)},_validateArgs:function(e,t,r){var n;if(r[r.length-1].variadic){if(t.length=0;n--)r+=t[n];return r}var i=e[0].slice(0);return i.reverse(),i},_functionAbs:function(e){return Math.abs(e[0])},_functionCeil:function(e){return Math.ceil(e[0])},_functionAvg:function(e){for(var t=0,r=e[0],n=0;n=0},_functionFloor:function(e){return Math.floor(e[0])},_functionLength:function(e){return r(e[0])?Object.keys(e[0]).length:e[0].length},_functionMap:function(e){for(var t=[],r=this._interpreter,n=e[0],i=e[1],o=0;o0){if(this._getTypeName(e[0][0])===g)return Math.max.apply(Math,e[0]);for(var t=e[0],r=t[0],n=1;n0){if(this._getTypeName(e[0][0])===g)return Math.min.apply(Math,e[0]);for(var t=e[0],r=t[0],n=1;na?1:ss&&(s=r,t=i[a]);return t},_functionMinBy:function(e){for(var t,r,n=e[1],i=e[0],o=this.createKeyFunction(n,[g,b]),s=1/0,a=0;a=this.HEADERS_RECEIVED&&!h&&(u.statusCode=l.status,u.headers=s.parseHeaders(l.getAllResponseHeaders()),u.emit("headers",u.statusCode,u.headers,l.statusText),h=!0),this.readyState===this.DONE&&s.finishRequest(l,u)},!1),l.upload.addEventListener("progress",function(e){u.emit("sendProgress",e)}),l.addEventListener("progress",function(e){u.emit("receiveProgress",e)},!1),l.addEventListener("timeout",function(){o(n.util.error(new Error("Timeout"),{code:"TimeoutError"}))},!1),l.addEventListener("error",function(){o(n.util.error(new Error("Network Failure"),{code:"NetworkingError"}))},!1),l.addEventListener("abort",function(){o(n.util.error(new Error("Request aborted"),{code:"RequestAbortedError"}))},!1),r(u),l.open(e.method,c,!1!==t.xhrAsync),n.util.each(e.headers,function(e,t){"Content-Length"!==e&&"User-Agent"!==e&&"Host"!==e&&l.setRequestHeader(e,t)}),t.timeout&&!1!==t.xhrAsync&&(l.timeout=t.timeout),t.xhrWithCredentials&&(l.withCredentials=!0);try{l.responseType="arraybuffer"}catch(e){}try{e.body?l.send(e.body):l.send()}catch(t){if(!e.body||"object"!=typeof e.body.buffer)throw t;l.send(e.body.buffer)}return u},parseHeaders:function(e){var t={};return n.util.arrayEach(e.split(/\r?\n/),function(e){var r=e.split(":",1)[0],n=e.substring(r.length+2);r.length>0&&(t[r.toLowerCase()]=n)}),t},finishRequest:function(e,t){var r;if("arraybuffer"===e.responseType&&e.response){var i=e.response;r=new n.util.Buffer(i.byteLength);for(var o=new Uint8Array(i),s=0;s-1&&0===++e[t];t--);}var o=e("../core").util,s=o.buffer.toBuffer;n.fromNumber=function(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(e+" is too large (or, if negative, too small) to represent as an Int64");for(var t=new Uint8Array(8),r=7,o=Math.abs(Math.round(e));r>-1&&o>0;r--,o/=256)t[r]=o;return e<0&&i(t),new n(t)},n.prototype.valueOf=function(){var e=this.bytes.slice(0),t=128&e[0];return t&&i(e),parseInt(e.toString("hex"),16)*(t?-1:1)},n.prototype.toString=function(){return String(this.valueOf())},t.exports={Int64:n}},{"../core":39}],55:[function(e,t,r){function n(e){for(var t=[],r=0;ra)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,64===this.bufferLength&&(this.hashBuffer(),this.bufferLength=0);return this},n.prototype.digest=function(e){if(!this.finished){var t=8*this.bytesHashed,r=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(r.setUint8(this.bufferLength++,128),n%64>=56){for(var o=this.bufferLength;o<64;o++)r.setUint8(o,0);this.hashBuffer(),this.bufferLength=0}for(var o=this.bufferLength;o<56;o++)r.setUint8(o,0);r.setUint32(56,Math.floor(t/4294967296),!0),r.setUint32(60,t),this.hashBuffer(),this.finished=!0}for(var s=new i(32),o=0;o<8;o++)s[4*o]=this.state[o]>>>24&255,s[4*o+1]=this.state[o]>>>16&255,s[4*o+2]=this.state[o]>>>8&255,s[4*o+3]=this.state[o]>>>0&255;return e?s.toString(e):s},n.prototype.hashBuffer=function(){for(var e=this,t=e.buffer,r=e.state,n=r[0],i=r[1],o=r[2],a=r[3],u=r[4],c=r[5],l=r[6],h=r[7],p=0;p<64;p++){if(p<16)this.temp[p]=(255&t[4*p])<<24|(255&t[4*p+1])<<16|(255&t[4*p+2])<<8|255&t[4*p+3];else{var f=this.temp[p-2],d=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10;f=this.temp[p-15];var m=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3;this.temp[p]=(d+this.temp[p-7]|0)+(m+this.temp[p-16]|0)}var v=(((u>>>6|u<<26)^(u>>>11|u<<21)^(u>>>25|u<<7))+(u&c^~u&l)|0)+(h+(s[p]+this.temp[p]|0)|0)|0,g=((n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10))+(n&i^n&o^i&o)|0;h=l,l=c,c=u,u=a+v|0,a=o,o=i,i=n,n=v+g|0}r[0]+=n,r[1]+=i,r[2]+=o,r[3]+=a,r[4]+=u,r[5]+=c,r[6]+=l,r[7]+=h}},{"./browserHashUtils":30,"buffer/":3}],33:[function(e,t,r){function n(){this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,this.h3=271733878,this.h4=3285377520,this.block=new Uint32Array(80),this.offset=0,this.shift=24,this.totalLength=0}var i=e("buffer/").Buffer,o=e("./browserHashUtils");new Uint32Array([1518500249,1859775393,-1894007588,-899497514]),Math.pow(2,53);t.exports=n,n.BLOCK_SIZE=64,n.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");if(o.isEmptyData(e))return this;e=o.convertToBuffer(e);var t=e.length;this.totalLength+=8*t;for(var r=0;r14||14===this.offset&&this.shift<24)&&this.processBlock(),this.offset=14,this.shift=24,this.write(0),this.write(0),this.write(this.totalLength>0xffffffffff?this.totalLength/1099511627776:0),this.write(this.totalLength>4294967295?this.totalLength/4294967296:0);for(var t=24;t>=0;t-=8)this.write(this.totalLength>>t);var r=new i(20),n=new DataView(r.buffer);return n.setUint32(0,this.h0,!1),n.setUint32(4,this.h1,!1),n.setUint32(8,this.h2,!1),n.setUint32(12,this.h3,!1),n.setUint32(16,this.h4,!1),e?r.toString(e):r},n.prototype.processBlock=function(){for(var e=16;e<80;e++){var t=this.block[e-3]^this.block[e-8]^this.block[e-14]^this.block[e-16];this.block[e]=t<<1|t>>>31}var r,n,i=this.h0,o=this.h1,s=this.h2,a=this.h3,u=this.h4;for(e=0;e<80;e++){e<20?(r=a^o&(s^a),n=1518500249):e<40?(r=o^s^a,n=1859775393):e<60?(r=o&s|a&(o|s),n=2400959708):(r=o^s^a,n=3395469782);var c=(i<<5|i>>>27)+r+u+n+(0|this.block[e]);u=a,a=s,s=o<<30|o>>>2,o=i,i=c}for(this.h0=this.h0+i|0,this.h1=this.h1+o|0,this.h2=this.h2+s|0,this.h3=this.h3+a|0,this.h4=this.h4+u|0,this.offset=0,e=0;e<16;e++)this.block[e]=0}},{"./browserHashUtils":30,"buffer/":3}],32:[function(e,t,r){function n(){this.state=[1732584193,4023233417,2562383102,271733878],this.buffer=new DataView(new ArrayBuffer(h)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}function i(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function o(e,t,r,n,o,s,a){return i(t&r|~t&n,e,t,o,s,a)}function s(e,t,r,n,o,s,a){return i(t&n|r&~n,e,t,o,s,a)}function a(e,t,r,n,o,s,a){return i(t^r^n,e,t,o,s,a)}function u(e,t,r,n,o,s,a){return i(r^(t|~n),e,t,o,s,a)}var c=e("./browserHashUtils"),l=e("buffer/").Buffer,h=64;t.exports=n,n.BLOCK_SIZE=h,n.prototype.update=function(e){if(c.isEmptyData(e))return this;if(this.finished)throw new Error("Attempted to update an already finished hash.");var t=c.convertToBuffer(e),r=0,n=t.byteLength;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===h&&(this.hashBuffer(),this.bufferLength=0);return this},n.prototype.digest=function(e){if(!this.finished){var t=this,r=t.buffer,n=t.bufferLength,i=t.bytesHashed,o=8*i;if(r.setUint8(this.bufferLength++,128),n%h>=h-8){for(var s=this.bufferLength;s>>0,!0),r.setUint32(h-4,Math.floor(o/4294967296),!0),this.hashBuffer(),this.finished=!0}for(var a=new DataView(new ArrayBuffer(16)),s=0;s<4;s++)a.setUint32(4*s,this.state[s],!0);var u=new l(a.buffer,a.byteOffset,a.byteLength);return e?u.toString(e):u},n.prototype.hashBuffer=function(){var e=this,t=e.buffer,r=e.state,n=r[0],i=r[1],c=r[2],l=r[3];n=o(n,i,c,l,t.getUint32(0,!0),7,3614090360),l=o(l,n,i,c,t.getUint32(4,!0),12,3905402710),c=o(c,l,n,i,t.getUint32(8,!0),17,606105819),i=o(i,c,l,n,t.getUint32(12,!0),22,3250441966),n=o(n,i,c,l,t.getUint32(16,!0),7,4118548399),l=o(l,n,i,c,t.getUint32(20,!0),12,1200080426),c=o(c,l,n,i,t.getUint32(24,!0),17,2821735955),i=o(i,c,l,n,t.getUint32(28,!0),22,4249261313),n=o(n,i,c,l,t.getUint32(32,!0),7,1770035416),l=o(l,n,i,c,t.getUint32(36,!0),12,2336552879),c=o(c,l,n,i,t.getUint32(40,!0),17,4294925233),i=o(i,c,l,n,t.getUint32(44,!0),22,2304563134),n=o(n,i,c,l,t.getUint32(48,!0),7,1804603682),l=o(l,n,i,c,t.getUint32(52,!0),12,4254626195),c=o(c,l,n,i,t.getUint32(56,!0),17,2792965006),i=o(i,c,l,n,t.getUint32(60,!0),22,1236535329), +n=s(n,i,c,l,t.getUint32(4,!0),5,4129170786),l=s(l,n,i,c,t.getUint32(24,!0),9,3225465664),c=s(c,l,n,i,t.getUint32(44,!0),14,643717713),i=s(i,c,l,n,t.getUint32(0,!0),20,3921069994),n=s(n,i,c,l,t.getUint32(20,!0),5,3593408605),l=s(l,n,i,c,t.getUint32(40,!0),9,38016083),c=s(c,l,n,i,t.getUint32(60,!0),14,3634488961),i=s(i,c,l,n,t.getUint32(16,!0),20,3889429448),n=s(n,i,c,l,t.getUint32(36,!0),5,568446438),l=s(l,n,i,c,t.getUint32(56,!0),9,3275163606),c=s(c,l,n,i,t.getUint32(12,!0),14,4107603335),i=s(i,c,l,n,t.getUint32(32,!0),20,1163531501),n=s(n,i,c,l,t.getUint32(52,!0),5,2850285829),l=s(l,n,i,c,t.getUint32(8,!0),9,4243563512),c=s(c,l,n,i,t.getUint32(28,!0),14,1735328473),i=s(i,c,l,n,t.getUint32(48,!0),20,2368359562),n=a(n,i,c,l,t.getUint32(20,!0),4,4294588738),l=a(l,n,i,c,t.getUint32(32,!0),11,2272392833),c=a(c,l,n,i,t.getUint32(44,!0),16,1839030562),i=a(i,c,l,n,t.getUint32(56,!0),23,4259657740),n=a(n,i,c,l,t.getUint32(4,!0),4,2763975236),l=a(l,n,i,c,t.getUint32(16,!0),11,1272893353),c=a(c,l,n,i,t.getUint32(28,!0),16,4139469664),i=a(i,c,l,n,t.getUint32(40,!0),23,3200236656),n=a(n,i,c,l,t.getUint32(52,!0),4,681279174),l=a(l,n,i,c,t.getUint32(0,!0),11,3936430074),c=a(c,l,n,i,t.getUint32(12,!0),16,3572445317),i=a(i,c,l,n,t.getUint32(24,!0),23,76029189),n=a(n,i,c,l,t.getUint32(36,!0),4,3654602809),l=a(l,n,i,c,t.getUint32(48,!0),11,3873151461),c=a(c,l,n,i,t.getUint32(60,!0),16,530742520),i=a(i,c,l,n,t.getUint32(8,!0),23,3299628645),n=u(n,i,c,l,t.getUint32(0,!0),6,4096336452),l=u(l,n,i,c,t.getUint32(28,!0),10,1126891415),c=u(c,l,n,i,t.getUint32(56,!0),15,2878612391),i=u(i,c,l,n,t.getUint32(20,!0),21,4237533241),n=u(n,i,c,l,t.getUint32(48,!0),6,1700485571),l=u(l,n,i,c,t.getUint32(12,!0),10,2399980690),c=u(c,l,n,i,t.getUint32(40,!0),15,4293915773),i=u(i,c,l,n,t.getUint32(4,!0),21,2240044497),n=u(n,i,c,l,t.getUint32(32,!0),6,1873313359),l=u(l,n,i,c,t.getUint32(60,!0),10,4264355552),c=u(c,l,n,i,t.getUint32(24,!0),15,2734768916),i=u(i,c,l,n,t.getUint32(52,!0),21,1309151649),n=u(n,i,c,l,t.getUint32(16,!0),6,4149444226),l=u(l,n,i,c,t.getUint32(44,!0),10,3174756917),c=u(c,l,n,i,t.getUint32(8,!0),15,718787259),i=u(i,c,l,n,t.getUint32(36,!0),21,3951481745),r[0]=n+r[0]&4294967295,r[1]=i+r[1]&4294967295,r[2]=c+r[2]&4294967295,r[3]=l+r[3]&4294967295}},{"./browserHashUtils":30,"buffer/":3}],31:[function(e,t,r){function n(e,t){this.hash=new e,this.outer=new e;var r=i(e,t),n=new Uint8Array(e.BLOCK_SIZE);n.set(r);for(var o=0;oe.BLOCK_SIZE){var n=new e;n.update(r),r=n.digest()}var i=new Uint8Array(e.BLOCK_SIZE);return i.set(r),i}var o=e("./browserHashUtils");t.exports=n,n.prototype.update=function(e){if(o.isEmptyData(e)||this.error)return this;try{this.hash.update(o.convertToBuffer(e))}catch(e){this.error=e}return this},n.prototype.digest=function(e){return this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest(e)}},{"./browserHashUtils":30}],30:[function(e,t,r){function n(e){return"string"==typeof e?0===e.length:0===e.byteLength}function i(e){return"string"==typeof e&&(e=new o(e,"utf8")),ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}var o=e("buffer/").Buffer;"undefined"!=typeof ArrayBuffer&&void 0===ArrayBuffer.isView&&(ArrayBuffer.isView=function(e){return s.indexOf(Object.prototype.toString.call(e))>-1});var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]","[object DataView]"];t.exports={isEmptyData:n,convertToBuffer:i}},{"buffer/":3}],17:[function(e,t,r){function n(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function i(e,t,r){if(e&&c(e)&&e instanceof n)return e;var i=new n;return i.parse(e,t,r),i}function o(e){return u(e)&&(e=i(e)),e instanceof n?e.format():n.prototype.format.call(e)}function s(e,t){return i(e,!1,!0).resolve(t)}function a(e,t){return e?i(e,!1,!0).resolveObject(t):t}function u(e){return"string"==typeof e}function c(e){return"object"==typeof e&&null!==e}function l(e){return null===e}function h(e){return null==e}var p=e("punycode");r.parse=i,r.resolve=s,r.resolveObject=a,r.format=o,r.Url=n;var f=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,m=["<",">",'"',"`"," ","\r","\n","\t"],v=["{","}","|","\\","^","`"].concat(m),g=["'"].concat(v),y=["%","/","?",";","#"].concat(g),b=["/","?","#"],w=/^[a-z0-9A-Z_-]{0,63}$/,E=/^([a-z0-9A-Z_-]{0,63})(.*)$/,_={javascript:!0,"javascript:":!0},S={javascript:!0,"javascript:":!0},C={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},x=e("querystring");n.prototype.parse=function(e,t,r){if(!u(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var i=f.exec(n);if(i){i=i[0];var o=i.toLowerCase();this.protocol=o,n=n.substr(i.length)}if(r||i||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===n.substr(0,2);!s||i&&S[i]||(n=n.substr(2),this.slashes=!0)}if(!S[i]&&(s||i&&!C[i])){for(var a=-1,c=0;c127?T+="x":T+=R[k];if(!T.match(w)){var L=v.slice(0,c),P=v.slice(c+1),q=R.match(E);q&&(L.push(q[1]),P.unshift(q[2])),P.length&&(n="/"+P.join(".")+n),this.hostname=L.join(".");break}}}if(this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),!m){for(var O=this.hostname.split("."),N=[],c=0;c0)&&r.host.split("@");v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return r.search=e.search,r.query=e.query,l(r.pathname)&&l(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!d.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var g=d.slice(-1)[0],y=(r.host||e.host)&&("."===g||".."===g)||""===g,b=0,w=d.length;w>=0;w--)g=d[w],"."==g?d.splice(w,1):".."===g?(d.splice(w,1),b++):b&&(d.splice(w,1),b--);if(!p&&!f)for(;b--;b)d.unshift("..");!p||""===d[0]||d[0]&&"/"===d[0].charAt(0)||d.unshift(""),y&&"/"!==d.join("/").substr(-1)&&d.push("");var E=""===d[0]||d[0]&&"/"===d[0].charAt(0);if(m){r.hostname=r.host=E?"":d.length?d.shift():"";var v=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return p=p||r.host&&d.length,p&&!E&&d.unshift(""),d.length?r.pathname=d.join("/"):(r.pathname=null,r.path=null),l(r.pathname)&&l(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},n.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{punycode:9,querystring:12}],15:[function(e,t,r){arguments[4][12][0].apply(r,arguments)},{"./decode":13,"./encode":14,dup:12}],14:[function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,i){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(i){var o=encodeURIComponent(n(i))+r;return Array.isArray(e[i])?e[i].map(function(e){return o+encodeURIComponent(n(e))}).join(t):o+encodeURIComponent(n(e[i]))}).join(t):i?encodeURIComponent(n(i))+r+encodeURIComponent(n(e)):""}},{}],13:[function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,r,i){t=t||"&",r=r||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var u=e.length;a>0&&u>a&&(u=a);for(var c=0;c=0?(l=d.substr(0,m),h=d.substr(m+1)):(l=d,h=""),p=decodeURIComponent(l),f=decodeURIComponent(h),n(o,p)?Array.isArray(o[p])?o[p].push(f):o[p]=[o[p],f]:o[p]=f}return o}},{}],12:[function(e,t,r){"use strict";r.decode=r.parse=e("./decode"),r.encode=r.stringify=e("./encode")},{"./decode":10,"./encode":11}],11:[function(e,t,r){"use strict";function n(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n0&&c>u&&(c=u);for(var l=0;l=0?(h=m.substr(0,v),p=m.substr(v+1)):(h=m,p=""),f=decodeURIComponent(h),d=decodeURIComponent(p),n(s,f)?i(s[f])?s[f].push(d):s[f]=[s[f],d]:s[f]=d}return s};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],9:[function(e,t,r){(function(e){(function(){!function(n){function i(e){throw RangeError(q[e])}function o(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function s(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(P,"."),n+o(e.split("."),t).join(".")}function a(e){for(var t,r,n=[],i=0,o=e.length;i=55296&&t<=56319&&i65535&&(e-=65536,t+=U(e>>>10&1023|55296),e=56320|1023&e),t+=U(e)}).join("")}function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:_}function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function h(e,t,r){var n=0;for(e=r?N(e/A):e>>1,e+=N(e/t);e>O*C>>1;n+=_)e=N(e/O);return N(n+(O+1)*e/(e+x))}function p(e){var t,r,n,o,s,a,l,p,f,d,m=[],v=e.length,g=0,y=T,b=R;for(r=e.lastIndexOf(k),r<0&&(r=0),n=0;n=128&&i("not-basic"),m.push(e.charCodeAt(n));for(o=r>0?r+1:0;o=v&&i("invalid-input"),p=c(e.charCodeAt(o++)),(p>=_||p>N((E-g)/a))&&i("overflow"),g+=p*a,f=l<=b?S:l>=b+C?C:l-b,!(pN(E/d)&&i("overflow"),a*=d;t=m.length+1,b=h(g-s,t,0==s),N(g/t)>E-y&&i("overflow"),y+=N(g/t),g%=t,m.splice(g++,0,y)}return u(m)}function f(e){var t,r,n,o,s,u,c,p,f,d,m,v,g,y,b,w=[];for(e=a(e),v=e.length,t=T,r=0,s=R,u=0;u=t&&mN((E-r)/g)&&i("overflow"),r+=(c-t)*g,t=c,u=0;uE&&i("overflow"),m==t){for(p=r,f=_;d=f<=s?S:f>=s+C?C:f-s,!(p= 0x80 (not a basic code point)","invalid-input":"Invalid input"},O=_-S,N=Math.floor,U=String.fromCharCode;if(b={version:"1.3.2",ucs2:{decode:a,encode:u},decode:p,encode:f,toASCII:m,toUnicode:d},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return b});else if(v&&g)if(t.exports==v)g.exports=b;else for(w in b)b.hasOwnProperty(w)&&(v[w]=b[w]);else n.punycode=b}(this)}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,r){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function o(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!o(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,r,n,o,u,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}if(r=this._events[e],a(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:o=Array.prototype.slice.call(arguments,1),r.apply(this,o)}else if(s(r))for(o=Array.prototype.slice.call(arguments,1),c=r.slice(),n=c.length,u=0;u0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var r,n,o,a;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],o=r.length,n=-1,r===t||i(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(a=o;a-- >0;)if(r[a]===t||r[a].listener&&r[a].listener===t){n=a;break}if(n<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],i(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},{}],3:[function(e,t,r){(function(t,n){(function(){"use strict";function n(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(e,t){if(n()=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),o.alloc(+e)}function v(e,t){if(o.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return X(e).length;default:if(n)return V(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return L(this,t,r);case"base64":return R(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function y(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function b(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:w(e,t,r,n,i);if("number"==typeof t)return t&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):w(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function w(e,t,r,n,i){function o(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,r/=2}var c;if(i){var l=-1;for(c=r;ca&&(r=a-u),c=r;c>=0;c--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s239?4:o>223?3:o>191?2:1;if(i+a<=r){var u,c,l,h;switch(a){case 1:o<128&&(s=o);break;case 2:u=e[i+1],128==(192&u)&&(h=(31&o)<<6|63&u)>127&&(s=h);break;case 3:u=e[i+1],c=e[i+2],128==(192&u)&&128==(192&c)&&(h=(15&o)<<12|(63&u)<<6|63&c)>2047&&(h<55296||h>57343)&&(s=h);break;case 4:u=e[i+1],c=e[i+2],l=e[i+3],128==(192&u)&&128==(192&c)&&128==(192&l)&&(h=(15&o)<<18|(63&u)<<12|(63&c)<<6|63&l)>65535&&h<1114112&&(s=h)}}null===s?(s=65533,a=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|1023&s),n.push(s),i+=a}return k(n)}function k(e){var t=e.length;if(t<=Q)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,r,n,i,s){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function U(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function D(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function M(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(e,t,r,n,i){return i||M(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(e,t,r,n,23,4),r+4}function B(e,t,r,n,i){return i||M(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(e,t,r,n,52,8),r+8}function F(e){if(e=z(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function z(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function H(e){return e<16?"0"+e.toString(16):e.toString(16)}function V(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],s=0;s55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function K(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function X(e){return J.toByteArray(F(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Y(e){return e!==e}var J=e("base64-js"),Z=e("ieee754"),$=e("isarray");r.Buffer=o,r.SlowBuffer=m,r.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),r.kMaxLength=n(),o.poolSize=8192,o._augment=function(e){return e.__proto__=o.prototype,e},o.from=function(e,t,r){return s(null,e,t,r)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(e,t,r){return u(null,e,t,r)},o.allocUnsafe=function(e){return c(null,e)},o.allocUnsafeSlow=function(e){return c(null,e)},o.isBuffer=function(e){return!(null==e||!e._isBuffer)},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,s=Math.min(r,n);i0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,r,n,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0), +void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var s=i-n,a=r-t,u=Math.min(s,a),c=this.slice(n,i),l=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return E(this,e,t,r);case"utf8":case"utf-8":return _(this,e,t,r);case"ascii":return S(this,e,t,r);case"latin1":case"binary":return C(this,e,t,r);case"base64":return x(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUInt8=function(e,t){return t||O(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return t||O(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return t||O(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||O(e,t,this.length);for(var n=this[e],i=1,o=0;++o=i&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||O(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){t||O(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){t||O(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return t||O(e,4,this.length),Z.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return t||O(e,4,this.length),Z.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return t||O(e,8,this.length),Z.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return t||O(e,8,this.length),Z.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t|=0,r|=0,!n){N(this,e,t,r,Math.pow(2,8*r)-1,0)}var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,1,255,0),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):U(this,e,t,!0),t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):U(this,e,t,!1),t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,1,127,-128),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):U(this,e,t,!0),t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):U(this,e,t,!1),t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},o.prototype.writeFloatLE=function(e,t,r){return j(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return j(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return B(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return B(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(s<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var s;if("number"==typeof e)for(s=t;s>1,l=-7,h=r?i-1:0,p=r?-1:1,f=e[t+h];for(h+=p,o=f&(1<<-l)-1,f>>=-l,l+=a;l>0;o=256*o+e[t+h],h+=p,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+e[t+h],h+=p,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),o-=c}return(f?-1:1)*s*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,d=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),t+=s+h>=1?p/u:p*Math.pow(2,1-h),t*u>=2&&(s++,u/=2),s+h>=l?(a=0,s=l):s+h>=1?(a=(t*u-1)*Math.pow(2,i),s+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;e[r+f]=255&a,f+=d,a/=256,i-=8);for(s=s<0;e[r+f]=255&s,f+=d,s/=256,c-=8);e[r+f-d]|=128*m}},{}],1:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function i(e){var t=n(e),r=t[0],i=t[1];return 3*(r+i)/4-i}function o(e,t,r){return 3*(t+r)/4-r}function s(e){var t,r,i=n(e),s=i[0],a=i[1],u=new p(o(e,s,a)),c=0,l=a>0?s-4:s;for(r=0;r>16&255,u[c++]=t>>8&255,u[c++]=255&t;return 2===a&&(t=h[e.charCodeAt(r)]<<2|h[e.charCodeAt(r+1)]>>4,u[c++]=255&t),1===a&&(t=h[e.charCodeAt(r)]<<10|h[e.charCodeAt(r+1)]<<4|h[e.charCodeAt(r+2)]>>2,u[c++]=t>>8&255,u[c++]=255&t),u}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function u(e,t,r){for(var n,i=[],o=t;os?s:o+16383));return 1===n?(t=e[r-1],i.push(l[t>>2]+l[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(l[t>>10]+l[t>>4&63]+l[t<<2&63]+"=")),i.join("")}r.byteLength=i,r.toByteArray=s,r.fromByteArray=c;for(var l=[],h=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,m=f.length;d1&&(e="Multiple configuration errors:\n"+t.join("\n")),e)throw i.util.error(new Error,{name:"InvalidEndpoint",message:e})},shouldDisableBodySigning:function(e){var t=this.getSignerClass();return!0===this.config.s3DisableBodySigning&&t===i.Signers.V4&&"https:"===e.httpRequest.endpoint.protocol},setupRequestListeners:function(e){if(e.addListener("validate",this.validateScheme),e.addListener("validate",this.validateBucketName,!0),e.addListener("validate",this.optInUsEast1RegionalEndpoint,!0),e.removeListener("validate",i.EventListeners.Core.VALIDATE_REGION),e.addListener("build",this.addContentType),e.addListener("build",this.computeContentMd5),e.addListener("build",this.computeSseCustomerKeyMd5),e.addListener("build",this.populateURI),e.addListener("afterBuild",this.addExpect100Continue),e.addListener("extractError",this.extractError),e.addListener("extractData",i.util.hoistPayloadMember),e.addListener("extractData",this.extractData),e.addListener("extractData",this.extractErrorFrom200Response),e.addListener("beforePresign",this.prepareSignedUrl),this.shouldDisableBodySigning(e)&&(e.removeListener("afterBuild",i.EventListeners.Core.COMPUTE_SHA256),e.addListener("afterBuild",this.disableBodySigning)),"createBucket"!==e.operation&&o.isArnInParam(e,"Bucket"))return e.service._parsedArn=i.util.ARN.parse(e.params.Bucket),e.removeListener("validate",this.validateBucketName),e.removeListener("build",this.populateURI),"s3"===e.service._parsedArn.service?(e.addListener("validate",o.validateS3AccessPointArn),e.addListener("validate",this.validateArnResourceType)):"s3-outposts"===e.service._parsedArn.service&&(e.addListener("validate",o.validateOutpostsAccessPointArn),e.addListener("validate",o.validateOutpostsArn)),e.addListener("validate",o.validateArnRegion),e.addListener("validate",o.validateArnAccount),e.addListener("validate",o.validateArnService),e.addListener("build",this.populateUriFromAccessPointArn),void e.addListener("build",o.validatePopulateUriFromArn);e.addListener("validate",this.validateBucketEndpoint),e.addListener("validate",this.correctBucketRegionFromCache),e.onAsync("extractError",this.requestBucketRegion),i.util.isBrowser()&&e.onAsync("retry",this.reqRegionForNetworkingError)},validateScheme:function(e){var t=e.params,r=e.httpRequest.endpoint.protocol;if((t.SSECustomerKey||t.CopySourceSSECustomerKey)&&"https:"!==r)throw i.util.error(new Error,{code:"ConfigError",message:"Cannot send SSE keys over HTTP. Set 'sslEnabled'to 'true' in your configuration"})},validateBucketEndpoint:function(e){if(!e.params.Bucket&&e.service.config.s3BucketEndpoint){throw i.util.error(new Error,{code:"ConfigError",message:"Cannot send requests to root API with `s3BucketEndpoint` set."})}},validateArnResourceType:function(e){var t=e.service._parsedArn.resource;if(0!==t.indexOf("accesspoint:")&&0!==t.indexOf("accesspoint/"))throw i.util.error(new Error,{code:"InvalidARN",message:"ARN resource should begin with 'accesspoint/'"})},validateBucketName:function(e){var t=e.service,r=t.getSignatureVersion(e),n=e.params&&e.params.Bucket,a=e.params&&e.params.Key,o=n&&n.indexOf("/");if(n&&o>=0)if("string"==typeof a&&o>0){e.params=i.util.copy(e.params);var s=n.substr(o+1)||"";e.params.Key=s+"/"+a,e.params.Bucket=n.substr(0,o)}else if("v4"===r){var u="Bucket names cannot contain forward slashes. Bucket: "+n;throw i.util.error(new Error,{code:"InvalidBucket",message:u})}},isValidAccelerateOperation:function(e){return-1===["createBucket","deleteBucket","listBuckets"].indexOf(e)},optInUsEast1RegionalEndpoint:function(e){var t=e.service,r=t.config;if(r.s3UsEast1RegionalEndpoint=a(t._originalConfig,{env:"AWS_S3_US_EAST_1_REGIONAL_ENDPOINT",sharedConfig:"s3_us_east_1_regional_endpoint",clientConfig:"s3UsEast1RegionalEndpoint"}),!(t._originalConfig||{}).endpoint&&"us-east-1"===e.httpRequest.region&&"regional"===r.s3UsEast1RegionalEndpoint&&e.httpRequest.endpoint.hostname.indexOf("s3.amazonaws.com")>=0){var i=r.endpoint.indexOf(".amazonaws.com");regionalEndpoint=r.endpoint.substring(0,i)+".us-east-1"+r.endpoint.substring(i),e.httpRequest.updateEndpoint(regionalEndpoint)}},populateURI:function(e){var t=e.httpRequest,r=e.params.Bucket,i=e.service,n=t.endpoint;if(r&&!i.pathStyleBucketName(r)){i.config.useAccelerateEndpoint&&i.isValidAccelerateOperation(e.operation)?i.config.useDualstack?n.hostname=r+".s3-accelerate.dualstack.amazonaws.com":n.hostname=r+".s3-accelerate.amazonaws.com":i.config.s3BucketEndpoint||(n.hostname=r+"."+n.hostname);var a=n.port;n.host=80!==a&&443!==a?n.hostname+":"+n.port:n.hostname,t.virtualHostedBucket=r,i.removeVirtualHostedBucketFromPath(e)}},removeVirtualHostedBucketFromPath:function(e){var t=e.httpRequest,r=t.virtualHostedBucket;if(r&&t.path){if(e.params&&e.params.Key){var n="/"+i.util.uriEscapePath(e.params.Key);if(0===t.path.indexOf(n)&&(t.path.length===n.length||"?"===t.path[n.length]))return}t.path=t.path.replace(new RegExp("/"+r),""),"/"!==t.path[0]&&(t.path="/"+t.path)}},populateUriFromAccessPointArn:function(e){var t=e.service._parsedArn,r="s3-outposts"===t.service,n=r?"."+t.outpostId:"",a=r?"s3-outposts":"s3-accesspoint",o=!r&&e.service.config.useDualstack?".dualstack":"",u=e.httpRequest.endpoint,c=s.getEndpointSuffix(t.region),l=e.service.config.s3UseArnRegion;u.hostname=[t.accessPoint+"-"+t.accountId+n,a+o,l?t.region:e.service.config.region,c].join("."),u.host=u.hostname;var d=i.util.uriEscape(e.params.Bucket),p=e.httpRequest.path;e.httpRequest.path=p.replace(new RegExp("/"+d),""),"/"!==e.httpRequest.path[0]&&(e.httpRequest.path="/"+e.httpRequest.path),e.httpRequest.region=t.region},addExpect100Continue:function(e){var t=e.httpRequest.headers["Content-Length"];i.util.isNode()&&(t>=1048576||e.params.Body instanceof i.util.stream.Stream)&&(e.httpRequest.headers.Expect="100-continue")},addContentType:function(e){var t=e.httpRequest;if("GET"===t.method||"HEAD"===t.method)return void delete t.headers["Content-Type"];t.headers["Content-Type"]||(t.headers["Content-Type"]="application/octet-stream");var r=t.headers["Content-Type"];if(i.util.isBrowser())if("string"!=typeof t.body||r.match(/;\s*charset=/)){var n=function(e,t,r){return t+r.toUpperCase()};t.headers["Content-Type"]=r.replace(/(;\s*charset=)(.+)$/,n)}else{t.headers["Content-Type"]+="; charset=UTF-8"}},computableChecksumOperations:{putBucketCors:!0,putBucketLifecycle:!0,putBucketLifecycleConfiguration:!0,putBucketTagging:!0,deleteObjects:!0,putBucketReplication:!0,putObjectLegalHold:!0,putObjectRetention:!0,putObjectLockConfiguration:!0},willComputeChecksums:function(e){if(this.computableChecksumOperations[e.operation])return!0;if(!this.config.computeChecksums)return!1;if(!i.util.Buffer.isBuffer(e.httpRequest.body)&&"string"!=typeof e.httpRequest.body)return!1;var t=e.service.api.operations[e.operation].input.members;return!(!e.service.shouldDisableBodySigning(e)||Object.prototype.hasOwnProperty.call(e.httpRequest.headers,"presigned-expires")||!t.ContentMD5||e.params.ContentMD5)||!(e.service.getSignerClass(e)===i.Signers.V4&&t.ContentMD5&&!t.ContentMD5.required)&&(!(!t.ContentMD5||e.params.ContentMD5)||void 0)},computeContentMd5:function(e){if(e.service.willComputeChecksums(e)){var t=i.util.crypto.md5(e.httpRequest.body,"base64");e.httpRequest.headers["Content-MD5"]=t}},computeSseCustomerKeyMd5:function(e){var t={SSECustomerKey:"x-amz-server-side-encryption-customer-key-MD5",CopySourceSSECustomerKey:"x-amz-copy-source-server-side-encryption-customer-key-MD5"};i.util.each(t,function(t,r){if(e.params[t]){var n=i.util.crypto.md5(e.params[t],"base64");e.httpRequest.headers[r]=n}})},pathStyleBucketName:function(e){return!!this.config.s3ForcePathStyle||!this.config.s3BucketEndpoint&&(!o.dnsCompatibleBucketName(e)||!(!this.config.sslEnabled||!e.match(/\./)))},extractErrorFrom200Response:function(e){if(u[e.request.operation]){var t=e.httpResponse;if(t.body&&t.body.toString().match("")){e.data=null;throw(this.service?this.service:this).extractError(e),e.error}if(!t.body||!t.body.toString().match(/<[\w_]/))throw e.data=null,i.util.error(new Error,{code:"InternalError",message:"S3 aborted request"})}},retryableError:function(e,t){return!(!u[t.operation]||200!==e.statusCode)||(!t._requestRegionForBucket||!t.service.bucketRegionCache[t._requestRegionForBucket])&&(!(!e||"RequestTimeout"!==e.code)||(e&&-1!=c.indexOf(e.code)&&e.region&&e.region!=t.httpRequest.region?(t.httpRequest.region=e.region,301===e.statusCode&&t.service.updateReqBucketRegion(t),!0):i.Service.prototype.retryableError.call(this,e,t)))},updateReqBucketRegion:function(e,t){var r=e.httpRequest;if("string"==typeof t&&t.length&&(r.region=t),r.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)){var n=e.service,a=n.config,o=a.s3BucketEndpoint;o&&delete a.s3BucketEndpoint;var s=i.util.copy(a);delete s.endpoint,s.region=r.region,r.endpoint=new i.S3(s).endpoint,n.populateURI(e),a.s3BucketEndpoint=o,r.headers.Host=r.endpoint.host,"validate"===e._asm.currentState&&(e.removeListener("build",n.populateURI),e.addListener("build",n.removeVirtualHostedBucketFromPath))}},extractData:function(e){var t=e.request;if("getBucketLocation"===t.operation){var r=e.httpResponse.body.toString().match(/>(.+)<\/Location/);delete e.data._,e.data.LocationConstraint=r?r[1]:""}var i=t.params.Bucket||null;if("deleteBucket"!==t.operation||"string"!=typeof i||e.error){var n=e.httpResponse.headers||{},a=n["x-amz-bucket-region"]||null;if(!a&&"createBucket"===t.operation&&!e.error){var o=t.params.CreateBucketConfiguration;a=o?"EU"===o.LocationConstraint?"eu-west-1":o.LocationConstraint:"us-east-1"}a&&i&&a!==t.service.bucketRegionCache[i]&&(t.service.bucketRegionCache[i]=a)}else t.service.clearBucketRegionCache(i);t.service.extractRequestIds(e)},extractError:function(e){var t={304:"NotModified",403:"Forbidden",400:"BadRequest",404:"NotFound"},r=e.request,n=e.httpResponse.statusCode,a=e.httpResponse.body||"",o=e.httpResponse.headers||{},s=o["x-amz-bucket-region"]||null,u=r.params.Bucket||null,c=r.service.bucketRegionCache;s&&u&&s!==c[u]&&(c[u]=s);var l;if(t[n]&&0===a.length)u&&!s&&(l=c[u]||null)!==r.httpRequest.region&&(s=l),e.error=i.util.error(new Error,{code:t[n],message:null,region:s});else{var d=(new i.XML.Parser).parse(a.toString());d.Region&&!s?(s=d.Region,u&&s!==c[u]&&(c[u]=s)):!u||s||d.Region||(l=c[u]||null)!==r.httpRequest.region&&(s=l),e.error=i.util.error(new Error,{code:d.Code||n,message:d.Message||null,region:s})}r.service.extractRequestIds(e)},requestBucketRegion:function(e,t){var r=e.error,n=e.request,a=n.params.Bucket||null;if(!r||!a||r.region||"listObjects"===n.operation||i.util.isNode()&&"headBucket"===n.operation||400===r.statusCode&&"headObject"!==n.operation||-1===c.indexOf(r.code))return t();var o=i.util.isNode()?"headBucket":"listObjects",s={Bucket:a};"listObjects"===o&&(s.MaxKeys=0);var u=n.service[o](s);u._requestRegionForBucket=a,u.send(function(){var e=n.service.bucketRegionCache[a]||null;r.region=e,t()})},reqRegionForNetworkingError:function(e,t){if(!i.util.isBrowser())return t();var r=e.error,n=e.request,a=n.params.Bucket;if(!r||"NetworkingError"!==r.code||!a||"us-east-1"===n.httpRequest.region)return t();var s=n.service,u=s.bucketRegionCache,c=u[a]||null;if(c&&c!==n.httpRequest.region)s.updateReqBucketRegion(n,c),t();else if(o.dnsCompatibleBucketName(a))if(n.httpRequest.virtualHostedBucket){var l=s.listObjects({Bucket:a,MaxKeys:0});s.updateReqBucketRegion(l,"us-east-1"),l._requestRegionForBucket=a,l.send(function(){var e=s.bucketRegionCache[a]||null;e&&e!==n.httpRequest.region&&s.updateReqBucketRegion(n,e),t()})}else t();else s.updateReqBucketRegion(n,"us-east-1"),"us-east-1"!==u[a]&&(u[a]="us-east-1"),t()},bucketRegionCache:{},clearBucketRegionCache:function(e){var t=this.bucketRegionCache;e?"string"==typeof e&&(e=[e]):e=Object.keys(t);for(var r=0;r=1&&t.doneParts===t.numParts&&t.finishMultiPart()}))}r&&t.fillQueue.call(t)},abort:function(){var e=this;!0===e.isDoneChunking&&1===e.totalPartNumbers&&e.singlePart?e.singlePart.abort():e.cleanup(i.util.error(new Error("Request aborted by user"),{code:"RequestAbortedError",retryable:!1}))},validateBody:function(){var e=this;if(e.body=e.service.config.params.Body,"string"==typeof e.body)e.body=i.util.buffer.toBuffer(e.body);else if(!e.body)throw new Error("params.Body is required");e.sliceFn=i.util.arraySliceFn(e.body)},bindServiceObject:function(e){e=e||{};var t=this;if(t.service){var r=t.service,n=i.util.copy(r._originalConfig||{});n.signatureVersion=r.getSignatureVersion(),t.service=new r.constructor.__super__(n),t.service.config.params=i.util.merge(t.service.config.params||{},e)}else t.service=new i.S3({params:e})},adjustTotalBytes:function(){var e=this;try{e.totalBytes=n(e.body)}catch(e){}if(e.totalBytes){var t=Math.ceil(e.totalBytes/e.maxTotalParts);t>e.partSize&&(e.partSize=t)}else e.totalBytes=void 0},isDoneChunking:!1,partPos:0,totalChunkedBytes:0,totalUploadedBytes:0,totalBytes:void 0,numParts:0,totalPartNumbers:0,activeParts:0,doneParts:0,parts:null,completeInfo:null,failed:!1,multipartReq:null,partBuffers:null,partBufferLength:0,fillBuffer:function(){var e=this,t=n(e.body);if(0===t)return e.isDoneChunking=!0,e.numParts=1,void e.nextChunk(e.body);for(;e.activeParts=e.queueSize)){var t=e.body.read(e.partSize-e.partBufferLength)||e.body.read();if(t&&(e.partBuffers.push(t),e.partBufferLength+=t.length,e.totalChunkedBytes+=t.length),e.partBufferLength>=e.partSize){var r=1===e.partBuffers.length?e.partBuffers[0]:a.concat(e.partBuffers);if(e.partBuffers=[],e.partBufferLength=0,r.length>e.partSize){var i=r.slice(e.partSize);e.partBuffers.push(i),e.partBufferLength+=i.length,r=r.slice(0,e.partSize)}e.nextChunk(r)}e.isDoneChunking&&!e.isDoneSending&&(r=1===e.partBuffers.length?e.partBuffers[0]:a.concat(e.partBuffers),e.partBuffers=[],e.partBufferLength=0,e.totalBytes=e.totalChunkedBytes,e.isDoneSending=!0,(0===e.numParts||r.length>0)&&(e.numParts++,e.nextChunk(r))),e.body.read(0)}},nextChunk:function(e){var t=this;if(t.failed)return null;var r=++t.totalPartNumbers;if(t.isDoneChunking&&1===r){var n={Body:e};this.tags&&(n.Tagging=this.getTaggingHeader());var a=t.service.putObject(n);return a._managedUpload=t,a.on("httpUploadProgress",t.progress).send(t.finishSinglePart),t.singlePart=a,null}if(t.service.config.params.ContentMD5){var o=i.util.error(new Error("The Content-MD5 you specified is invalid for multi-part uploads."),{code:"InvalidDigest",retryable:!1});return t.cleanup(o),null}if(t.completeInfo[r]&&null!==t.completeInfo[r].ETag)return null;t.activeParts++,t.service.config.params.UploadId?t.uploadPart(e,r):t.multipartReq?t.queueChunks(e,r):(t.multipartReq=t.service.createMultipartUpload(),t.multipartReq.on("success",function(e){t.service.config.params.UploadId=e.data.UploadId,t.multipartReq=null}),t.queueChunks(e,r),t.multipartReq.on("error",function(e){t.cleanup(e)}),t.multipartReq.send())},getTaggingHeader:function(){for(var e=[],t=0;t