浏览代码

Merge branch 'master' into dash-edit-mode

Torkel Ödegaard 9 年之前
父节点
当前提交
1bb8192a38
共有 100 个文件被更改,包括 165 次插入48035 次删除
  1. 1 1
      .editorconfig
  2. 3 0
      .floo
  3. 12 0
      .flooignore
  4. 3 3
      .github/CONTRIBUTING.md
  5. 14 9
      .github/ISSUE_TEMPLATE.md
  6. 2 1
      .gitignore
  7. 1 1
      .hooks/pre-commit
  8. 1 1
      .jscs.json
  9. 128 1
      CHANGELOG.md
  10. 0 351
      Godeps/Godeps.json
  11. 0 2
      Godeps/_workspace/.gitignore
  12. 0 105
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/error.go
  13. 0 135
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/types.go
  14. 0 103
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go
  15. 0 120
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/client/client.go
  16. 0 45
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/client/default_retryer.go
  17. 0 270
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config.go
  18. 0 357
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types.go
  19. 0 139
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
  20. 0 113
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers_test.go
  21. 0 144
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go
  22. 0 134
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator_test.go
  23. 0 85
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go
  24. 0 73
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go
  25. 0 220
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
  26. 0 62
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go
  27. 0 173
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go
  28. 0 159
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider_test.go
  29. 0 73
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
  30. 0 147
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go
  31. 0 100
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider_test.go
  32. 0 44
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
  33. 0 130
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
  34. 0 76
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
  35. 0 43
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
  36. 0 101
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go
  37. 0 116
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
  38. 0 98
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/logger.go
  39. 0 140
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers.go
  40. 0 47
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers_test.go
  41. 0 279
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request.go
  42. 0 455
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_pagination_test.go
  43. 0 261
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_test.go
  44. 0 82
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/retryer.go
  45. 0 105
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/session/session.go
  46. 0 20
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/session/session_test.go
  47. 0 88
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types.go
  48. 0 56
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go
  49. 0 8
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/version.go
  50. 0 31
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints.go
  51. 0 77
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints.json
  52. 0 89
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_map.go
  53. 0 28
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go
  54. 0 32
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build.go
  55. 0 860
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go
  56. 0 54
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal.go
  57. 0 816
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go
  58. 0 33
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build.go
  59. 0 1482
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go
  60. 0 223
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/queryutil/queryutil.go
  61. 0 29
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal.go
  62. 0 33
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_error.go
  63. 0 1418
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go
  64. 0 217
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/build.go
  65. 0 45
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/payload.go
  66. 0 174
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/unmarshal.go
  67. 0 287
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil/build.go
  68. 0 260
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil/unmarshal.go
  69. 0 43
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go
  70. 0 364
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4.go
  71. 0 245
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go
  72. 0 65
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go
  73. 0 89
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json
  74. 0 101
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go
  75. 0 41
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints_test.go
  76. 0 32
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go
  77. 0 1051
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/build_test.go
  78. 0 54
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go
  79. 0 1132
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal_test.go
  80. 0 33
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/build.go
  81. 0 2139
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/build_test.go
  82. 0 223
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go
  83. 0 29
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
  84. 0 33
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
  85. 0 1878
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_test.go
  86. 0 254
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
  87. 0 45
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go
  88. 0 183
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
  89. 0 287
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
  90. 0 260
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go
  91. 0 105
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go
  92. 0 42
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/functional_test.go
  93. 0 365
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/v4.go
  94. 0 252
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/v4_test.go
  95. 0 136
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/waiter/waiter.go
  96. 0 391
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/waiter/waiter_test.go
  97. 0 1481
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/api.go
  98. 0 337
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/examples_test.go
  99. 0 125
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/service.go
  100. 0 24756
      Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/api.go

+ 1 - 1
.editorconfig

@@ -2,7 +2,7 @@
 root = true
 
 [*.go]
-indent_style = tabs
+indent_style = tab
 indent_size = 2
 charset = utf-8
 trim_trailing_whitespace = true

+ 3 - 0
.floo

@@ -0,0 +1,3 @@
+{
+  "url": "https://floobits.com/raintank/grafana"
+}

+ 12 - 0
.flooignore

@@ -0,0 +1,12 @@
+#*
+*.o
+*.pyc
+*.pyo
+*~
+extern/
+node_modules/
+tmp/
+data/
+vendor/
+public_gen/
+dist/

+ 3 - 3
.github/CONTRIBUTING.md

@@ -12,11 +12,11 @@ grunt karma:dev
 
 ### Run tests for backend assets before commit
 ```
-test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
+test -z "$(gofmt -s -l . | grep -v -E 'vendor/(github.com|golang.org|gopkg.in)' | tee /dev/stderr)"
 ```
 
 ### Run tests for frontend assets before commit
 ```
-grunt test
-godep go test -v ./pkg/...
+npm test
+go test -v ./pkg/...
 ```

+ 14 - 9
.github/ISSUE_TEMPLATE.md

@@ -1,12 +1,17 @@
-Thank you! For helping us make Grafana even better.
+* **I'm submitting a ...**
+- [ ] Bug report
+- [ ] Feature request
+- [ ] Question / Support request: **Please do not** open a github issue. [Support Options](http://grafana.org/support/)
 
-To help us respond to your issues faster, please make sure to add as much information as possible.
+Please include this information:
+- What Grafana version are you using?
+- What datasource are you using?
+- What OS are you running grafana on?
+- What did you do?
+- What was the expected result?
+- What happened instead?
 
-If this issue is about a plugin, please open the issue in that repository.
+**IMPORTANT** If it relates to metric data viz:
+- An image or text representation of your metric query
+- The raw query and response for the network request (check this in chrome dev tools network tab, here you can see metric requests and other request, please include the request body and request response)
 
-Start your issues title with [Feature Request] / [Bug] / [Question] or no tag if your unsure.
-
-Ex
-* What grafana version are you using?
-* What datasource are you using?
-* What OS are you running grafana on?

+ 2 - 1
.gitignore

@@ -25,6 +25,7 @@ public/css/*.min.css
 *.swp
 .idea/
 *.iml
+.vscode/
 
 /data/*
 /bin/*
@@ -37,4 +38,4 @@ profile.cov
 .notouch
 /pkg/cmd/grafana-cli/grafana-cli
 /pkg/cmd/grafana-server/grafana-server
-/examples/*/dist
+/examples/*/dist

+ 1 - 1
.hooks/pre-commit

@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
+test -z "$(gofmt -s -l . | grep -v vendor/src/ | tee /dev/stderr)"
 if [ $? -gt 0 ]; then
     echo "Some files aren't formatted, please run 'go fmt ./pkg/...' to format your source code before committing"
     exit 1

+ 1 - 1
.jscs.json

@@ -10,4 +10,4 @@
     "disallowSpacesInsideArrayBrackets": true,
     "disallowSpacesInsideParentheses": true,
     "validateIndentation": 2
-}
+}

+ 128 - 1
CHANGELOG.md

@@ -1,4 +1,131 @@
-# 3.0.0-beta6 (unreleased)
+# 4.0-pre (unreleased)
+
+### Enhancements
+* **Login**: Adds option to disable username/password logins, closes [#4674](https://github.com/grafana/grafana/issues/4674)
+* **SingleStat**: Add seriename as option in singlestat panel, closes [#4740](https://github.com/grafana/grafana/issues/4740)
+* **Localization**: Week start day now dependant on browser locale setting, closes [#3003](https://github.com/grafana/grafana/issues/3003)
+* **Templating**: Update panel repeats for variables that change on time refresh, closes [#5021](https://github.com/grafana/grafana/issues/5021)
+* **Templating**: Add support for numeric and alphabetical sorting of variable values, closes [#2839](https://github.com/grafana/grafana/issues/2839)
+* **Elasticsearch**: Support to set Precision Threshold for Unique Count metric, closes [#4689](https://github.com/grafana/grafana/issues/4689)
+* **Navigation**: Add search to org swithcer, closes [#2609](https://github.com/grafana/grafana/issues/2609)
+* **Database**: Allow database config using one propertie, closes [#5456](https://github.com/grafana/grafana/pull/5456)
+* **Graphite**: Add support for groupByNodes, closes [#5613](https://github.com/grafana/grafana/pull/5613)
+* **Influxdb**: Add support for elapsed(), closes [#5827](https://github.com/grafana/grafana/pull/5827)
+* **OAuth**: Add support for generic oauth, closes [#4718](https://github.com/grafana/grafana/pull/4718)
+* **Cloudwatch**: Add support to expand multi select template variable, closes [#5003](https://github.com/grafana/grafana/pull/5003)
+* **Graph Panel**: Now supports flexible lower/upper bounds on Y-Max and Y-Min, PR [#5720](https://github.com/grafana/grafana/pull/5720)
+* **Background Tasks**: Now support automatic purging of old snapshots, closes [#4087](https://github.com/grafana/grafana/issues/4087)
+* **Background Tasks**: Now support automatic purging of old rendered images, closes [#2172](https://github.com/grafana/grafana/issues/2172)
+
+### Breaking changes
+* **SystemD**: Change systemd description, closes [#5971](https://github.com/grafana/grafana/pull/5971)
+* **lodash upgrade**: Upgraded lodash from 2.4.2 to 4.15.0, this contains a number of breaking changes that could effect plugins. closes [#6021](https://github.com/grafana/grafana/pull/6021)
+
+### Bugfixes
+* **Table Panel**: Fixed problem when switching to Mixed datasource in metrics tab, fixes [#5999](https://github.com/grafana/grafana/pull/5999)
+* **Playlist**: Fixed problem with play order not matching order defined in playlist, fixes [#5467](https://github.com/grafana/grafana/pull/5467)
+* **Graph panel**: Fixed problem with auto decimals on y axis when datamin=datamax, fixes [#6070](https://github.com/grafana/grafana/pull/6070)
+* **Snapshot**: Can view embedded panels/png rendered panels in snapshots without login, fixes [#3769](https://github.com/grafana/grafana/pull/3769)
+* **Elasticsearch**: Fix for query template variable when looking up terms without query, no longer relies on elasticsearch default field, fixes [#3887](https://github.com/grafana/grafana/pull/3887)
+* **Elasticsearch**: Fix for displaying IP address used in terms aggregations, fixes [#4393](https://github.com/grafana/grafana/pull/4393)
+* **PNG Rendering**: Fix for server side rendering when using auth proxy, fixes [#5906](https://github.com/grafana/grafana/pull/5906)
+
+# 3.1.2 (unreleased)
+* **Templating**: Fixed issue when combining row & panel repeats, fixes [#5790](https://github.com/grafana/grafana/issues/5790)
+* **Drag&Drop**: Fixed issue with drag and drop in latest Chrome(51+), fixes [#5767](https://github.com/grafana/grafana/issues/5767)
+* **Internal Metrics**: Fixed issue with dots in instance_name when sending internal metrics to Graphite, fixes [#5739](https://github.com/grafana/grafana/issues/5739)
+* **Grafana-CLI**: Add default plugin path for MAC OS, fixes [#5806](https://github.com/grafana/grafana/issues/5806)
+* **Grafana-CLI**: Improve error message for upgrade-all command, fixes [#5885](https://github.com/grafana/grafana/issues/5885)
+
+# 3.1.1 (2016-08-01)
+* **IFrame embedding**: Fixed issue of using full iframe height, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
+* **Panel PNG rendering**: Fixed issue detecting render completion, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
+* **Elasticsearch**: Fixed issue with templating query and json parse error, fixes [#5615](https://github.com/grafana/grafana/issues/5615)
+* **Tech**: Upgraded JQuery to 2.2.4 to fix Security vulnerabilitie in 2.1.4, fixes [#5627](https://github.com/grafana/grafana/issues/5627)
+* **Graphite**: Fixed issue with mixed data sources and Graphite, fixes [#5617](https://github.com/grafana/grafana/issues/5617)
+* **Templating**: Fixed issue with template variable query was issued multiple times during dashboard load, fixes [#5637](https://github.com/grafana/grafana/issues/5637)
+* **Zoom**: Fixed issues with zoom in and out on embedded (iframed) panel, fixes [#4489](https://github.com/grafana/grafana/issues/4489), [#5666](https://github.com/grafana/grafana/issues/5666)
+
+# 3.1.0 stable (2016-07-12)
+
+### Bugfixes & Enhancements,
+* **User Alert Notices**: Backend error alert popups did not show properly, fixes [#5435](https://github.com/grafana/grafana/issues/5435)
+* **Table**: Added sanitize HTML option to allow links in table cells, fixes [#4596](https://github.com/grafana/grafana/issues/4596)
+* **Apps**: App dashboards are automatically synced to DB at startup after plugin update, fixes [#5529](https://github.com/grafana/grafana/issues/5529)
+
+# 3.1.0-beta1 (2016-06-23)
+
+### Enhancements
+* **Dashboard Export/Import**: Dashboard export now templetize data sources and constant variables, users pick these on import, closes [#5084](https://github.com/grafana/grafana/issues/5084)
+* **Dashboard Url**: Time range changes updates url, closes [#458](https://github.com/grafana/grafana/issues/458)
+* **Dashboard Url**: Template variable change updates url, closes [#5002](https://github.com/grafana/grafana/issues/5002)
+* **Singlestat**: Add support for range to text mappings, closes [#1319](https://github.com/grafana/grafana/issues/1319)
+* **Graph**: Adds sort order options for graph tooltip, closes  [#1189](https://github.com/grafana/grafana/issues/1189)
+* **Theme**: Add default theme to config file [#5011](https://github.com/grafana/grafana/pull/5011)
+* **Page Footer**: Added page footer with links to docs, shows Grafana version and info if new version is available, closes [#4889](https://github.com/grafana/grafana/pull/4889)
+* **InfluxDB**: Add spread function, closes [#5211](https://github.com/grafana/grafana/issues/5211)
+* **Scripts**: Use restart instead of start for deb package script, closes [#5282](https://github.com/grafana/grafana/pull/5282)
+* **Logging**: Moved to structured logging lib, and moved to component specific level filters via config file, closes [#4590](https://github.com/grafana/grafana/issues/4590)
+* **OpenTSDB**: Support nested template variables in tag_values function, closes [#4398](https://github.com/grafana/grafana/issues/4398)
+* **Datasource**: Pending data source requests are cancelled before new ones are issues (Graphite & Prometheus), closes [#5321](https://github.com/grafana/grafana/issues/5321)
+
+### Breaking changes
+* **Logging** : Changed default logging output format (now structured into message, and key value pairs, with logger key acting as component). You can also no change in config to json log ouput.
+* **Graphite** : The Graph panel no longer have a Graphite PNG option. closes [#5367](https://github.com/grafana/grafana/issues/5367)
+
+### Bug fixes
+* **PNG rendering**: Fixed phantomjs rendering and y-axis label rotation. fixes [#5220](https://github.com/grafana/grafana/issues/5220)
+* **CLI**: The cli tool now supports reading plugin.json from dist/plugin.json. fixes [#5410](https://github.com/grafana/grafana/issues/5410)
+
+# 3.0.4 Patch release (2016-05-25)
+* **Panel**: Fixed blank dashboard issue when switching to other dashboard while in fullscreen edit mode, fixes [#5163](https://github.com/grafana/grafana/pull/5163)
+* **Templating**: Fixed issue with nested multi select variables and cascading and updating child variable selection state, fixes [#4861](https://github.com/grafana/grafana/pull/4861)
+* **Templating**: Fixed issue with using templated data source in another template variable query, fixes [#5165](https://github.com/grafana/grafana/pull/5165)
+* **Singlestat gauge**: Fixed issue with gauge render position, fixes [#5143](https://github.com/grafana/grafana/pull/5143)
+* **Home dashboard**: Fixes broken home dashboard api, fixes [#5167](https://github.com/grafana/grafana/issues/5167)
+
+# 3.0.3 Patch release (2016-05-23)
+* **Annotations**: Annotations can now use a template variable as data source, closes [#5054](https://github.com/grafana/grafana/issues/5054)
+* **Time picker**: Fixed issue timepicker and UTC when reading time from URL, fixes [#5078](https://github.com/grafana/grafana/issues/5078)
+* **CloudWatch**: Support for Multiple Account by AssumeRole, closes [#3522](https://github.com/grafana/grafana/issues/3522)
+* **Singlestat**: Fixed alignment and minium height issue, fixes [#5113](https://github.com/grafana/grafana/issues/5113), fixes [#4679](https://github.com/grafana/grafana/issues/4679)
+* **Share modal**: Fixed link when using grafana under dashboard sub url, fixes [#5109](https://github.com/grafana/grafana/issues/5109)
+* **Prometheus**: Fixed bug in query editor that caused it not to load when reloading page, fixes [#5107](https://github.com/grafana/grafana/issues/5107)
+* **Elasticsearch**: Fixed bug when template variable query returns numeric values, fixes [#5097](https://github.com/grafana/grafana/issues/5097), fixes [#5088](https://github.com/grafana/grafana/issues/5088)
+* **Logging**: Fixed issue with reading logging level value, fixes [#5079](https://github.com/grafana/grafana/issues/5079)
+* **Timepicker**: Fixed issue with timepicker and UTC when reading time from URL, fixes [#5078](https://github.com/grafana/grafana/issues/5078)
+* **Docs**: Added docs for org & user preferences HTTP API, closes [#5069](https://github.com/grafana/grafana/issues/5069)
+* **Plugin list panel**: Now shows correct enable state for apps when not enabled, fixes [#5068](https://github.com/grafana/grafana/issues/5068)
+* **Elasticsearch**: Templating & Annotation queries that use template variables are now formatted correctly, fixes [#5135](https://github.com/grafana/grafana/issues/5135)
+
+# 3.0.2 Patch release (2016-05-16)
+
+* **Templating**: Fixed issue mixing row repeat and panel repeats, fixes [#4988](https://github.com/grafana/grafana/issues/4988)
+* **Templating**: Fixed issue detecting dependencies in nested variables, fixes [#4987](https://github.com/grafana/grafana/issues/4987), fixes [#4986](https://github.com/grafana/grafana/issues/4986)
+* **Graph**: Fixed broken PNG rendering in graph panel, fixes [#5025](https://github.com/grafana/grafana/issues/5025)
+* **Graph**: Fixed broken xaxis on graph panel, fixes [#5024](https://github.com/grafana/grafana/issues/5024)
+
+* **Influxdb**: Fixes crash when hiding middle serie, fixes [#5005](https://github.com/grafana/grafana/issues/5005)
+
+# 3.0.1 Stable (2016-05-11)
+
+### Bug fixes
+* **Templating**: Fixed issue with new data source variable not persisting current selected value, fixes [#4934](https://github.com/grafana/grafana/issues/4934)
+
+# 3.0.0-beta7 (2016-05-02)
+
+### Bug fixes
+* **Dashboard title**: Fixed max dashboard title width (media query) for large screens,  fixes [#4859](https://github.com/grafana/grafana/issues/4859)
+* **Annotations**: Fixed issue with entering annotation edit view, fixes [#4857](https://github.com/grafana/grafana/issues/4857)
+* **Remove query**: Fixed issue with removing query for data sources without collapsable query editors, fixes [#4856](https://github.com/grafana/grafana/issues/4856)
+* **Graphite PNG**: Fixed issue graphite png rendering option, fixes [#4864](https://github.com/grafana/grafana/issues/4864)
+* **InfluxDB**: Fixed issue missing plus group by iconn, fixes [#4862](https://github.com/grafana/grafana/issues/4862)
+* **Graph**: Fixes missing line mode for thresholds, fixes [#4902](https://github.com/grafana/grafana/pull/4902)
+
+### Enhancements
+* **InfluxDB**: Added new functions moving_average and difference to query editor, closes [#4698](https://github.com/grafana/grafana/issues/4698)
+
+# 3.0.0-beta6 (2016-04-29)
 
 ### Enhancements
 * **Singlestat**: Support for gauges in singlestat panel. closes [#3688](https://github.com/grafana/grafana/pull/3688)

+ 0 - 351
Godeps/Godeps.json

@@ -1,351 +0,0 @@
-{
-	"ImportPath": "github.com/grafana/grafana",
-	"GoVersion": "go1.5.1",
-	"GodepVersion": "v60",
-	"Packages": [
-		"./pkg/..."
-	],
-	"Deps": [
-		{
-			"ImportPath": "github.com/BurntSushi/toml",
-			"Comment": "v0.1.0-21-g056c9bc",
-			"Rev": "056c9bc7be7190eaa7715723883caffa5f8fa3e4"
-		},
-		{
-			"ImportPath": "github.com/Unknwon/com",
-			"Rev": "d9bcf409c8a368d06c9b347705c381e7c12d54df"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/awserr",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/client",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/credentials",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/defaults",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/request",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/aws/session",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/endpoints",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/private/waiter",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/service/cloudwatch",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/aws/aws-sdk-go/service/ec2",
-			"Comment": "v1.0.0",
-			"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
-		},
-		{
-			"ImportPath": "github.com/bmizerany/assert",
-			"Comment": "release.r60-6-ge17e998",
-			"Rev": "e17e99893cb6509f428e1728281c2ad60a6b31e3"
-		},
-		{
-			"ImportPath": "github.com/bradfitz/gomemcache/memcache",
-			"Comment": "release.r60-40-g72a6864",
-			"Rev": "72a68649ba712ee7c4b5b4a943a626bcd7d90eb8"
-		},
-		{
-			"ImportPath": "github.com/codegangsta/cli",
-			"Comment": "1.2.0-187-gc31a797",
-			"Rev": "c31a7975863e7810c92e2e288a9ab074f9a88f29"
-		},
-		{
-			"ImportPath": "github.com/davecgh/go-spew/spew",
-			"Rev": "2df174808ee097f90d259e432cc04442cf60be21"
-		},
-		{
-			"ImportPath": "github.com/fatih/color",
-			"Comment": "v0.1-16-g4f7bcef",
-			"Rev": "4f7bcef27eec7925456d0c30c5e7b0408b3339be"
-		},
-		{
-			"ImportPath": "github.com/franela/goreq",
-			"Rev": "3ddeded65be21dacb5a2e2d0b95af9ff6862a2b5"
-		},
-		{
-			"ImportPath": "github.com/go-ini/ini",
-			"Comment": "v0-48-g060d7da",
-			"Rev": "060d7da055ba6ec5ea7a31f116332fe5efa04ce0"
-		},
-		{
-			"ImportPath": "github.com/go-ldap/ldap",
-			"Comment": "v2.2.1",
-			"Rev": "07a7330929b9ee80495c88a4439657d89c7dbd87"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/binding",
-			"Rev": "2502aaf4bce3a4e6451b4610847bfb8dffdb6266"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/gzip",
-			"Rev": "4938e9be6b279d8426cb1c89a6bcf7af70b0c21d"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/inject",
-			"Rev": "c5ab7bf3a307593cd44cb272d1a5beea473dd072"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/session",
-			"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/session/memcache",
-			"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/session/mysql",
-			"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/session/postgres",
-			"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
-		},
-		{
-			"ImportPath": "github.com/go-macaron/session/redis",
-			"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
-		},
-		{
-			"ImportPath": "github.com/go-sql-driver/mysql",
-			"Comment": "v1.2-171-g267b128",
-			"Rev": "267b128680c46286b9ca13475c3cca5de8f79bd7"
-		},
-		{
-			"ImportPath": "github.com/go-xorm/core",
-			"Comment": "v0.4.4-7-g9e608f7",
-			"Rev": "9e608f7330b9d16fe2818cfe731128b3f156cb9a"
-		},
-		{
-			"ImportPath": "github.com/go-xorm/xorm",
-			"Comment": "v0.4.4-44-gf561133",
-			"Rev": "f56113384f2c63dfe4cd8e768e349f1c35122b58"
-		},
-		{
-			"ImportPath": "github.com/gorilla/websocket",
-			"Rev": "c45a635370221f34fea2d5163fd156fcb4e38e8a"
-		},
-		{
-			"ImportPath": "github.com/gosimple/slug",
-			"Rev": "8d258463b4459f161f51d6a357edacd3eef9d663"
-		},
-		{
-			"ImportPath": "github.com/hashicorp/go-version",
-			"Rev": "7e3c02b30806fa5779d3bdfc152ce4c6f40e7b38"
-		},
-		{
-			"ImportPath": "github.com/jmespath/go-jmespath",
-			"Comment": "0.2.2",
-			"Rev": "3433f3ea46d9f8019119e7dd41274e112a2359a9"
-		},
-		{
-			"ImportPath": "github.com/jtolds/gls",
-			"Rev": "f1ac7f4f24f50328e6bc838ca4437d1612a0243c"
-		},
-		{
-			"ImportPath": "github.com/klauspost/compress/flate",
-			"Rev": "7b02889a2005228347aef0e76beeaee564d82f8c"
-		},
-		{
-			"ImportPath": "github.com/klauspost/compress/gzip",
-			"Rev": "7b02889a2005228347aef0e76beeaee564d82f8c"
-		},
-		{
-			"ImportPath": "github.com/klauspost/cpuid",
-			"Rev": "349c675778172472f5e8f3a3e0fe187e302e5a10"
-		},
-		{
-			"ImportPath": "github.com/klauspost/crc32",
-			"Rev": "6834731faf32e62a2dd809d99fb24d1e4ae5a92d"
-		},
-		{
-			"ImportPath": "github.com/kr/pretty",
-			"Comment": "go.weekly.2011-12-22-27-ge6ac2fc",
-			"Rev": "e6ac2fc51e89a3249e82157fa0bb7a18ef9dd5bb"
-		},
-		{
-			"ImportPath": "github.com/kr/text",
-			"Rev": "bb797dc4fb8320488f47bf11de07a733d7233e1f"
-		},
-		{
-			"ImportPath": "github.com/lib/pq",
-			"Comment": "go1.0-cutoff-13-g19eeca3",
-			"Rev": "19eeca3e30d2577b1761db471ec130810e67f532"
-		},
-		{
-			"ImportPath": "github.com/lib/pq/oid",
-			"Comment": "go1.0-cutoff-13-g19eeca3",
-			"Rev": "19eeca3e30d2577b1761db471ec130810e67f532"
-		},
-		{
-			"ImportPath": "github.com/mattn/go-colorable",
-			"Rev": "9cbef7c35391cca05f15f8181dc0b18bc9736dbb"
-		},
-		{
-			"ImportPath": "github.com/mattn/go-isatty",
-			"Rev": "56b76bdf51f7708750eac80fa38b952bb9f32639"
-		},
-		{
-			"ImportPath": "github.com/mattn/go-sqlite3",
-			"Rev": "e28cd440fabdd39b9520344bc26829f61db40ece"
-		},
-		{
-			"ImportPath": "github.com/rainycape/unidecode",
-			"Rev": "836ef0a715aedf08a12d595ed73ec8ed5b288cac"
-		},
-		{
-			"ImportPath": "github.com/smartystreets/goconvey/convey",
-			"Comment": "1.5.0-356-gfbc0a1c",
-			"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
-		},
-		{
-			"ImportPath": "github.com/smartystreets/goconvey/convey/assertions",
-			"Comment": "1.5.0-356-gfbc0a1c",
-			"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
-		},
-		{
-			"ImportPath": "github.com/smartystreets/goconvey/convey/assertions/oglematchers",
-			"Comment": "1.5.0-356-gfbc0a1c",
-			"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
-		},
-		{
-			"ImportPath": "github.com/smartystreets/goconvey/convey/gotest",
-			"Comment": "1.5.0-356-gfbc0a1c",
-			"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
-		},
-		{
-			"ImportPath": "github.com/smartystreets/goconvey/convey/reporting",
-			"Comment": "1.5.0-356-gfbc0a1c",
-			"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
-		},
-		{
-			"ImportPath": "github.com/streadway/amqp",
-			"Rev": "150b7f24d6ad507e6026c13d85ce1f1391ac7400"
-		},
-		{
-			"ImportPath": "golang.org/x/net/context",
-			"Rev": "972f0c5fbe4ae29e666c3f78c3ed42ae7a448b0a"
-		},
-		{
-			"ImportPath": "golang.org/x/oauth2",
-			"Rev": "c58fcf0ffc1c772aa2e1ee4894bc19f2649263b2"
-		},
-		{
-			"ImportPath": "golang.org/x/sys/unix",
-			"Rev": "7a56174f0086b32866ebd746a794417edbc678a1"
-		},
-		{
-			"ImportPath": "gopkg.in/asn1-ber.v1",
-			"Comment": "v1",
-			"Rev": "9eae18c3681ae3d3c677ac2b80a8fe57de45fc09"
-		},
-		{
-			"ImportPath": "gopkg.in/bufio.v1",
-			"Comment": "v1",
-			"Rev": "567b2bfa514e796916c4747494d6ff5132a1dfce"
-		},
-		{
-			"ImportPath": "gopkg.in/ini.v1",
-			"Comment": "v0-16-g1772191",
-			"Rev": "177219109c97e7920c933e21c9b25f874357b237"
-		},
-		{
-			"ImportPath": "gopkg.in/macaron.v1",
-			"Rev": "1c6dd87797ae9319b4658cbd48d1d0420b279fd5"
-		},
-		{
-			"ImportPath": "gopkg.in/redis.v2",
-			"Comment": "v2.3.2",
-			"Rev": "e6179049628164864e6e84e973cfb56335748dea"
-		}
-	]
-}

+ 0 - 2
Godeps/_workspace/.gitignore

@@ -1,2 +0,0 @@
-/pkg
-/bin

+ 0 - 105
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/error.go

@@ -1,105 +0,0 @@
-// Package awserr represents API error interface accessors for the SDK.
-package awserr
-
-// An Error wraps lower level errors with code, message and an original error.
-// The underlying concrete error type may also satisfy other interfaces which
-// can be to used to obtain more specific information about the error.
-//
-// Calling Error() or String() will always include the full information about
-// an error based on its underlying type.
-//
-// Example:
-//
-//     output, err := s3manage.Upload(svc, input, opts)
-//     if err != nil {
-//         if awsErr, ok := err.(awserr.Error); ok {
-//             // Get error details
-//             log.Println("Error:", err.Code(), err.Message())
-//
-//             // Prints out full error message, including original error if there was one.
-//             log.Println("Error:", err.Error())
-//
-//             // Get original error
-//             if origErr := err.Err(); origErr != nil {
-//                 // operate on original error.
-//             }
-//         } else {
-//             fmt.Println(err.Error())
-//         }
-//     }
-//
-type Error interface {
-	// Satisfy the generic error interface.
-	error
-
-	// Returns the short phrase depicting the classification of the error.
-	Code() string
-
-	// Returns the error details message.
-	Message() string
-
-	// Returns the original error if one was set.  Nil is returned if not set.
-	OrigErr() error
-}
-
-// New returns an Error object described by the code, message, and origErr.
-//
-// If origErr satisfies the Error interface it will not be wrapped within a new
-// Error object and will instead be returned.
-func New(code, message string, origErr error) Error {
-	if e, ok := origErr.(Error); ok && e != nil {
-		return e
-	}
-	return newBaseError(code, message, origErr)
-}
-
-// A RequestFailure is an interface to extract request failure information from
-// an Error such as the request ID of the failed request returned by a service.
-// RequestFailures may not always have a requestID value if the request failed
-// prior to reaching the service such as a connection error.
-//
-// Example:
-//
-//     output, err := s3manage.Upload(svc, input, opts)
-//     if err != nil {
-//         if reqerr, ok := err.(RequestFailure); ok {
-//             log.Printf("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID())
-//         } else {
-//             log.Printf("Error:", err.Error()
-//         }
-//     }
-//
-// Combined with awserr.Error:
-//
-//    output, err := s3manage.Upload(svc, input, opts)
-//    if err != nil {
-//        if awsErr, ok := err.(awserr.Error); ok {
-//            // Generic AWS Error with Code, Message, and original error (if any)
-//            fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr())
-//
-//            if reqErr, ok := err.(awserr.RequestFailure); ok {
-//                // A service error occurred
-//                fmt.Println(reqErr.StatusCode(), reqErr.RequestID())
-//            }
-//        } else {
-//            fmt.Println(err.Error())
-//        }
-//    }
-//
-type RequestFailure interface {
-	Error
-
-	// The status code of the HTTP response.
-	StatusCode() int
-
-	// The request ID returned by the service for a request failure. This will
-	// be empty if no request ID is available such as the request failed due
-	// to a connection error.
-	RequestID() string
-}
-
-// NewRequestFailure returns a new request error wrapper for the given Error
-// provided.
-func NewRequestFailure(err Error, statusCode int, reqID string) RequestFailure {
-	return newRequestError(err, statusCode, reqID)
-}

+ 0 - 135
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/types.go

@@ -1,135 +0,0 @@
-package awserr
-
-import "fmt"
-
-// SprintError returns a string of the formatted error code.
-//
-// Both extra and origErr are optional.  If they are included their lines
-// will be added, but if they are not included their lines will be ignored.
-func SprintError(code, message, extra string, origErr error) string {
-	msg := fmt.Sprintf("%s: %s", code, message)
-	if extra != "" {
-		msg = fmt.Sprintf("%s\n\t%s", msg, extra)
-	}
-	if origErr != nil {
-		msg = fmt.Sprintf("%s\ncaused by: %s", msg, origErr.Error())
-	}
-	return msg
-}
-
-// A baseError wraps the code and message which defines an error. It also
-// can be used to wrap an original error object.
-//
-// Should be used as the root for errors satisfying the awserr.Error. Also
-// for any error which does not fit into a specific error wrapper type.
-type baseError struct {
-	// Classification of error
-	code string
-
-	// Detailed information about error
-	message string
-
-	// Optional original error this error is based off of. Allows building
-	// chained errors.
-	origErr error
-}
-
-// newBaseError returns an error object for the code, message, and err.
-//
-// code is a short no whitespace phrase depicting the classification of
-// the error that is being created.
-//
-// message is the free flow string containing detailed information about the error.
-//
-// origErr is the error object which will be nested under the new error to be returned.
-func newBaseError(code, message string, origErr error) *baseError {
-	return &baseError{
-		code:    code,
-		message: message,
-		origErr: origErr,
-	}
-}
-
-// Error returns the string representation of the error.
-//
-// See ErrorWithExtra for formatting.
-//
-// Satisfies the error interface.
-func (b baseError) Error() string {
-	return SprintError(b.code, b.message, "", b.origErr)
-}
-
-// String returns the string representation of the error.
-// Alias for Error to satisfy the stringer interface.
-func (b baseError) String() string {
-	return b.Error()
-}
-
-// Code returns the short phrase depicting the classification of the error.
-func (b baseError) Code() string {
-	return b.code
-}
-
-// Message returns the error details message.
-func (b baseError) Message() string {
-	return b.message
-}
-
-// OrigErr returns the original error if one was set. Nil is returned if no error
-// was set.
-func (b baseError) OrigErr() error {
-	return b.origErr
-}
-
-// So that the Error interface type can be included as an anonymous field
-// in the requestError struct and not conflict with the error.Error() method.
-type awsError Error
-
-// A requestError wraps a request or service error.
-//
-// Composed of baseError for code, message, and original error.
-type requestError struct {
-	awsError
-	statusCode int
-	requestID  string
-}
-
-// newRequestError returns a wrapped error with additional information for request
-// status code, and service requestID.
-//
-// Should be used to wrap all request which involve service requests. Even if
-// the request failed without a service response, but had an HTTP status code
-// that may be meaningful.
-//
-// Also wraps original errors via the baseError.
-func newRequestError(err Error, statusCode int, requestID string) *requestError {
-	return &requestError{
-		awsError:   err,
-		statusCode: statusCode,
-		requestID:  requestID,
-	}
-}
-
-// Error returns the string representation of the error.
-// Satisfies the error interface.
-func (r requestError) Error() string {
-	extra := fmt.Sprintf("status code: %d, request id: %s",
-		r.statusCode, r.requestID)
-	return SprintError(r.Code(), r.Message(), extra, r.OrigErr())
-}
-
-// String returns the string representation of the error.
-// Alias for Error to satisfy the stringer interface.
-func (r requestError) String() string {
-	return r.Error()
-}
-
-// StatusCode returns the wrapped status code for the error
-func (r requestError) StatusCode() int {
-	return r.statusCode
-}
-
-// RequestID returns the wrapped requestID
-func (r requestError) RequestID() string {
-	return r.requestID
-}

+ 0 - 103
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go

@@ -1,103 +0,0 @@
-package awsutil
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"reflect"
-	"strings"
-)
-
-// Prettify returns the string representation of a value.
-func Prettify(i interface{}) string {
-	var buf bytes.Buffer
-	prettify(reflect.ValueOf(i), 0, &buf)
-	return buf.String()
-}
-
-// prettify will recursively walk value v to build a textual
-// representation of the value.
-func prettify(v reflect.Value, indent int, buf *bytes.Buffer) {
-	for v.Kind() == reflect.Ptr {
-		v = v.Elem()
-	}
-
-	switch v.Kind() {
-	case reflect.Struct:
-		strtype := v.Type().String()
-		if strtype == "time.Time" {
-			fmt.Fprintf(buf, "%s", v.Interface())
-			break
-		} else if strings.HasPrefix(strtype, "io.") {
-			buf.WriteString("<buffer>")
-			break
-		}
-
-		buf.WriteString("{\n")
-
-		names := []string{}
-		for i := 0; i < v.Type().NumField(); i++ {
-			name := v.Type().Field(i).Name
-			f := v.Field(i)
-			if name[0:1] == strings.ToLower(name[0:1]) {
-				continue // ignore unexported fields
-			}
-			if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice || f.Kind() == reflect.Map) && f.IsNil() {
-				continue // ignore unset fields
-			}
-			names = append(names, name)
-		}
-
-		for i, n := range names {
-			val := v.FieldByName(n)
-			buf.WriteString(strings.Repeat(" ", indent+2))
-			buf.WriteString(n + ": ")
-			prettify(val, indent+2, buf)
-
-			if i < len(names)-1 {
-				buf.WriteString(",\n")
-			}
-		}
-
-		buf.WriteString("\n" + strings.Repeat(" ", indent) + "}")
-	case reflect.Slice:
-		nl, id, id2 := "", "", ""
-		if v.Len() > 3 {
-			nl, id, id2 = "\n", strings.Repeat(" ", indent), strings.Repeat(" ", indent+2)
-		}
-		buf.WriteString("[" + nl)
-		for i := 0; i < v.Len(); i++ {
-			buf.WriteString(id2)
-			prettify(v.Index(i), indent+2, buf)
-
-			if i < v.Len()-1 {
-				buf.WriteString("," + nl)
-			}
-		}
-
-		buf.WriteString(nl + id + "]")
-	case reflect.Map:
-		buf.WriteString("{\n")
-
-		for i, k := range v.MapKeys() {
-			buf.WriteString(strings.Repeat(" ", indent+2))
-			buf.WriteString(k.String() + ": ")
-			prettify(v.MapIndex(k), indent+2, buf)
-
-			if i < v.Len()-1 {
-				buf.WriteString(",\n")
-			}
-		}
-
-		buf.WriteString("\n" + strings.Repeat(" ", indent) + "}")
-	default:
-		format := "%v"
-		switch v.Interface().(type) {
-		case string:
-			format = "%q"
-		case io.ReadSeeker, io.Reader:
-			format = "buffer(%p)"
-		}
-		fmt.Fprintf(buf, format, v.Interface())
-	}
-}

+ 0 - 120
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/client/client.go

@@ -1,120 +0,0 @@
-package client
-
-import (
-	"fmt"
-	"io/ioutil"
-	"net/http/httputil"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// A Config provides configuration to a service client instance.
-type Config struct {
-	Config                  *aws.Config
-	Handlers                request.Handlers
-	Endpoint, SigningRegion string
-}
-
-// ConfigProvider provides a generic way for a service client to receive
-// the ClientConfig without circular dependencies.
-type ConfigProvider interface {
-	ClientConfig(serviceName string, cfgs ...*aws.Config) Config
-}
-
-// A Client implements the base client request and response handling
-// used by all service clients.
-type Client struct {
-	request.Retryer
-	metadata.ClientInfo
-
-	Config   aws.Config
-	Handlers request.Handlers
-}
-
-// New will return a pointer to a new initialized service client.
-func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client {
-	svc := &Client{
-		Config:     cfg,
-		ClientInfo: info,
-		Handlers:   handlers,
-	}
-
-	switch retryer, ok := cfg.Retryer.(request.Retryer); {
-	case ok:
-		svc.Retryer = retryer
-	case cfg.Retryer != nil && cfg.Logger != nil:
-		s := fmt.Sprintf("WARNING: %T does not implement request.Retryer; using DefaultRetryer instead", cfg.Retryer)
-		cfg.Logger.Log(s)
-		fallthrough
-	default:
-		maxRetries := aws.IntValue(cfg.MaxRetries)
-		if cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries {
-			maxRetries = 3
-		}
-		svc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries}
-	}
-
-	svc.AddDebugHandlers()
-
-	for _, option := range options {
-		option(svc)
-	}
-
-	return svc
-}
-
-// NewRequest returns a new Request pointer for the service API
-// operation and parameters.
-func (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request {
-	return request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data)
-}
-
-// AddDebugHandlers injects debug logging handlers into the service to log request
-// debug information.
-func (c *Client) AddDebugHandlers() {
-	if !c.Config.LogLevel.AtLeast(aws.LogDebug) {
-		return
-	}
-
-	c.Handlers.Send.PushFront(logRequest)
-	c.Handlers.Send.PushBack(logResponse)
-}
-
-const logReqMsg = `DEBUG: Request %s/%s Details:
----[ REQUEST POST-SIGN ]-----------------------------
-%s
------------------------------------------------------`
-
-func logRequest(r *request.Request) {
-	logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
-	dumpedBody, _ := httputil.DumpRequestOut(r.HTTPRequest, logBody)
-
-	if logBody {
-		// Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's
-		// Body as a NoOpCloser and will not be reset after read by the HTTP
-		// client reader.
-		r.Body.Seek(r.BodyStart, 0)
-		r.HTTPRequest.Body = ioutil.NopCloser(r.Body)
-	}
-
-	r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ClientInfo.ServiceName, r.Operation.Name, string(dumpedBody)))
-}
-
-const logRespMsg = `DEBUG: Response %s/%s Details:
----[ RESPONSE ]--------------------------------------
-%s
------------------------------------------------------`
-
-func logResponse(r *request.Request) {
-	var msg = "no reponse data"
-	if r.HTTPResponse != nil {
-		logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
-		dumpedBody, _ := httputil.DumpResponse(r.HTTPResponse, logBody)
-		msg = string(dumpedBody)
-	} else if r.Error != nil {
-		msg = r.Error.Error()
-	}
-	r.Config.Logger.Log(fmt.Sprintf(logRespMsg, r.ClientInfo.ServiceName, r.Operation.Name, msg))
-}

+ 0 - 45
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/client/default_retryer.go

@@ -1,45 +0,0 @@
-package client
-
-import (
-	"math"
-	"math/rand"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// DefaultRetryer implements basic retry logic using exponential backoff for
-// most services. If you want to implement custom retry logic, implement the
-// request.Retryer interface or create a structure type that composes this
-// struct and override the specific methods. For example, to override only
-// the MaxRetries method:
-//
-//		type retryer struct {
-//      service.DefaultRetryer
-//    }
-//
-//    // This implementation always has 100 max retries
-//    func (d retryer) MaxRetries() uint { return 100 }
-type DefaultRetryer struct {
-	NumMaxRetries int
-}
-
-// MaxRetries returns the number of maximum returns the service will use to make
-// an individual API request.
-func (d DefaultRetryer) MaxRetries() int {
-	return d.NumMaxRetries
-}
-
-// RetryRules returns the delay duration before retrying this request again
-func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {
-	delay := int(math.Pow(2, float64(r.RetryCount))) * (rand.Intn(30) + 30)
-	return time.Duration(delay) * time.Millisecond
-}
-
-// ShouldRetry returns if the request should be retried.
-func (d DefaultRetryer) ShouldRetry(r *request.Request) bool {
-	if r.HTTPResponse.StatusCode >= 500 {
-		return true
-	}
-	return r.IsErrorRetryable()
-}

+ 0 - 270
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config.go

@@ -1,270 +0,0 @@
-package aws
-
-import (
-	"net/http"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/credentials"
-)
-
-// UseServiceDefaultRetries instructs the config to use the service's own default
-// number of retries. This will be the default action if Config.MaxRetries
-// is nil also.
-const UseServiceDefaultRetries = -1
-
-// RequestRetryer is an alias for a type that implements the request.Retryer interface.
-type RequestRetryer interface{}
-
-// A Config provides service configuration for service clients. By default,
-// all clients will use the {defaults.DefaultConfig} structure.
-type Config struct {
-	// The credentials object to use when signing requests. Defaults to
-	// a chain of credential providers to search for credentials in environment
-	// variables, shared credential file, and EC2 Instance Roles.
-	Credentials *credentials.Credentials
-
-	// An optional endpoint URL (hostname only or fully qualified URI)
-	// that overrides the default generated endpoint for a client. Set this
-	// to `""` to use the default generated endpoint.
-	//
-	// @note You must still provide a `Region` value when specifying an
-	//   endpoint for a client.
-	Endpoint *string
-
-	// The region to send requests to. This parameter is required and must
-	// be configured globally or on a per-client basis unless otherwise
-	// noted. A full list of regions is found in the "Regions and Endpoints"
-	// document.
-	//
-	// @see http://docs.aws.amazon.com/general/latest/gr/rande.html
-	//   AWS Regions and Endpoints
-	Region *string
-
-	// Set this to `true` to disable SSL when sending requests. Defaults
-	// to `false`.
-	DisableSSL *bool
-
-	// The HTTP client to use when sending requests. Defaults to
-	// `http.DefaultClient`.
-	HTTPClient *http.Client
-
-	// An integer value representing the logging level. The default log level
-	// is zero (LogOff), which represents no logging. To enable logging set
-	// to a LogLevel Value.
-	LogLevel *LogLevelType
-
-	// The logger writer interface to write logging messages to. Defaults to
-	// standard out.
-	Logger Logger
-
-	// The maximum number of times that a request will be retried for failures.
-	// Defaults to -1, which defers the max retry setting to the service specific
-	// configuration.
-	MaxRetries *int
-
-	// Retryer guides how HTTP requests should be retried in case of recoverable failures.
-	//
-	// When nil or the value does not implement the request.Retryer interface,
-	// the request.DefaultRetryer will be used.
-	//
-	// When both Retryer and MaxRetries are non-nil, the former is used and
-	// the latter ignored.
-	//
-	// To set the Retryer field in a type-safe manner and with chaining, use
-	// the request.WithRetryer helper function:
-	//
-	//   cfg := request.WithRetryer(aws.NewConfig(), myRetryer)
-	//
-	Retryer RequestRetryer
-
-	// Disables semantic parameter validation, which validates input for missing
-	// required fields and/or other semantic request input errors.
-	DisableParamValidation *bool
-
-	// Disables the computation of request and response checksums, e.g.,
-	// CRC32 checksums in Amazon DynamoDB.
-	DisableComputeChecksums *bool
-
-	// Set this to `true` to force the request to use path-style addressing,
-	// i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client will
-	// use virtual hosted bucket addressing when possible
-	// (`http://BUCKET.s3.amazonaws.com/KEY`).
-	//
-	// @note This configuration option is specific to the Amazon S3 service.
-	// @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
-	//   Amazon S3: Virtual Hosting of Buckets
-	S3ForcePathStyle *bool
-
-	SleepDelay func(time.Duration)
-}
-
-// NewConfig returns a new Config pointer that can be chained with builder methods to
-// set multiple configuration values inline without using pointers.
-//
-//     svc := s3.New(aws.NewConfig().WithRegion("us-west-2").WithMaxRetries(10))
-//
-func NewConfig() *Config {
-	return &Config{}
-}
-
-// WithCredentials sets a config Credentials value returning a Config pointer
-// for chaining.
-func (c *Config) WithCredentials(creds *credentials.Credentials) *Config {
-	c.Credentials = creds
-	return c
-}
-
-// WithEndpoint sets a config Endpoint value returning a Config pointer for
-// chaining.
-func (c *Config) WithEndpoint(endpoint string) *Config {
-	c.Endpoint = &endpoint
-	return c
-}
-
-// WithRegion sets a config Region value returning a Config pointer for
-// chaining.
-func (c *Config) WithRegion(region string) *Config {
-	c.Region = &region
-	return c
-}
-
-// WithDisableSSL sets a config DisableSSL value returning a Config pointer
-// for chaining.
-func (c *Config) WithDisableSSL(disable bool) *Config {
-	c.DisableSSL = &disable
-	return c
-}
-
-// WithHTTPClient sets a config HTTPClient value returning a Config pointer
-// for chaining.
-func (c *Config) WithHTTPClient(client *http.Client) *Config {
-	c.HTTPClient = client
-	return c
-}
-
-// WithMaxRetries sets a config MaxRetries value returning a Config pointer
-// for chaining.
-func (c *Config) WithMaxRetries(max int) *Config {
-	c.MaxRetries = &max
-	return c
-}
-
-// WithDisableParamValidation sets a config DisableParamValidation value
-// returning a Config pointer for chaining.
-func (c *Config) WithDisableParamValidation(disable bool) *Config {
-	c.DisableParamValidation = &disable
-	return c
-}
-
-// WithDisableComputeChecksums sets a config DisableComputeChecksums value
-// returning a Config pointer for chaining.
-func (c *Config) WithDisableComputeChecksums(disable bool) *Config {
-	c.DisableComputeChecksums = &disable
-	return c
-}
-
-// WithLogLevel sets a config LogLevel value returning a Config pointer for
-// chaining.
-func (c *Config) WithLogLevel(level LogLevelType) *Config {
-	c.LogLevel = &level
-	return c
-}
-
-// WithLogger sets a config Logger value returning a Config pointer for
-// chaining.
-func (c *Config) WithLogger(logger Logger) *Config {
-	c.Logger = logger
-	return c
-}
-
-// WithS3ForcePathStyle sets a config S3ForcePathStyle value returning a Config
-// pointer for chaining.
-func (c *Config) WithS3ForcePathStyle(force bool) *Config {
-	c.S3ForcePathStyle = &force
-	return c
-}
-
-// WithSleepDelay overrides the function used to sleep while waiting for the
-// next retry. Defaults to time.Sleep.
-func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {
-	c.SleepDelay = fn
-	return c
-}
-
-// MergeIn merges the passed in configs into the existing config object.
-func (c *Config) MergeIn(cfgs ...*Config) {
-	for _, other := range cfgs {
-		mergeInConfig(c, other)
-	}
-}
-
-func mergeInConfig(dst *Config, other *Config) {
-	if other == nil {
-		return
-	}
-
-	if other.Credentials != nil {
-		dst.Credentials = other.Credentials
-	}
-
-	if other.Endpoint != nil {
-		dst.Endpoint = other.Endpoint
-	}
-
-	if other.Region != nil {
-		dst.Region = other.Region
-	}
-
-	if other.DisableSSL != nil {
-		dst.DisableSSL = other.DisableSSL
-	}
-
-	if other.HTTPClient != nil {
-		dst.HTTPClient = other.HTTPClient
-	}
-
-	if other.LogLevel != nil {
-		dst.LogLevel = other.LogLevel
-	}
-
-	if other.Logger != nil {
-		dst.Logger = other.Logger
-	}
-
-	if other.MaxRetries != nil {
-		dst.MaxRetries = other.MaxRetries
-	}
-
-	if other.Retryer != nil {
-		dst.Retryer = other.Retryer
-	}
-
-	if other.DisableParamValidation != nil {
-		dst.DisableParamValidation = other.DisableParamValidation
-	}
-
-	if other.DisableComputeChecksums != nil {
-		dst.DisableComputeChecksums = other.DisableComputeChecksums
-	}
-
-	if other.S3ForcePathStyle != nil {
-		dst.S3ForcePathStyle = other.S3ForcePathStyle
-	}
-
-	if other.SleepDelay != nil {
-		dst.SleepDelay = other.SleepDelay
-	}
-}
-
-// Copy will return a shallow copy of the Config object. If any additional
-// configurations are provided they will be merged into the new config returned.
-func (c *Config) Copy(cfgs ...*Config) *Config {
-	dst := &Config{}
-	dst.MergeIn(c)
-
-	for _, cfg := range cfgs {
-		dst.MergeIn(cfg)
-	}
-
-	return dst
-}

+ 0 - 357
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types.go

@@ -1,357 +0,0 @@
-package aws
-
-import "time"
-
-// String returns a pointer to of the string value passed in.
-func String(v string) *string {
-	return &v
-}
-
-// StringValue returns the value of the string pointer passed in or
-// "" if the pointer is nil.
-func StringValue(v *string) string {
-	if v != nil {
-		return *v
-	}
-	return ""
-}
-
-// StringSlice converts a slice of string values into a slice of
-// string pointers
-func StringSlice(src []string) []*string {
-	dst := make([]*string, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// StringValueSlice converts a slice of string pointers into a slice of
-// string values
-func StringValueSlice(src []*string) []string {
-	dst := make([]string, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// StringMap converts a string map of string values into a string
-// map of string pointers
-func StringMap(src map[string]string) map[string]*string {
-	dst := make(map[string]*string)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// StringValueMap converts a string map of string pointers into a string
-// map of string values
-func StringValueMap(src map[string]*string) map[string]string {
-	dst := make(map[string]string)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}
-
-// Bool returns a pointer to of the bool value passed in.
-func Bool(v bool) *bool {
-	return &v
-}
-
-// BoolValue returns the value of the bool pointer passed in or
-// false if the pointer is nil.
-func BoolValue(v *bool) bool {
-	if v != nil {
-		return *v
-	}
-	return false
-}
-
-// BoolSlice converts a slice of bool values into a slice of
-// bool pointers
-func BoolSlice(src []bool) []*bool {
-	dst := make([]*bool, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// BoolValueSlice converts a slice of bool pointers into a slice of
-// bool values
-func BoolValueSlice(src []*bool) []bool {
-	dst := make([]bool, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// BoolMap converts a string map of bool values into a string
-// map of bool pointers
-func BoolMap(src map[string]bool) map[string]*bool {
-	dst := make(map[string]*bool)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// BoolValueMap converts a string map of bool pointers into a string
-// map of bool values
-func BoolValueMap(src map[string]*bool) map[string]bool {
-	dst := make(map[string]bool)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}
-
-// Int returns a pointer to of the int value passed in.
-func Int(v int) *int {
-	return &v
-}
-
-// IntValue returns the value of the int pointer passed in or
-// 0 if the pointer is nil.
-func IntValue(v *int) int {
-	if v != nil {
-		return *v
-	}
-	return 0
-}
-
-// IntSlice converts a slice of int values into a slice of
-// int pointers
-func IntSlice(src []int) []*int {
-	dst := make([]*int, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// IntValueSlice converts a slice of int pointers into a slice of
-// int values
-func IntValueSlice(src []*int) []int {
-	dst := make([]int, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// IntMap converts a string map of int values into a string
-// map of int pointers
-func IntMap(src map[string]int) map[string]*int {
-	dst := make(map[string]*int)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// IntValueMap converts a string map of int pointers into a string
-// map of int values
-func IntValueMap(src map[string]*int) map[string]int {
-	dst := make(map[string]int)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}
-
-// Int64 returns a pointer to of the int64 value passed in.
-func Int64(v int64) *int64 {
-	return &v
-}
-
-// Int64Value returns the value of the int64 pointer passed in or
-// 0 if the pointer is nil.
-func Int64Value(v *int64) int64 {
-	if v != nil {
-		return *v
-	}
-	return 0
-}
-
-// Int64Slice converts a slice of int64 values into a slice of
-// int64 pointers
-func Int64Slice(src []int64) []*int64 {
-	dst := make([]*int64, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// Int64ValueSlice converts a slice of int64 pointers into a slice of
-// int64 values
-func Int64ValueSlice(src []*int64) []int64 {
-	dst := make([]int64, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// Int64Map converts a string map of int64 values into a string
-// map of int64 pointers
-func Int64Map(src map[string]int64) map[string]*int64 {
-	dst := make(map[string]*int64)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// Int64ValueMap converts a string map of int64 pointers into a string
-// map of int64 values
-func Int64ValueMap(src map[string]*int64) map[string]int64 {
-	dst := make(map[string]int64)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}
-
-// Float64 returns a pointer to of the float64 value passed in.
-func Float64(v float64) *float64 {
-	return &v
-}
-
-// Float64Value returns the value of the float64 pointer passed in or
-// 0 if the pointer is nil.
-func Float64Value(v *float64) float64 {
-	if v != nil {
-		return *v
-	}
-	return 0
-}
-
-// Float64Slice converts a slice of float64 values into a slice of
-// float64 pointers
-func Float64Slice(src []float64) []*float64 {
-	dst := make([]*float64, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// Float64ValueSlice converts a slice of float64 pointers into a slice of
-// float64 values
-func Float64ValueSlice(src []*float64) []float64 {
-	dst := make([]float64, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// Float64Map converts a string map of float64 values into a string
-// map of float64 pointers
-func Float64Map(src map[string]float64) map[string]*float64 {
-	dst := make(map[string]*float64)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// Float64ValueMap converts a string map of float64 pointers into a string
-// map of float64 values
-func Float64ValueMap(src map[string]*float64) map[string]float64 {
-	dst := make(map[string]float64)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}
-
-// Time returns a pointer to of the time.Time value passed in.
-func Time(v time.Time) *time.Time {
-	return &v
-}
-
-// TimeValue returns the value of the time.Time pointer passed in or
-// time.Time{} if the pointer is nil.
-func TimeValue(v *time.Time) time.Time {
-	if v != nil {
-		return *v
-	}
-	return time.Time{}
-}
-
-// TimeSlice converts a slice of time.Time values into a slice of
-// time.Time pointers
-func TimeSlice(src []time.Time) []*time.Time {
-	dst := make([]*time.Time, len(src))
-	for i := 0; i < len(src); i++ {
-		dst[i] = &(src[i])
-	}
-	return dst
-}
-
-// TimeValueSlice converts a slice of time.Time pointers into a slice of
-// time.Time values
-func TimeValueSlice(src []*time.Time) []time.Time {
-	dst := make([]time.Time, len(src))
-	for i := 0; i < len(src); i++ {
-		if src[i] != nil {
-			dst[i] = *(src[i])
-		}
-	}
-	return dst
-}
-
-// TimeMap converts a string map of time.Time values into a string
-// map of time.Time pointers
-func TimeMap(src map[string]time.Time) map[string]*time.Time {
-	dst := make(map[string]*time.Time)
-	for k, val := range src {
-		v := val
-		dst[k] = &v
-	}
-	return dst
-}
-
-// TimeValueMap converts a string map of time.Time pointers into a string
-// map of time.Time values
-func TimeValueMap(src map[string]*time.Time) map[string]time.Time {
-	dst := make(map[string]time.Time)
-	for k, val := range src {
-		if val != nil {
-			dst[k] = *val
-		}
-	}
-	return dst
-}

+ 0 - 139
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go

@@ -1,139 +0,0 @@
-package corehandlers
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"regexp"
-	"runtime"
-	"strconv"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// Interface for matching types which also have a Len method.
-type lener interface {
-	Len() int
-}
-
-// BuildContentLengthHandler builds the content length of a request based on the body,
-// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable
-// to determine request body length and no "Content-Length" was specified it will panic.
-var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLengthHandler", Fn: func(r *request.Request) {
-	if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" {
-		length, _ := strconv.ParseInt(slength, 10, 64)
-		r.HTTPRequest.ContentLength = length
-		return
-	}
-
-	var length int64
-	switch body := r.Body.(type) {
-	case nil:
-		length = 0
-	case lener:
-		length = int64(body.Len())
-	case io.Seeker:
-		r.BodyStart, _ = body.Seek(0, 1)
-		end, _ := body.Seek(0, 2)
-		body.Seek(r.BodyStart, 0) // make sure to seek back to original location
-		length = end - r.BodyStart
-	default:
-		panic("Cannot get length of body, must provide `ContentLength`")
-	}
-
-	r.HTTPRequest.ContentLength = length
-	r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length))
-}}
-
-// SDKVersionUserAgentHandler is a request handler for adding the SDK Version to the user agent.
-var SDKVersionUserAgentHandler = request.NamedHandler{
-	Name: "core.SDKVersionUserAgentHandler",
-	Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion,
-		runtime.Version(), runtime.GOOS, runtime.GOARCH),
-}
-
-var reStatusCode = regexp.MustCompile(`^(\d{3})`)
-
-// SendHandler is a request handler to send service request using HTTP client.
-var SendHandler = request.NamedHandler{Name: "core.SendHandler", Fn: func(r *request.Request) {
-	var err error
-	r.HTTPResponse, err = r.Config.HTTPClient.Do(r.HTTPRequest)
-	if err != nil {
-		// Capture the case where url.Error is returned for error processing
-		// response. e.g. 301 without location header comes back as string
-		// error and r.HTTPResponse is nil. Other url redirect errors will
-		// comeback in a similar method.
-		if e, ok := err.(*url.Error); ok && e.Err != nil {
-			if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil {
-				code, _ := strconv.ParseInt(s[1], 10, 64)
-				r.HTTPResponse = &http.Response{
-					StatusCode: int(code),
-					Status:     http.StatusText(int(code)),
-					Body:       ioutil.NopCloser(bytes.NewReader([]byte{})),
-				}
-				return
-			}
-		}
-		if r.HTTPResponse == nil {
-			// Add a dummy request response object to ensure the HTTPResponse
-			// value is consistent.
-			r.HTTPResponse = &http.Response{
-				StatusCode: int(0),
-				Status:     http.StatusText(int(0)),
-				Body:       ioutil.NopCloser(bytes.NewReader([]byte{})),
-			}
-		}
-		// Catch all other request errors.
-		r.Error = awserr.New("RequestError", "send request failed", err)
-		r.Retryable = aws.Bool(true) // network errors are retryable
-	}
-}}
-
-// ValidateResponseHandler is a request handler to validate service response.
-var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseHandler", Fn: func(r *request.Request) {
-	if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 {
-		// this may be replaced by an UnmarshalError handler
-		r.Error = awserr.New("UnknownError", "unknown error", nil)
-	}
-}}
-
-// AfterRetryHandler performs final checks to determine if the request should
-// be retried and how long to delay.
-var AfterRetryHandler = request.NamedHandler{Name: "core.AfterRetryHandler", Fn: func(r *request.Request) {
-	// If one of the other handlers already set the retry state
-	// we don't want to override it based on the service's state
-	if r.Retryable == nil {
-		r.Retryable = aws.Bool(r.ShouldRetry(r))
-	}
-
-	if r.WillRetry() {
-		r.RetryDelay = r.RetryRules(r)
-		r.Config.SleepDelay(r.RetryDelay)
-
-		// when the expired token exception occurs the credentials
-		// need to be expired locally so that the next request to
-		// get credentials will trigger a credentials refresh.
-		if r.IsErrorExpired() {
-			r.Config.Credentials.Expire()
-		}
-
-		r.RetryCount++
-		r.Error = nil
-	}
-}}
-
-// ValidateEndpointHandler is a request handler to validate a request had the
-// appropriate Region and Endpoint set. Will set r.Error if the endpoint or
-// region is not valid.
-var ValidateEndpointHandler = request.NamedHandler{Name: "core.ValidateEndpointHandler", Fn: func(r *request.Request) {
-	if r.ClientInfo.SigningRegion == "" && aws.StringValue(r.Config.Region) == "" {
-		r.Error = aws.ErrMissingRegion
-	} else if r.ClientInfo.Endpoint == "" {
-		r.Error = aws.ErrMissingEndpoint
-	}
-}}

+ 0 - 113
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/handlers_test.go

@@ -1,113 +0,0 @@
-package corehandlers_test
-
-import (
-	"fmt"
-	"net/http"
-	"os"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/corehandlers"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/awstesting"
-)
-
-func TestValidateEndpointHandler(t *testing.T) {
-	os.Clearenv()
-
-	svc := awstesting.NewClient(aws.NewConfig().WithRegion("us-west-2"))
-	svc.Handlers.Clear()
-	svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
-
-	req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
-	err := req.Build()
-
-	assert.NoError(t, err)
-}
-
-func TestValidateEndpointHandlerErrorRegion(t *testing.T) {
-	os.Clearenv()
-
-	svc := awstesting.NewClient()
-	svc.Handlers.Clear()
-	svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
-
-	req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
-	err := req.Build()
-
-	assert.Error(t, err)
-	assert.Equal(t, aws.ErrMissingRegion, err)
-}
-
-type mockCredsProvider struct {
-	expired        bool
-	retrieveCalled bool
-}
-
-func (m *mockCredsProvider) Retrieve() (credentials.Value, error) {
-	m.retrieveCalled = true
-	return credentials.Value{}, nil
-}
-
-func (m *mockCredsProvider) IsExpired() bool {
-	return m.expired
-}
-
-func TestAfterRetryRefreshCreds(t *testing.T) {
-	os.Clearenv()
-	credProvider := &mockCredsProvider{}
-
-	svc := awstesting.NewClient(&aws.Config{
-		Credentials: credentials.NewCredentials(credProvider),
-		MaxRetries:  aws.Int(1),
-	})
-
-	svc.Handlers.Clear()
-	svc.Handlers.ValidateResponse.PushBack(func(r *request.Request) {
-		r.Error = awserr.New("UnknownError", "", nil)
-		r.HTTPResponse = &http.Response{StatusCode: 400}
-	})
-	svc.Handlers.UnmarshalError.PushBack(func(r *request.Request) {
-		r.Error = awserr.New("ExpiredTokenException", "", nil)
-	})
-	svc.Handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)
-
-	assert.True(t, svc.Config.Credentials.IsExpired(), "Expect to start out expired")
-	assert.False(t, credProvider.retrieveCalled)
-
-	req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
-	req.Send()
-
-	assert.True(t, svc.Config.Credentials.IsExpired())
-	assert.False(t, credProvider.retrieveCalled)
-
-	_, err := svc.Config.Credentials.Get()
-	assert.NoError(t, err)
-	assert.True(t, credProvider.retrieveCalled)
-}
-
-type testSendHandlerTransport struct{}
-
-func (t *testSendHandlerTransport) RoundTrip(r *http.Request) (*http.Response, error) {
-	return nil, fmt.Errorf("mock error")
-}
-
-func TestSendHandlerError(t *testing.T) {
-	svc := awstesting.NewClient(&aws.Config{
-		HTTPClient: &http.Client{
-			Transport: &testSendHandlerTransport{},
-		},
-	})
-	svc.Handlers.Clear()
-	svc.Handlers.Send.PushBackNamed(corehandlers.SendHandler)
-	r := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
-
-	r.Send()
-
-	assert.Error(t, r.Error)
-	assert.NotNil(t, r.HTTPResponse)
-}

+ 0 - 144
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go

@@ -1,144 +0,0 @@
-package corehandlers
-
-import (
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// ValidateParametersHandler is a request handler to validate the input parameters.
-// Validating parameters only has meaning if done prior to the request being sent.
-var ValidateParametersHandler = request.NamedHandler{Name: "core.ValidateParametersHandler", Fn: func(r *request.Request) {
-	if r.ParamsFilled() {
-		v := validator{errors: []string{}}
-		v.validateAny(reflect.ValueOf(r.Params), "")
-
-		if count := len(v.errors); count > 0 {
-			format := "%d validation errors:\n- %s"
-			msg := fmt.Sprintf(format, count, strings.Join(v.errors, "\n- "))
-			r.Error = awserr.New("InvalidParameter", msg, nil)
-		}
-	}
-}}
-
-// A validator validates values. Collects validations errors which occurs.
-type validator struct {
-	errors []string
-}
-
-// validateAny will validate any struct, slice or map type. All validations
-// are also performed recursively for nested types.
-func (v *validator) validateAny(value reflect.Value, path string) {
-	value = reflect.Indirect(value)
-	if !value.IsValid() {
-		return
-	}
-
-	switch value.Kind() {
-	case reflect.Struct:
-		v.validateStruct(value, path)
-	case reflect.Slice:
-		for i := 0; i < value.Len(); i++ {
-			v.validateAny(value.Index(i), path+fmt.Sprintf("[%d]", i))
-		}
-	case reflect.Map:
-		for _, n := range value.MapKeys() {
-			v.validateAny(value.MapIndex(n), path+fmt.Sprintf("[%q]", n.String()))
-		}
-	}
-}
-
-// validateStruct will validate the struct value's fields. If the structure has
-// nested types those types will be validated also.
-func (v *validator) validateStruct(value reflect.Value, path string) {
-	prefix := "."
-	if path == "" {
-		prefix = ""
-	}
-
-	for i := 0; i < value.Type().NumField(); i++ {
-		f := value.Type().Field(i)
-		if strings.ToLower(f.Name[0:1]) == f.Name[0:1] {
-			continue
-		}
-		fvalue := value.FieldByName(f.Name)
-
-		err := validateField(f, fvalue, validateFieldRequired, validateFieldMin)
-		if err != nil {
-			v.errors = append(v.errors, fmt.Sprintf("%s: %s", err.Error(), path+prefix+f.Name))
-			continue
-		}
-
-		v.validateAny(fvalue, path+prefix+f.Name)
-	}
-}
-
-type validatorFunc func(f reflect.StructField, fvalue reflect.Value) error
-
-func validateField(f reflect.StructField, fvalue reflect.Value, funcs ...validatorFunc) error {
-	for _, fn := range funcs {
-		if err := fn(f, fvalue); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// Validates that a field has a valid value provided for required fields.
-func validateFieldRequired(f reflect.StructField, fvalue reflect.Value) error {
-	if f.Tag.Get("required") == "" {
-		return nil
-	}
-
-	switch fvalue.Kind() {
-	case reflect.Ptr, reflect.Slice, reflect.Map:
-		if fvalue.IsNil() {
-			return fmt.Errorf("missing required parameter")
-		}
-	default:
-		if !fvalue.IsValid() {
-			return fmt.Errorf("missing required parameter")
-		}
-	}
-	return nil
-}
-
-// Validates that if a value is provided for a field, that value must be at
-// least a minimum length.
-func validateFieldMin(f reflect.StructField, fvalue reflect.Value) error {
-	minStr := f.Tag.Get("min")
-	if minStr == "" {
-		return nil
-	}
-	min, _ := strconv.ParseInt(minStr, 10, 64)
-
-	kind := fvalue.Kind()
-	if kind == reflect.Ptr {
-		if fvalue.IsNil() {
-			return nil
-		}
-		fvalue = fvalue.Elem()
-	}
-
-	switch fvalue.Kind() {
-	case reflect.String:
-		if int64(fvalue.Len()) < min {
-			return fmt.Errorf("field too short, minimum length %d", min)
-		}
-	case reflect.Slice, reflect.Map:
-		if fvalue.IsNil() {
-			return nil
-		}
-		if int64(fvalue.Len()) < min {
-			return fmt.Errorf("field too short, minimum length %d", min)
-		}
-
-		// TODO min can also apply to number minimum value.
-
-	}
-	return nil
-}

+ 0 - 134
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator_test.go

@@ -1,134 +0,0 @@
-package corehandlers_test
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/corehandlers"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/stretchr/testify/require"
-)
-
-var testSvc = func() *client.Client {
-	s := &client.Client{
-		Config: aws.Config{},
-		ClientInfo: metadata.ClientInfo{
-			ServiceName: "mock-service",
-			APIVersion:  "2015-01-01",
-		},
-	}
-	return s
-}()
-
-type StructShape struct {
-	RequiredList   []*ConditionalStructShape          `required:"true"`
-	RequiredMap    map[string]*ConditionalStructShape `required:"true"`
-	RequiredBool   *bool                              `required:"true"`
-	OptionalStruct *ConditionalStructShape
-
-	hiddenParameter *string
-
-	metadataStructureShape
-}
-
-type metadataStructureShape struct {
-	SDKShapeTraits bool
-}
-
-type ConditionalStructShape struct {
-	Name           *string `required:"true"`
-	SDKShapeTraits bool
-}
-
-func TestNoErrors(t *testing.T) {
-	input := &StructShape{
-		RequiredList: []*ConditionalStructShape{},
-		RequiredMap: map[string]*ConditionalStructShape{
-			"key1": {Name: aws.String("Name")},
-			"key2": {Name: aws.String("Name")},
-		},
-		RequiredBool:   aws.Bool(true),
-		OptionalStruct: &ConditionalStructShape{Name: aws.String("Name")},
-	}
-
-	req := testSvc.NewRequest(&request.Operation{}, input, nil)
-	corehandlers.ValidateParametersHandler.Fn(req)
-	require.NoError(t, req.Error)
-}
-
-func TestMissingRequiredParameters(t *testing.T) {
-	input := &StructShape{}
-	req := testSvc.NewRequest(&request.Operation{}, input, nil)
-	corehandlers.ValidateParametersHandler.Fn(req)
-
-	require.Error(t, req.Error)
-	assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
-	assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList\n- missing required parameter: RequiredMap\n- missing required parameter: RequiredBool", req.Error.(awserr.Error).Message())
-}
-
-func TestNestedMissingRequiredParameters(t *testing.T) {
-	input := &StructShape{
-		RequiredList: []*ConditionalStructShape{{}},
-		RequiredMap: map[string]*ConditionalStructShape{
-			"key1": {Name: aws.String("Name")},
-			"key2": {},
-		},
-		RequiredBool:   aws.Bool(true),
-		OptionalStruct: &ConditionalStructShape{},
-	}
-
-	req := testSvc.NewRequest(&request.Operation{}, input, nil)
-	corehandlers.ValidateParametersHandler.Fn(req)
-
-	require.Error(t, req.Error)
-	assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
-	assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList[0].Name\n- missing required parameter: RequiredMap[\"key2\"].Name\n- missing required parameter: OptionalStruct.Name", req.Error.(awserr.Error).Message())
-}
-
-type testInput struct {
-	StringField string            `min:"5"`
-	PtrStrField *string           `min:"2"`
-	ListField   []string          `min:"3"`
-	MapField    map[string]string `min:"4"`
-}
-
-var testsFieldMin = []struct {
-	err awserr.Error
-	in  testInput
-}{
-	{
-		err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 5: StringField", nil),
-		in:  testInput{StringField: "abcd"},
-	},
-	{
-		err: awserr.New("InvalidParameter", "2 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField", nil),
-		in:  testInput{StringField: "abcd", ListField: []string{"a", "b"}},
-	},
-	{
-		err: awserr.New("InvalidParameter", "3 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField\n- field too short, minimum length 4: MapField", nil),
-		in:  testInput{StringField: "abcd", ListField: []string{"a", "b"}, MapField: map[string]string{"a": "a", "b": "b"}},
-	},
-	{
-		err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 2: PtrStrField", nil),
-		in:  testInput{StringField: "abcde", PtrStrField: aws.String("v")},
-	},
-	{
-		err: nil,
-		in: testInput{StringField: "abcde", PtrStrField: aws.String("value"),
-			ListField: []string{"a", "b", "c"}, MapField: map[string]string{"a": "a", "b": "b", "c": "c", "d": "d"}},
-	},
-}
-
-func TestValidateFieldMinParameter(t *testing.T) {
-	for i, c := range testsFieldMin {
-		req := testSvc.NewRequest(&request.Operation{}, &c.in, nil)
-		corehandlers.ValidateParametersHandler.Fn(req)
-
-		require.Equal(t, c.err, req.Error, "%d case failed", i)
-	}
-}

+ 0 - 85
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go

@@ -1,85 +0,0 @@
-package credentials
-
-import (
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-var (
-	// ErrNoValidProvidersFoundInChain Is returned when there are no valid
-	// providers in the ChainProvider.
-	//
-	// @readonly
-	ErrNoValidProvidersFoundInChain = awserr.New("NoCredentialProviders", "no valid providers in chain", nil)
-)
-
-// A ChainProvider will search for a provider which returns credentials
-// and cache that provider until Retrieve is called again.
-//
-// The ChainProvider provides a way of chaining multiple providers together
-// which will pick the first available using priority order of the Providers
-// in the list.
-//
-// If none of the Providers retrieve valid credentials Value, ChainProvider's
-// Retrieve() will return the error ErrNoValidProvidersFoundInChain.
-//
-// If a Provider is found which returns valid credentials Value ChainProvider
-// will cache that Provider for all calls to IsExpired(), until Retrieve is
-// called again.
-//
-// Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider.
-// In this example EnvProvider will first check if any credentials are available
-// vai the environment variables. If there are none ChainProvider will check
-// the next Provider in the list, EC2RoleProvider in this case. If EC2RoleProvider
-// does not return any credentials ChainProvider will return the error
-// ErrNoValidProvidersFoundInChain
-//
-//     creds := NewChainCredentials(
-//         []Provider{
-//             &EnvProvider{},
-//             &EC2RoleProvider{},
-//         })
-//
-//     // Usage of ChainCredentials with aws.Config
-//     svc := ec2.New(&aws.Config{Credentials: creds})
-//
-type ChainProvider struct {
-	Providers []Provider
-	curr      Provider
-}
-
-// NewChainCredentials returns a pointer to a new Credentials object
-// wrapping a chain of providers.
-func NewChainCredentials(providers []Provider) *Credentials {
-	return NewCredentials(&ChainProvider{
-		Providers: append([]Provider{}, providers...),
-	})
-}
-
-// Retrieve returns the credentials value or error if no provider returned
-// without error.
-//
-// If a provider is found it will be cached and any calls to IsExpired()
-// will return the expired state of the cached provider.
-func (c *ChainProvider) Retrieve() (Value, error) {
-	for _, p := range c.Providers {
-		if creds, err := p.Retrieve(); err == nil {
-			c.curr = p
-			return creds, nil
-		}
-	}
-	c.curr = nil
-
-	// TODO better error reporting. maybe report error for each failed retrieve?
-
-	return Value{}, ErrNoValidProvidersFoundInChain
-}
-
-// IsExpired will returned the expired state of the currently cached provider
-// if there is one.  If there is no current provider, true will be returned.
-func (c *ChainProvider) IsExpired() bool {
-	if c.curr != nil {
-		return c.curr.IsExpired()
-	}
-
-	return true
-}

+ 0 - 73
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go

@@ -1,73 +0,0 @@
-package credentials
-
-import (
-	"testing"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestChainProviderGet(t *testing.T) {
-	p := &ChainProvider{
-		Providers: []Provider{
-			&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
-			&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
-			&stubProvider{
-				creds: Value{
-					AccessKeyID:     "AKID",
-					SecretAccessKey: "SECRET",
-					SessionToken:    "",
-				},
-			},
-		},
-	}
-
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-	assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
-}
-
-func TestChainProviderIsExpired(t *testing.T) {
-	stubProvider := &stubProvider{expired: true}
-	p := &ChainProvider{
-		Providers: []Provider{
-			stubProvider,
-		},
-	}
-
-	assert.True(t, p.IsExpired(), "Expect expired to be true before any Retrieve")
-	_, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-	assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
-
-	stubProvider.expired = true
-	assert.True(t, p.IsExpired(), "Expect return of expired provider")
-
-	_, err = p.Retrieve()
-	assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
-}
-
-func TestChainProviderWithNoProvider(t *testing.T) {
-	p := &ChainProvider{
-		Providers: []Provider{},
-	}
-
-	assert.True(t, p.IsExpired(), "Expect expired with no providers")
-	_, err := p.Retrieve()
-	assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
-}
-
-func TestChainProviderWithNoValidProvider(t *testing.T) {
-	p := &ChainProvider{
-		Providers: []Provider{
-			&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
-			&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
-		},
-	}
-
-	assert.True(t, p.IsExpired(), "Expect expired with no providers")
-	_, err := p.Retrieve()
-	assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
-}

+ 0 - 220
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials.go

@@ -1,220 +0,0 @@
-// Package credentials provides credential retrieval and management
-//
-// The Credentials is the primary method of getting access to and managing
-// credentials Values. Using dependency injection retrieval of the credential
-// values is handled by a object which satisfies the Provider interface.
-//
-// By default the Credentials.Get() will cache the successful result of a
-// Provider's Retrieve() until Provider.IsExpired() returns true. At which
-// point Credentials will call Provider's Retrieve() to get new credential Value.
-//
-// The Provider is responsible for determining when credentials Value have expired.
-// It is also important to note that Credentials will always call Retrieve the
-// first time Credentials.Get() is called.
-//
-// Example of using the environment variable credentials.
-//
-//     creds := NewEnvCredentials()
-//
-//     // Retrieve the credentials value
-//     credValue, err := creds.Get()
-//     if err != nil {
-//         // handle error
-//     }
-//
-// Example of forcing credentials to expire and be refreshed on the next Get().
-// This may be helpful to proactively expire credentials and refresh them sooner
-// than they would naturally expire on their own.
-//
-//     creds := NewCredentials(&EC2RoleProvider{})
-//     creds.Expire()
-//     credsValue, err := creds.Get()
-//     // New credentials will be retrieved instead of from cache.
-//
-//
-// Custom Provider
-//
-// Each Provider built into this package also provides a helper method to generate
-// a Credentials pointer setup with the provider. To use a custom Provider just
-// create a type which satisfies the Provider interface and pass it to the
-// NewCredentials method.
-//
-//     type MyProvider struct{}
-//     func (m *MyProvider) Retrieve() (Value, error) {...}
-//     func (m *MyProvider) IsExpired() bool {...}
-//
-//     creds := NewCredentials(&MyProvider{})
-//     credValue, err := creds.Get()
-//
-package credentials
-
-import (
-	"sync"
-	"time"
-)
-
-// AnonymousCredentials is an empty Credential object that can be used as
-// dummy placeholder credentials for requests that do not need signed.
-//
-// This Credentials can be used to configure a service to not sign requests
-// when making service API calls. For example, when accessing public
-// s3 buckets.
-//
-//     svc := s3.New(&aws.Config{Credentials: AnonymousCredentials})
-//     // Access public S3 buckets.
-//
-// @readonly
-var AnonymousCredentials = NewStaticCredentials("", "", "")
-
-// A Value is the AWS credentials value for individual credential fields.
-type Value struct {
-	// AWS Access key ID
-	AccessKeyID string
-
-	// AWS Secret Access Key
-	SecretAccessKey string
-
-	// AWS Session Token
-	SessionToken string
-}
-
-// A Provider is the interface for any component which will provide credentials
-// Value. A provider is required to manage its own Expired state, and what to
-// be expired means.
-//
-// The Provider should not need to implement its own mutexes, because
-// that will be managed by Credentials.
-type Provider interface {
-	// Refresh returns nil if it successfully retrieved the value.
-	// Error is returned if the value were not obtainable, or empty.
-	Retrieve() (Value, error)
-
-	// IsExpired returns if the credentials are no longer valid, and need
-	// to be retrieved.
-	IsExpired() bool
-}
-
-// A Expiry provides shared expiration logic to be used by credentials
-// providers to implement expiry functionality.
-//
-// The best method to use this struct is as an anonymous field within the
-// provider's struct.
-//
-// Example:
-//     type EC2RoleProvider struct {
-//         Expiry
-//         ...
-//     }
-type Expiry struct {
-	// The date/time when to expire on
-	expiration time.Time
-
-	// If set will be used by IsExpired to determine the current time.
-	// Defaults to time.Now if CurrentTime is not set.  Available for testing
-	// to be able to mock out the current time.
-	CurrentTime func() time.Time
-}
-
-// SetExpiration sets the expiration IsExpired will check when called.
-//
-// If window is greater than 0 the expiration time will be reduced by the
-// window value.
-//
-// Using a window is helpful to trigger credentials to expire sooner than
-// the expiration time given to ensure no requests are made with expired
-// tokens.
-func (e *Expiry) SetExpiration(expiration time.Time, window time.Duration) {
-	e.expiration = expiration
-	if window > 0 {
-		e.expiration = e.expiration.Add(-window)
-	}
-}
-
-// IsExpired returns if the credentials are expired.
-func (e *Expiry) IsExpired() bool {
-	if e.CurrentTime == nil {
-		e.CurrentTime = time.Now
-	}
-	return e.expiration.Before(e.CurrentTime())
-}
-
-// A Credentials provides synchronous safe retrieval of AWS credentials Value.
-// Credentials will cache the credentials value until they expire. Once the value
-// expires the next Get will attempt to retrieve valid credentials.
-//
-// Credentials is safe to use across multiple goroutines and will manage the
-// synchronous state so the Providers do not need to implement their own
-// synchronization.
-//
-// The first Credentials.Get() will always call Provider.Retrieve() to get the
-// first instance of the credentials Value. All calls to Get() after that
-// will return the cached credentials Value until IsExpired() returns true.
-type Credentials struct {
-	creds        Value
-	forceRefresh bool
-	m            sync.Mutex
-
-	provider Provider
-}
-
-// NewCredentials returns a pointer to a new Credentials with the provider set.
-func NewCredentials(provider Provider) *Credentials {
-	return &Credentials{
-		provider:     provider,
-		forceRefresh: true,
-	}
-}
-
-// Get returns the credentials value, or error if the credentials Value failed
-// to be retrieved.
-//
-// Will return the cached credentials Value if it has not expired. If the
-// credentials Value has expired the Provider's Retrieve() will be called
-// to refresh the credentials.
-//
-// If Credentials.Expire() was called the credentials Value will be force
-// expired, and the next call to Get() will cause them to be refreshed.
-func (c *Credentials) Get() (Value, error) {
-	c.m.Lock()
-	defer c.m.Unlock()
-
-	if c.isExpired() {
-		creds, err := c.provider.Retrieve()
-		if err != nil {
-			return Value{}, err
-		}
-		c.creds = creds
-		c.forceRefresh = false
-	}
-
-	return c.creds, nil
-}
-
-// Expire expires the credentials and forces them to be retrieved on the
-// next call to Get().
-//
-// This will override the Provider's expired state, and force Credentials
-// to call the Provider's Retrieve().
-func (c *Credentials) Expire() {
-	c.m.Lock()
-	defer c.m.Unlock()
-
-	c.forceRefresh = true
-}
-
-// IsExpired returns if the credentials are no longer valid, and need
-// to be retrieved.
-//
-// If the Credentials were forced to be expired with Expire() this will
-// reflect that override.
-func (c *Credentials) IsExpired() bool {
-	c.m.Lock()
-	defer c.m.Unlock()
-
-	return c.isExpired()
-}
-
-// isExpired helper method wrapping the definition of expired credentials.
-func (c *Credentials) isExpired() bool {
-	return c.forceRefresh || c.provider.IsExpired()
-}

+ 0 - 62
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go

@@ -1,62 +0,0 @@
-package credentials
-
-import (
-	"testing"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/stretchr/testify/assert"
-)
-
-type stubProvider struct {
-	creds   Value
-	expired bool
-	err     error
-}
-
-func (s *stubProvider) Retrieve() (Value, error) {
-	s.expired = false
-	return s.creds, s.err
-}
-func (s *stubProvider) IsExpired() bool {
-	return s.expired
-}
-
-func TestCredentialsGet(t *testing.T) {
-	c := NewCredentials(&stubProvider{
-		creds: Value{
-			AccessKeyID:     "AKID",
-			SecretAccessKey: "SECRET",
-			SessionToken:    "",
-		},
-		expired: true,
-	})
-
-	creds, err := c.Get()
-	assert.Nil(t, err, "Expected no error")
-	assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
-}
-
-func TestCredentialsGetWithError(t *testing.T) {
-	c := NewCredentials(&stubProvider{err: awserr.New("provider error", "", nil), expired: true})
-
-	_, err := c.Get()
-	assert.Equal(t, "provider error", err.(awserr.Error).Code(), "Expected provider error")
-}
-
-func TestCredentialsExpire(t *testing.T) {
-	stub := &stubProvider{}
-	c := NewCredentials(stub)
-
-	stub.expired = false
-	assert.True(t, c.IsExpired(), "Expected to start out expired")
-	c.Expire()
-	assert.True(t, c.IsExpired(), "Expected to be expired")
-
-	c.forceRefresh = false
-	assert.False(t, c.IsExpired(), "Expected not to be expired")
-
-	stub.expired = true
-	assert.True(t, c.IsExpired(), "Expected to be expired")
-}

+ 0 - 173
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go

@@ -1,173 +0,0 @@
-package ec2rolecreds
-
-import (
-	"bufio"
-	"encoding/json"
-	"fmt"
-	"path"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/ec2metadata"
-)
-
-// A EC2RoleProvider retrieves credentials from the EC2 service, and keeps track if
-// those credentials are expired.
-//
-// Example how to configure the EC2RoleProvider with custom http Client, Endpoint
-// or ExpiryWindow
-//
-//     p := &ec2rolecreds.EC2RoleProvider{
-//         // Pass in a custom timeout to be used when requesting
-//         // IAM EC2 Role credentials.
-//         Client: &http.Client{
-//             Timeout: 10 * time.Second,
-//         },
-//         // Do not use early expiry of credentials. If a non zero value is
-//         // specified the credentials will be expired early
-//         ExpiryWindow: 0,
-//     }
-type EC2RoleProvider struct {
-	credentials.Expiry
-
-	// Required EC2Metadata client to use when connecting to EC2 metadata service.
-	Client *ec2metadata.EC2Metadata
-
-	// ExpiryWindow will allow the credentials to trigger refreshing prior to
-	// the credentials actually expiring. This is beneficial so race conditions
-	// with expiring credentials do not cause request to fail unexpectedly
-	// due to ExpiredTokenException exceptions.
-	//
-	// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true
-	// 10 seconds before the credentials are actually expired.
-	//
-	// If ExpiryWindow is 0 or less it will be ignored.
-	ExpiryWindow time.Duration
-}
-
-// NewCredentials returns a pointer to a new Credentials object wrapping
-// the EC2RoleProvider. Takes a ConfigProvider to create a EC2Metadata client.
-// The ConfigProvider is satisfied by the session.Session type.
-func NewCredentials(c client.ConfigProvider, options ...func(*EC2RoleProvider)) *credentials.Credentials {
-	p := &EC2RoleProvider{
-		Client: ec2metadata.New(c),
-	}
-
-	for _, option := range options {
-		option(p)
-	}
-
-	return credentials.NewCredentials(p)
-}
-
-// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping
-// the EC2RoleProvider. Takes a EC2Metadata client to use when connecting to EC2
-// metadata service.
-func NewCredentialsWithClient(client *ec2metadata.EC2Metadata, options ...func(*EC2RoleProvider)) *credentials.Credentials {
-	p := &EC2RoleProvider{
-		Client: client,
-	}
-
-	for _, option := range options {
-		option(p)
-	}
-
-	return credentials.NewCredentials(p)
-}
-
-// Retrieve retrieves credentials from the EC2 service.
-// Error will be returned if the request fails, or unable to extract
-// the desired credentials.
-func (m *EC2RoleProvider) Retrieve() (credentials.Value, error) {
-	credsList, err := requestCredList(m.Client)
-	if err != nil {
-		return credentials.Value{}, err
-	}
-
-	if len(credsList) == 0 {
-		return credentials.Value{}, awserr.New("EmptyEC2RoleList", "empty EC2 Role list", nil)
-	}
-	credsName := credsList[0]
-
-	roleCreds, err := requestCred(m.Client, credsName)
-	if err != nil {
-		return credentials.Value{}, err
-	}
-
-	m.SetExpiration(roleCreds.Expiration, m.ExpiryWindow)
-
-	return credentials.Value{
-		AccessKeyID:     roleCreds.AccessKeyID,
-		SecretAccessKey: roleCreds.SecretAccessKey,
-		SessionToken:    roleCreds.Token,
-	}, nil
-}
-
-// A ec2RoleCredRespBody provides the shape for unmarshalling credential
-// request responses.
-type ec2RoleCredRespBody struct {
-	// Success State
-	Expiration      time.Time
-	AccessKeyID     string
-	SecretAccessKey string
-	Token           string
-
-	// Error state
-	Code    string
-	Message string
-}
-
-const iamSecurityCredsPath = "/iam/security-credentials"
-
-// requestCredList requests a list of credentials from the EC2 service.
-// If there are no credentials, or there is an error making or receiving the request
-func requestCredList(client *ec2metadata.EC2Metadata) ([]string, error) {
-	resp, err := client.GetMetadata(iamSecurityCredsPath)
-	if err != nil {
-		return nil, awserr.New("EC2RoleRequestError", "failed to list EC2 Roles", err)
-	}
-
-	credsList := []string{}
-	s := bufio.NewScanner(strings.NewReader(resp))
-	for s.Scan() {
-		credsList = append(credsList, s.Text())
-	}
-
-	if err := s.Err(); err != nil {
-		return nil, awserr.New("SerializationError", "failed to read list of EC2 Roles", err)
-	}
-
-	return credsList, nil
-}
-
-// requestCred requests the credentials for a specific credentials from the EC2 service.
-//
-// If the credentials cannot be found, or there is an error reading the response
-// and error will be returned.
-func requestCred(client *ec2metadata.EC2Metadata, credsName string) (ec2RoleCredRespBody, error) {
-	resp, err := client.GetMetadata(path.Join(iamSecurityCredsPath, credsName))
-	if err != nil {
-		return ec2RoleCredRespBody{},
-			awserr.New("EC2RoleRequestError",
-				fmt.Sprintf("failed to get %s EC2 Role credentials", credsName),
-				err)
-	}
-
-	respCreds := ec2RoleCredRespBody{}
-	if err := json.NewDecoder(strings.NewReader(resp)).Decode(&respCreds); err != nil {
-		return ec2RoleCredRespBody{},
-			awserr.New("SerializationError",
-				fmt.Sprintf("failed to decode %s EC2 Role credentials", credsName),
-				err)
-	}
-
-	if respCreds.Code != "Success" {
-		// If an error code was returned something failed requesting the role.
-		return ec2RoleCredRespBody{}, awserr.New(respCreds.Code, respCreds.Message, nil)
-	}
-
-	return respCreds, nil
-}

+ 0 - 159
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider_test.go

@@ -1,159 +0,0 @@
-package ec2rolecreds_test
-
-import (
-	"fmt"
-	"net/http"
-	"net/http/httptest"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
-	"github.com/aws/aws-sdk-go/aws/ec2metadata"
-	"github.com/aws/aws-sdk-go/aws/session"
-)
-
-const credsRespTmpl = `{
-  "Code": "Success",
-  "Type": "AWS-HMAC",
-  "AccessKeyId" : "accessKey",
-  "SecretAccessKey" : "secret",
-  "Token" : "token",
-  "Expiration" : "%s",
-  "LastUpdated" : "2009-11-23T0:00:00Z"
-}`
-
-const credsFailRespTmpl = `{
-  "Code": "ErrorCode",
-  "Message": "ErrorMsg",
-  "LastUpdated": "2009-11-23T0:00:00Z"
-}`
-
-func initTestServer(expireOn string, failAssume bool) *httptest.Server {
-	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		if r.URL.Path == "/latest/meta-data/iam/security-credentials" {
-			fmt.Fprintln(w, "RoleName")
-		} else if r.URL.Path == "/latest/meta-data/iam/security-credentials/RoleName" {
-			if failAssume {
-				fmt.Fprintf(w, credsFailRespTmpl)
-			} else {
-				fmt.Fprintf(w, credsRespTmpl, expireOn)
-			}
-		} else {
-			http.Error(w, "bad request", http.StatusBadRequest)
-		}
-	}))
-
-	return server
-}
-
-func TestEC2RoleProvider(t *testing.T) {
-	server := initTestServer("2014-12-16T01:51:37Z", false)
-	defer server.Close()
-
-	p := &ec2rolecreds.EC2RoleProvider{
-		Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
-	}
-
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error, %v", err)
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
-}
-
-func TestEC2RoleProviderFailAssume(t *testing.T) {
-	server := initTestServer("2014-12-16T01:51:37Z", true)
-	defer server.Close()
-
-	p := &ec2rolecreds.EC2RoleProvider{
-		Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
-	}
-
-	creds, err := p.Retrieve()
-	assert.Error(t, err, "Expect error")
-
-	e := err.(awserr.Error)
-	assert.Equal(t, "ErrorCode", e.Code())
-	assert.Equal(t, "ErrorMsg", e.Message())
-	assert.Nil(t, e.OrigErr())
-
-	assert.Equal(t, "", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Equal(t, "", creds.SessionToken, "Expect session token to match")
-}
-
-func TestEC2RoleProviderIsExpired(t *testing.T) {
-	server := initTestServer("2014-12-16T01:51:37Z", false)
-	defer server.Close()
-
-	p := &ec2rolecreds.EC2RoleProvider{
-		Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
-	}
-	p.CurrentTime = func() time.Time {
-		return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC)
-	}
-
-	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
-
-	_, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error, %v", err)
-
-	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
-
-	p.CurrentTime = func() time.Time {
-		return time.Date(3014, 12, 15, 21, 26, 0, 0, time.UTC)
-	}
-
-	assert.True(t, p.IsExpired(), "Expect creds to be expired.")
-}
-
-func TestEC2RoleProviderExpiryWindowIsExpired(t *testing.T) {
-	server := initTestServer("2014-12-16T01:51:37Z", false)
-	defer server.Close()
-
-	p := &ec2rolecreds.EC2RoleProvider{
-		Client:       ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
-		ExpiryWindow: time.Hour * 1,
-	}
-	p.CurrentTime = func() time.Time {
-		return time.Date(2014, 12, 15, 0, 51, 37, 0, time.UTC)
-	}
-
-	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
-
-	_, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error, %v", err)
-
-	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
-
-	p.CurrentTime = func() time.Time {
-		return time.Date(2014, 12, 16, 0, 55, 37, 0, time.UTC)
-	}
-
-	assert.True(t, p.IsExpired(), "Expect creds to be expired.")
-}
-
-func BenchmarkEC3RoleProvider(b *testing.B) {
-	server := initTestServer("2014-12-16T01:51:37Z", false)
-	defer server.Close()
-
-	p := &ec2rolecreds.EC2RoleProvider{
-		Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
-	}
-	_, err := p.Retrieve()
-	if err != nil {
-		b.Fatal(err)
-	}
-
-	b.ResetTimer()
-	for i := 0; i < b.N; i++ {
-		if _, err := p.Retrieve(); err != nil {
-			b.Fatal(err)
-		}
-	}
-}

+ 0 - 73
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go

@@ -1,73 +0,0 @@
-package credentials
-
-import (
-	"os"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-var (
-	// ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be
-	// found in the process's environment.
-	//
-	// @readonly
-	ErrAccessKeyIDNotFound = awserr.New("EnvAccessKeyNotFound", "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment", nil)
-
-	// ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key
-	// can't be found in the process's environment.
-	//
-	// @readonly
-	ErrSecretAccessKeyNotFound = awserr.New("EnvSecretNotFound", "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment", nil)
-)
-
-// A EnvProvider retrieves credentials from the environment variables of the
-// running process. Environment credentials never expire.
-//
-// Environment variables used:
-//
-// * Access Key ID:     AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY
-// * Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY
-type EnvProvider struct {
-	retrieved bool
-}
-
-// NewEnvCredentials returns a pointer to a new Credentials object
-// wrapping the environment variable provider.
-func NewEnvCredentials() *Credentials {
-	return NewCredentials(&EnvProvider{})
-}
-
-// Retrieve retrieves the keys from the environment.
-func (e *EnvProvider) Retrieve() (Value, error) {
-	e.retrieved = false
-
-	id := os.Getenv("AWS_ACCESS_KEY_ID")
-	if id == "" {
-		id = os.Getenv("AWS_ACCESS_KEY")
-	}
-
-	secret := os.Getenv("AWS_SECRET_ACCESS_KEY")
-	if secret == "" {
-		secret = os.Getenv("AWS_SECRET_KEY")
-	}
-
-	if id == "" {
-		return Value{}, ErrAccessKeyIDNotFound
-	}
-
-	if secret == "" {
-		return Value{}, ErrSecretAccessKeyNotFound
-	}
-
-	e.retrieved = true
-	return Value{
-		AccessKeyID:     id,
-		SecretAccessKey: secret,
-		SessionToken:    os.Getenv("AWS_SESSION_TOKEN"),
-	}, nil
-}
-
-// IsExpired returns if the credentials have been retrieved.
-func (e *EnvProvider) IsExpired() bool {
-	return !e.retrieved
-}

+ 0 - 147
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go

@@ -1,147 +0,0 @@
-package credentials
-
-import (
-	"fmt"
-	"os"
-	"path/filepath"
-
-	"github.com/go-ini/ini"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-var (
-	// ErrSharedCredentialsHomeNotFound is emitted when the user directory cannot be found.
-	//
-	// @readonly
-	ErrSharedCredentialsHomeNotFound = awserr.New("UserHomeNotFound", "user home directory not found.", nil)
-)
-
-// A SharedCredentialsProvider retrieves credentials from the current user's home
-// directory, and keeps track if those credentials are expired.
-//
-// Profile ini file example: $HOME/.aws/credentials
-type SharedCredentialsProvider struct {
-	// Path to the shared credentials file.
-	//
-	// If empty will look for "AWS_SHARED_CREDENTIALS_FILE" env variable. If the
-	// env value is empty will default to current user's home directory.
-	// Linux/OSX: "$HOME/.aws/credentials"
-	// Windows:   "%USERPROFILE%\.aws\credentials"
-	Filename string
-
-	// AWS Profile to extract credentials from the shared credentials file. If empty
-	// will default to environment variable "AWS_PROFILE" or "default" if
-	// environment variable is also not set.
-	Profile string
-
-	// retrieved states if the credentials have been successfully retrieved.
-	retrieved bool
-}
-
-// NewSharedCredentials returns a pointer to a new Credentials object
-// wrapping the Profile file provider.
-func NewSharedCredentials(filename, profile string) *Credentials {
-	return NewCredentials(&SharedCredentialsProvider{
-		Filename: filename,
-		Profile:  profile,
-	})
-}
-
-// Retrieve reads and extracts the shared credentials from the current
-// users home directory.
-func (p *SharedCredentialsProvider) Retrieve() (Value, error) {
-	p.retrieved = false
-
-	filename, err := p.filename()
-	if err != nil {
-		return Value{}, err
-	}
-
-	creds, err := loadProfile(filename, p.profile())
-	if err != nil {
-		return Value{}, err
-	}
-
-	p.retrieved = true
-	return creds, nil
-}
-
-// IsExpired returns if the shared credentials have expired.
-func (p *SharedCredentialsProvider) IsExpired() bool {
-	return !p.retrieved
-}
-
-// loadProfiles loads from the file pointed to by shared credentials filename for profile.
-// The credentials retrieved from the profile will be returned or error. Error will be
-// returned if it fails to read from the file, or the data is invalid.
-func loadProfile(filename, profile string) (Value, error) {
-	config, err := ini.Load(filename)
-	if err != nil {
-		return Value{}, awserr.New("SharedCredsLoad", "failed to load shared credentials file", err)
-	}
-	iniProfile, err := config.GetSection(profile)
-	if err != nil {
-		return Value{}, awserr.New("SharedCredsLoad", "failed to get profile", err)
-	}
-
-	id, err := iniProfile.GetKey("aws_access_key_id")
-	if err != nil {
-		return Value{}, awserr.New("SharedCredsAccessKey",
-			fmt.Sprintf("shared credentials %s in %s did not contain aws_access_key_id", profile, filename),
-			err)
-	}
-
-	secret, err := iniProfile.GetKey("aws_secret_access_key")
-	if err != nil {
-		return Value{}, awserr.New("SharedCredsSecret",
-			fmt.Sprintf("shared credentials %s in %s did not contain aws_secret_access_key", profile, filename),
-			nil)
-	}
-
-	// Default to empty string if not found
-	token := iniProfile.Key("aws_session_token")
-
-	return Value{
-		AccessKeyID:     id.String(),
-		SecretAccessKey: secret.String(),
-		SessionToken:    token.String(),
-	}, nil
-}
-
-// filename returns the filename to use to read AWS shared credentials.
-//
-// Will return an error if the user's home directory path cannot be found.
-func (p *SharedCredentialsProvider) filename() (string, error) {
-	if p.Filename == "" {
-		if p.Filename = os.Getenv("AWS_SHARED_CREDENTIALS_FILE"); p.Filename != "" {
-			return p.Filename, nil
-		}
-
-		homeDir := os.Getenv("HOME") // *nix
-		if homeDir == "" {           // Windows
-			homeDir = os.Getenv("USERPROFILE")
-		}
-		if homeDir == "" {
-			return "", ErrSharedCredentialsHomeNotFound
-		}
-
-		p.Filename = filepath.Join(homeDir, ".aws", "credentials")
-	}
-
-	return p.Filename, nil
-}
-
-// profile returns the AWS shared credentials profile.  If empty will read
-// environment variable "AWS_PROFILE". If that is not set profile will
-// return "default".
-func (p *SharedCredentialsProvider) profile() string {
-	if p.Profile == "" {
-		p.Profile = os.Getenv("AWS_PROFILE")
-	}
-	if p.Profile == "" {
-		p.Profile = "default"
-	}
-
-	return p.Profile
-}

+ 0 - 100
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider_test.go

@@ -1,100 +0,0 @@
-package credentials
-
-import (
-	"github.com/stretchr/testify/assert"
-	"os"
-	"testing"
-)
-
-func TestSharedCredentialsProvider(t *testing.T) {
-	os.Clearenv()
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
-}
-
-func TestSharedCredentialsProviderIsExpired(t *testing.T) {
-	os.Clearenv()
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
-
-	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve")
-
-	_, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-
-	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve")
-}
-
-func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILE(t *testing.T) {
-	os.Clearenv()
-	os.Setenv("AWS_SHARED_CREDENTIALS_FILE", "example.ini")
-	p := SharedCredentialsProvider{}
-	creds, err := p.Retrieve()
-
-	assert.Nil(t, err, "Expect no error")
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
-}
-
-func TestSharedCredentialsProviderWithAWS_PROFILE(t *testing.T) {
-	os.Clearenv()
-	os.Setenv("AWS_PROFILE", "no_token")
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Empty(t, creds.SessionToken, "Expect no token")
-}
-
-func TestSharedCredentialsProviderWithoutTokenFromProfile(t *testing.T) {
-	os.Clearenv()
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: "no_token"}
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Empty(t, creds.SessionToken, "Expect no token")
-}
-
-func TestSharedCredentialsProviderColonInCredFile(t *testing.T) {
-	os.Clearenv()
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: "with_colon"}
-	creds, err := p.Retrieve()
-	assert.Nil(t, err, "Expect no error")
-
-	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
-	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
-	assert.Empty(t, creds.SessionToken, "Expect no token")
-}
-
-func BenchmarkSharedCredentialsProvider(b *testing.B) {
-	os.Clearenv()
-
-	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
-	_, err := p.Retrieve()
-	if err != nil {
-		b.Fatal(err)
-	}
-
-	b.ResetTimer()
-	for i := 0; i < b.N; i++ {
-		_, err := p.Retrieve()
-		if err != nil {
-			b.Fatal(err)
-		}
-	}
-}

+ 0 - 44
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go

@@ -1,44 +0,0 @@
-package credentials
-
-import (
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-var (
-	// ErrStaticCredentialsEmpty is emitted when static credentials are empty.
-	//
-	// @readonly
-	ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil)
-)
-
-// A StaticProvider is a set of credentials which are set pragmatically,
-// and will never expire.
-type StaticProvider struct {
-	Value
-}
-
-// NewStaticCredentials returns a pointer to a new Credentials object
-// wrapping a static credentials value provider.
-func NewStaticCredentials(id, secret, token string) *Credentials {
-	return NewCredentials(&StaticProvider{Value: Value{
-		AccessKeyID:     id,
-		SecretAccessKey: secret,
-		SessionToken:    token,
-	}})
-}
-
-// Retrieve returns the credentials or error if the credentials are invalid.
-func (s *StaticProvider) Retrieve() (Value, error) {
-	if s.AccessKeyID == "" || s.SecretAccessKey == "" {
-		return Value{}, ErrStaticCredentialsEmpty
-	}
-
-	return s.Value, nil
-}
-
-// IsExpired returns if the credentials are expired.
-//
-// For StaticProvider, the credentials never expired.
-func (s *StaticProvider) IsExpired() bool {
-	return false
-}

+ 0 - 130
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go

@@ -1,130 +0,0 @@
-// Package stscreds are credential Providers to retrieve STS AWS credentials.
-//
-// STS provides multiple ways to retrieve credentials which can be used when making
-// future AWS service API operation calls.
-package stscreds
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/service/sts"
-)
-
-// AssumeRoler represents the minimal subset of the STS client API used by this provider.
-type AssumeRoler interface {
-	AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)
-}
-
-// DefaultDuration is the default amount of time in minutes that the credentials
-// will be valid for.
-var DefaultDuration = time.Duration(15) * time.Minute
-
-// AssumeRoleProvider retrieves temporary credentials from the STS service, and
-// keeps track of their expiration time. This provider must be used explicitly,
-// as it is not included in the credentials chain.
-type AssumeRoleProvider struct {
-	credentials.Expiry
-
-	// STS client to make assume role request with.
-	Client AssumeRoler
-
-	// Role to be assumed.
-	RoleARN string
-
-	// Session name, if you wish to reuse the credentials elsewhere.
-	RoleSessionName string
-
-	// Expiry duration of the STS credentials. Defaults to 15 minutes if not set.
-	Duration time.Duration
-
-	// Optional ExternalID to pass along, defaults to nil if not set.
-	ExternalID *string
-
-	// ExpiryWindow will allow the credentials to trigger refreshing prior to
-	// the credentials actually expiring. This is beneficial so race conditions
-	// with expiring credentials do not cause request to fail unexpectedly
-	// due to ExpiredTokenException exceptions.
-	//
-	// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true
-	// 10 seconds before the credentials are actually expired.
-	//
-	// If ExpiryWindow is 0 or less it will be ignored.
-	ExpiryWindow time.Duration
-}
-
-// NewCredentials returns a pointer to a new Credentials object wrapping the
-// AssumeRoleProvider. The credentials will expire every 15 minutes and the
-// role will be named after a nanosecond timestamp of this operation.
-//
-// Takes a Config provider to create the STS client. The ConfigProvider is
-// satisfied by the session.Session type.
-func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {
-	p := &AssumeRoleProvider{
-		Client:   sts.New(c),
-		RoleARN:  roleARN,
-		Duration: DefaultDuration,
-	}
-
-	for _, option := range options {
-		option(p)
-	}
-
-	return credentials.NewCredentials(p)
-}
-
-// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the
-// AssumeRoleProvider. The credentials will expire every 15 minutes and the
-// role will be named after a nanosecond timestamp of this operation.
-//
-// Takes an AssumeRoler which can be satisfiede by the STS client.
-func NewCredentialsWithClient(svc AssumeRoler, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {
-	p := &AssumeRoleProvider{
-		Client:   svc,
-		RoleARN:  roleARN,
-		Duration: DefaultDuration,
-	}
-
-	for _, option := range options {
-		option(p)
-	}
-
-	return credentials.NewCredentials(p)
-}
-
-// Retrieve generates a new set of temporary credentials using STS.
-func (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) {
-
-	// Apply defaults where parameters are not set.
-	if p.RoleSessionName == "" {
-		// Try to work out a role name that will hopefully end up unique.
-		p.RoleSessionName = fmt.Sprintf("%d", time.Now().UTC().UnixNano())
-	}
-	if p.Duration == 0 {
-		// Expire as often as AWS permits.
-		p.Duration = DefaultDuration
-	}
-
-	roleOutput, err := p.Client.AssumeRole(&sts.AssumeRoleInput{
-		DurationSeconds: aws.Int64(int64(p.Duration / time.Second)),
-		RoleArn:         aws.String(p.RoleARN),
-		RoleSessionName: aws.String(p.RoleSessionName),
-		ExternalId:      p.ExternalID,
-	})
-
-	if err != nil {
-		return credentials.Value{}, err
-	}
-
-	// We will proactively generate new credentials before they expire.
-	p.SetExpiration(*roleOutput.Credentials.Expiration, p.ExpiryWindow)
-
-	return credentials.Value{
-		AccessKeyID:     *roleOutput.Credentials.AccessKeyId,
-		SecretAccessKey: *roleOutput.Credentials.SecretAccessKey,
-		SessionToken:    *roleOutput.Credentials.SessionToken,
-	}, nil
-}

+ 0 - 76
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/defaults/defaults.go

@@ -1,76 +0,0 @@
-// Package defaults is a collection of helpers to retrieve the SDK's default
-// configuration and handlers.
-package defaults
-
-import (
-	"net/http"
-	"os"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/corehandlers"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
-	"github.com/aws/aws-sdk-go/aws/ec2metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/endpoints"
-)
-
-// A Defaults provides a collection of default values for SDK clients.
-type Defaults struct {
-	Config   *aws.Config
-	Handlers request.Handlers
-}
-
-// Get returns the SDK's default values with Config and handlers pre-configured.
-func Get() Defaults {
-	cfg := Config()
-	handlers := Handlers()
-	cfg.Credentials = CredChain(cfg, handlers)
-
-	return Defaults{
-		Config:   cfg,
-		Handlers: handlers,
-	}
-}
-
-// Config returns the default configuration.
-func Config() *aws.Config {
-	return aws.NewConfig().
-		WithCredentials(credentials.AnonymousCredentials).
-		WithRegion(os.Getenv("AWS_REGION")).
-		WithHTTPClient(http.DefaultClient).
-		WithMaxRetries(aws.UseServiceDefaultRetries).
-		WithLogger(aws.NewDefaultLogger()).
-		WithLogLevel(aws.LogOff).
-		WithSleepDelay(time.Sleep)
-}
-
-// Handlers returns the default request handlers.
-func Handlers() request.Handlers {
-	var handlers request.Handlers
-
-	handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
-	handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
-	handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler)
-	handlers.Send.PushBackNamed(corehandlers.SendHandler)
-	handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)
-	handlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler)
-
-	return handlers
-}
-
-// CredChain returns the default credential chain.
-func CredChain(cfg *aws.Config, handlers request.Handlers) *credentials.Credentials {
-	endpoint, signingRegion := endpoints.EndpointForRegion(ec2metadata.ServiceName, *cfg.Region, true)
-
-	return credentials.NewChainCredentials(
-		[]credentials.Provider{
-			&credentials.EnvProvider{},
-			&credentials.SharedCredentialsProvider{Filename: "", Profile: ""},
-			&ec2rolecreds.EC2RoleProvider{
-				Client:       ec2metadata.NewClient(*cfg, handlers, endpoint, signingRegion),
-				ExpiryWindow: 5 * time.Minute,
-			},
-		})
-}

+ 0 - 43
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go

@@ -1,43 +0,0 @@
-package ec2metadata
-
-import (
-	"path"
-
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// GetMetadata uses the path provided to request
-func (c *EC2Metadata) GetMetadata(p string) (string, error) {
-	op := &request.Operation{
-		Name:       "GetMetadata",
-		HTTPMethod: "GET",
-		HTTPPath:   path.Join("/", "meta-data", p),
-	}
-
-	output := &metadataOutput{}
-	req := c.NewRequest(op, nil, output)
-
-	return output.Content, req.Send()
-}
-
-// Region returns the region the instance is running in.
-func (c *EC2Metadata) Region() (string, error) {
-	resp, err := c.GetMetadata("placement/availability-zone")
-	if err != nil {
-		return "", err
-	}
-
-	// returns region without the suffix. Eg: us-west-2a becomes us-west-2
-	return resp[:len(resp)-1], nil
-}
-
-// Available returns if the application has access to the EC2 Metadata service.
-// Can be used to determine if application is running within an EC2 Instance and
-// the metadata service is available.
-func (c *EC2Metadata) Available() bool {
-	if _, err := c.GetMetadata("instance-id"); err != nil {
-		return false
-	}
-
-	return true
-}

+ 0 - 101
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go

@@ -1,101 +0,0 @@
-package ec2metadata_test
-
-import (
-	"bytes"
-	"io/ioutil"
-	"net/http"
-	"net/http/httptest"
-	"path"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/ec2metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/aws/session"
-)
-
-func initTestServer(path string, resp string) *httptest.Server {
-	return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		if r.RequestURI != path {
-			http.Error(w, "not found", http.StatusNotFound)
-			return
-		}
-
-		w.Write([]byte(resp))
-	}))
-}
-
-func TestEndpoint(t *testing.T) {
-	c := ec2metadata.New(session.New())
-	op := &request.Operation{
-		Name:       "GetMetadata",
-		HTTPMethod: "GET",
-		HTTPPath:   path.Join("/", "meta-data", "testpath"),
-	}
-
-	req := c.NewRequest(op, nil, nil)
-	assert.Equal(t, "http://169.254.169.254/latest", req.ClientInfo.Endpoint)
-	assert.Equal(t, "http://169.254.169.254/latest/meta-data/testpath", req.HTTPRequest.URL.String())
-}
-
-func TestGetMetadata(t *testing.T) {
-	server := initTestServer(
-		"/latest/meta-data/some/path",
-		"success", // real response includes suffix
-	)
-	defer server.Close()
-	c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
-
-	resp, err := c.GetMetadata("some/path")
-
-	assert.NoError(t, err)
-	assert.Equal(t, "success", resp)
-}
-
-func TestGetRegion(t *testing.T) {
-	server := initTestServer(
-		"/latest/meta-data/placement/availability-zone",
-		"us-west-2a", // real response includes suffix
-	)
-	defer server.Close()
-	c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
-
-	region, err := c.Region()
-
-	assert.NoError(t, err)
-	assert.Equal(t, "us-west-2", region)
-}
-
-func TestMetadataAvailable(t *testing.T) {
-	server := initTestServer(
-		"/latest/meta-data/instance-id",
-		"instance-id",
-	)
-	defer server.Close()
-	c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
-
-	available := c.Available()
-
-	assert.True(t, available)
-}
-
-func TestMetadataNotAvailable(t *testing.T) {
-	c := ec2metadata.New(session.New())
-	c.Handlers.Send.Clear()
-	c.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &http.Response{
-			StatusCode: int(0),
-			Status:     http.StatusText(int(0)),
-			Body:       ioutil.NopCloser(bytes.NewReader([]byte{})),
-		}
-		r.Error = awserr.New("RequestError", "send request failed", nil)
-		r.Retryable = aws.Bool(true) // network errors are retryable
-	})
-
-	available := c.Available()
-
-	assert.False(t, available)
-}

+ 0 - 116
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go

@@ -1,116 +0,0 @@
-// Package ec2metadata provides the client for making API calls to the
-// EC2 Metadata service.
-package ec2metadata
-
-import (
-	"io/ioutil"
-	"net"
-	"net/http"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// ServiceName is the name of the service.
-const ServiceName = "ec2metadata"
-
-// A EC2Metadata is an EC2 Metadata service Client.
-type EC2Metadata struct {
-	*client.Client
-}
-
-// New creates a new instance of the EC2Metadata client with a session.
-// This client is safe to use across multiple goroutines.
-//
-// Example:
-//     // Create a EC2Metadata client from just a session.
-//     svc := ec2metadata.New(mySession)
-//
-//     // Create a EC2Metadata client with additional configuration
-//     svc := ec2metadata.New(mySession, aws.NewConfig().WithLogLevel(aws.LogDebugHTTPBody))
-func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata {
-	c := p.ClientConfig(ServiceName, cfgs...)
-	return NewClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// NewClient returns a new EC2Metadata client. Should be used to create
-// a client when not using a session. Generally using just New with a session
-// is preferred.
-func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string, opts ...func(*client.Client)) *EC2Metadata {
-	// If the default http client is provided, replace it with a custom
-	// client using default timeouts.
-	if cfg.HTTPClient == http.DefaultClient {
-		cfg.HTTPClient = &http.Client{
-			Transport: &http.Transport{
-				Proxy: http.ProxyFromEnvironment,
-				Dial: (&net.Dialer{
-					// use a shorter timeout than default because the metadata
-					// service is local if it is running, and to fail faster
-					// if not running on an ec2 instance.
-					Timeout:   5 * time.Second,
-					KeepAlive: 30 * time.Second,
-				}).Dial,
-				TLSHandshakeTimeout: 10 * time.Second,
-			},
-		}
-	}
-
-	svc := &EC2Metadata{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName: ServiceName,
-				Endpoint:    endpoint,
-				APIVersion:  "latest",
-			},
-			handlers,
-		),
-	}
-
-	svc.Handlers.Unmarshal.PushBack(unmarshalHandler)
-	svc.Handlers.UnmarshalError.PushBack(unmarshalError)
-	svc.Handlers.Validate.Clear()
-	svc.Handlers.Validate.PushBack(validateEndpointHandler)
-
-	// Add additional options to the service config
-	for _, option := range opts {
-		option(svc.Client)
-	}
-
-	return svc
-}
-
-type metadataOutput struct {
-	Content string
-}
-
-func unmarshalHandler(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-	b, err := ioutil.ReadAll(r.HTTPResponse.Body)
-	if err != nil {
-		r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata respose", err)
-	}
-
-	data := r.Data.(*metadataOutput)
-	data.Content = string(b)
-}
-
-func unmarshalError(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-	_, err := ioutil.ReadAll(r.HTTPResponse.Body)
-	if err != nil {
-		r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata error respose", err)
-	}
-
-	// TODO extract the error...
-}
-
-func validateEndpointHandler(r *request.Request) {
-	if r.ClientInfo.Endpoint == "" {
-		r.Error = aws.ErrMissingEndpoint
-	}
-}

+ 0 - 98
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/logger.go

@@ -1,98 +0,0 @@
-package aws
-
-import (
-	"log"
-	"os"
-)
-
-// A LogLevelType defines the level logging should be performed at. Used to instruct
-// the SDK which statements should be logged.
-type LogLevelType uint
-
-// LogLevel returns the pointer to a LogLevel. Should be used to workaround
-// not being able to take the address of a non-composite literal.
-func LogLevel(l LogLevelType) *LogLevelType {
-	return &l
-}
-
-// Value returns the LogLevel value or the default value LogOff if the LogLevel
-// is nil. Safe to use on nil value LogLevelTypes.
-func (l *LogLevelType) Value() LogLevelType {
-	if l != nil {
-		return *l
-	}
-	return LogOff
-}
-
-// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be
-// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If
-// LogLevel is nill, will default to LogOff comparison.
-func (l *LogLevelType) Matches(v LogLevelType) bool {
-	c := l.Value()
-	return c&v == v
-}
-
-// AtLeast returns true if this LogLevel is at least high enough to satisfies v.
-// Is safe to use on nil value LogLevelTypes. If LogLevel is nill, will default
-// to LogOff comparison.
-func (l *LogLevelType) AtLeast(v LogLevelType) bool {
-	c := l.Value()
-	return c >= v
-}
-
-const (
-	// LogOff states that no logging should be performed by the SDK. This is the
-	// default state of the SDK, and should be use to disable all logging.
-	LogOff LogLevelType = iota * 0x1000
-
-	// LogDebug state that debug output should be logged by the SDK. This should
-	// be used to inspect request made and responses received.
-	LogDebug
-)
-
-// Debug Logging Sub Levels
-const (
-	// LogDebugWithSigning states that the SDK should log request signing and
-	// presigning events. This should be used to log the signing details of
-	// requests for debugging. Will also enable LogDebug.
-	LogDebugWithSigning LogLevelType = LogDebug | (1 << iota)
-
-	// LogDebugWithHTTPBody states the SDK should log HTTP request and response
-	// HTTP bodys in addition to the headers and path. This should be used to
-	// see the body content of requests and responses made while using the SDK
-	// Will also enable LogDebug.
-	LogDebugWithHTTPBody
-
-	// LogDebugWithRequestRetries states the SDK should log when service requests will
-	// be retried. This should be used to log when you want to log when service
-	// requests are being retried. Will also enable LogDebug.
-	LogDebugWithRequestRetries
-
-	// LogDebugWithRequestErrors states the SDK should log when service requests fail
-	// to build, send, validate, or unmarshal.
-	LogDebugWithRequestErrors
-)
-
-// A Logger is a minimalistic interface for the SDK to log messages to. Should
-// be used to provide custom logging writers for the SDK to use.
-type Logger interface {
-	Log(...interface{})
-}
-
-// NewDefaultLogger returns a Logger which will write log messages to stdout, and
-// use same formatting runes as the stdlib log.Logger
-func NewDefaultLogger() Logger {
-	return &defaultLogger{
-		logger: log.New(os.Stdout, "", log.LstdFlags),
-	}
-}
-
-// A defaultLogger provides a minimalistic logger satisfying the Logger interface.
-type defaultLogger struct {
-	logger *log.Logger
-}
-
-// Log logs the parameters to the stdlib logger. See log.Println.
-func (l defaultLogger) Log(args ...interface{}) {
-	l.logger.Println(args...)
-}

+ 0 - 140
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers.go

@@ -1,140 +0,0 @@
-package request
-
-import (
-	"fmt"
-	"strings"
-)
-
-// A Handlers provides a collection of request handlers for various
-// stages of handling requests.
-type Handlers struct {
-	Validate         HandlerList
-	Build            HandlerList
-	Sign             HandlerList
-	Send             HandlerList
-	ValidateResponse HandlerList
-	Unmarshal        HandlerList
-	UnmarshalMeta    HandlerList
-	UnmarshalError   HandlerList
-	Retry            HandlerList
-	AfterRetry       HandlerList
-}
-
-// Copy returns of this handler's lists.
-func (h *Handlers) Copy() Handlers {
-	return Handlers{
-		Validate:         h.Validate.copy(),
-		Build:            h.Build.copy(),
-		Sign:             h.Sign.copy(),
-		Send:             h.Send.copy(),
-		ValidateResponse: h.ValidateResponse.copy(),
-		Unmarshal:        h.Unmarshal.copy(),
-		UnmarshalError:   h.UnmarshalError.copy(),
-		UnmarshalMeta:    h.UnmarshalMeta.copy(),
-		Retry:            h.Retry.copy(),
-		AfterRetry:       h.AfterRetry.copy(),
-	}
-}
-
-// Clear removes callback functions for all handlers
-func (h *Handlers) Clear() {
-	h.Validate.Clear()
-	h.Build.Clear()
-	h.Send.Clear()
-	h.Sign.Clear()
-	h.Unmarshal.Clear()
-	h.UnmarshalMeta.Clear()
-	h.UnmarshalError.Clear()
-	h.ValidateResponse.Clear()
-	h.Retry.Clear()
-	h.AfterRetry.Clear()
-}
-
-// A HandlerList manages zero or more handlers in a list.
-type HandlerList struct {
-	list []NamedHandler
-}
-
-// A NamedHandler is a struct that contains a name and function callback.
-type NamedHandler struct {
-	Name string
-	Fn   func(*Request)
-}
-
-// copy creates a copy of the handler list.
-func (l *HandlerList) copy() HandlerList {
-	var n HandlerList
-	n.list = append([]NamedHandler{}, l.list...)
-	return n
-}
-
-// Clear clears the handler list.
-func (l *HandlerList) Clear() {
-	l.list = []NamedHandler{}
-}
-
-// Len returns the number of handlers in the list.
-func (l *HandlerList) Len() int {
-	return len(l.list)
-}
-
-// PushBack pushes handler f to the back of the handler list.
-func (l *HandlerList) PushBack(f func(*Request)) {
-	l.list = append(l.list, NamedHandler{"__anonymous", f})
-}
-
-// PushFront pushes handler f to the front of the handler list.
-func (l *HandlerList) PushFront(f func(*Request)) {
-	l.list = append([]NamedHandler{{"__anonymous", f}}, l.list...)
-}
-
-// PushBackNamed pushes named handler f to the back of the handler list.
-func (l *HandlerList) PushBackNamed(n NamedHandler) {
-	l.list = append(l.list, n)
-}
-
-// PushFrontNamed pushes named handler f to the front of the handler list.
-func (l *HandlerList) PushFrontNamed(n NamedHandler) {
-	l.list = append([]NamedHandler{n}, l.list...)
-}
-
-// Remove removes a NamedHandler n
-func (l *HandlerList) Remove(n NamedHandler) {
-	newlist := []NamedHandler{}
-	for _, m := range l.list {
-		if m.Name != n.Name {
-			newlist = append(newlist, m)
-		}
-	}
-	l.list = newlist
-}
-
-// Run executes all handlers in the list with a given request object.
-func (l *HandlerList) Run(r *Request) {
-	for _, f := range l.list {
-		f.Fn(r)
-	}
-}
-
-// MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request
-// header. If the extra parameters are provided they will be added as metadata to the
-// name/version pair resulting in the following format.
-// "name/version (extra0; extra1; ...)"
-// The user agent part will be concatenated with this current request's user agent string.
-func MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request) {
-	ua := fmt.Sprintf("%s/%s", name, version)
-	if len(extra) > 0 {
-		ua += fmt.Sprintf(" (%s)", strings.Join(extra, "; "))
-	}
-	return func(r *Request) {
-		AddToUserAgent(r, ua)
-	}
-}
-
-// MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header.
-// The input string will be concatenated with the current request's user agent string.
-func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) {
-	return func(r *Request) {
-		AddToUserAgent(r, s)
-	}
-}

+ 0 - 47
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/handlers_test.go

@@ -1,47 +0,0 @@
-package request_test
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-func TestHandlerList(t *testing.T) {
-	s := ""
-	r := &request.Request{}
-	l := request.HandlerList{}
-	l.PushBack(func(r *request.Request) {
-		s += "a"
-		r.Data = s
-	})
-	l.Run(r)
-	assert.Equal(t, "a", s)
-	assert.Equal(t, "a", r.Data)
-}
-
-func TestMultipleHandlers(t *testing.T) {
-	r := &request.Request{}
-	l := request.HandlerList{}
-	l.PushBack(func(r *request.Request) { r.Data = nil })
-	l.PushFront(func(r *request.Request) { r.Data = aws.Bool(true) })
-	l.Run(r)
-	if r.Data != nil {
-		t.Error("Expected handler to execute")
-	}
-}
-
-func TestNamedHandlers(t *testing.T) {
-	l := request.HandlerList{}
-	named := request.NamedHandler{Name: "Name", Fn: func(r *request.Request) {}}
-	named2 := request.NamedHandler{Name: "NotName", Fn: func(r *request.Request) {}}
-	l.PushBackNamed(named)
-	l.PushBackNamed(named)
-	l.PushBackNamed(named2)
-	l.PushBack(func(r *request.Request) {})
-	assert.Equal(t, 4, l.Len())
-	l.Remove(named)
-	assert.Equal(t, 2, l.Len())
-}

+ 0 - 279
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request.go

@@ -1,279 +0,0 @@
-package request
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"reflect"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-)
-
-// A Request is the service request to be made.
-type Request struct {
-	Config     aws.Config
-	ClientInfo metadata.ClientInfo
-	Handlers   Handlers
-
-	Retryer
-	Time         time.Time
-	ExpireTime   time.Duration
-	Operation    *Operation
-	HTTPRequest  *http.Request
-	HTTPResponse *http.Response
-	Body         io.ReadSeeker
-	BodyStart    int64 // offset from beginning of Body that the request body starts
-	Params       interface{}
-	Error        error
-	Data         interface{}
-	RequestID    string
-	RetryCount   int
-	Retryable    *bool
-	RetryDelay   time.Duration
-
-	built bool
-}
-
-// An Operation is the service API operation to be made.
-type Operation struct {
-	Name       string
-	HTTPMethod string
-	HTTPPath   string
-	*Paginator
-}
-
-// Paginator keeps track of pagination configuration for an API operation.
-type Paginator struct {
-	InputTokens     []string
-	OutputTokens    []string
-	LimitToken      string
-	TruncationToken string
-}
-
-// New returns a new Request pointer for the service API
-// operation and parameters.
-//
-// Params is any value of input parameters to be the request payload.
-// Data is pointer value to an object which the request's response
-// payload will be deserialized to.
-func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
-	retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request {
-
-	method := operation.HTTPMethod
-	if method == "" {
-		method = "POST"
-	}
-	p := operation.HTTPPath
-	if p == "" {
-		p = "/"
-	}
-
-	httpReq, _ := http.NewRequest(method, "", nil)
-	httpReq.URL, _ = url.Parse(clientInfo.Endpoint + p)
-
-	r := &Request{
-		Config:     cfg,
-		ClientInfo: clientInfo,
-		Handlers:   handlers.Copy(),
-
-		Retryer:     retryer,
-		Time:        time.Now(),
-		ExpireTime:  0,
-		Operation:   operation,
-		HTTPRequest: httpReq,
-		Body:        nil,
-		Params:      params,
-		Error:       nil,
-		Data:        data,
-	}
-	r.SetBufferBody([]byte{})
-
-	return r
-}
-
-// WillRetry returns if the request's can be retried.
-func (r *Request) WillRetry() bool {
-	return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries()
-}
-
-// ParamsFilled returns if the request's parameters have been populated
-// and the parameters are valid. False is returned if no parameters are
-// provided or invalid.
-func (r *Request) ParamsFilled() bool {
-	return r.Params != nil && reflect.ValueOf(r.Params).Elem().IsValid()
-}
-
-// DataFilled returns true if the request's data for response deserialization
-// target has been set and is a valid. False is returned if data is not
-// set, or is invalid.
-func (r *Request) DataFilled() bool {
-	return r.Data != nil && reflect.ValueOf(r.Data).Elem().IsValid()
-}
-
-// SetBufferBody will set the request's body bytes that will be sent to
-// the service API.
-func (r *Request) SetBufferBody(buf []byte) {
-	r.SetReaderBody(bytes.NewReader(buf))
-}
-
-// SetStringBody sets the body of the request to be backed by a string.
-func (r *Request) SetStringBody(s string) {
-	r.SetReaderBody(strings.NewReader(s))
-}
-
-// SetReaderBody will set the request's body reader.
-func (r *Request) SetReaderBody(reader io.ReadSeeker) {
-	r.HTTPRequest.Body = ioutil.NopCloser(reader)
-	r.Body = reader
-}
-
-// Presign returns the request's signed URL. Error will be returned
-// if the signing fails.
-func (r *Request) Presign(expireTime time.Duration) (string, error) {
-	r.ExpireTime = expireTime
-	r.Sign()
-	if r.Error != nil {
-		return "", r.Error
-	}
-	return r.HTTPRequest.URL.String(), nil
-}
-
-func debugLogReqError(r *Request, stage string, retrying bool, err error) {
-	if !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) {
-		return
-	}
-
-	retryStr := "not retrying"
-	if retrying {
-		retryStr = "will retry"
-	}
-
-	r.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v",
-		stage, r.ClientInfo.ServiceName, r.Operation.Name, retryStr, err))
-}
-
-// Build will build the request's object so it can be signed and sent
-// to the service. Build will also validate all the request's parameters.
-// Anny additional build Handlers set on this request will be run
-// in the order they were set.
-//
-// The request will only be built once. Multiple calls to build will have
-// no effect.
-//
-// If any Validate or Build errors occur the build will stop and the error
-// which occurred will be returned.
-func (r *Request) Build() error {
-	if !r.built {
-		r.Error = nil
-		r.Handlers.Validate.Run(r)
-		if r.Error != nil {
-			debugLogReqError(r, "Validate Request", false, r.Error)
-			return r.Error
-		}
-		r.Handlers.Build.Run(r)
-		r.built = true
-	}
-
-	return r.Error
-}
-
-// Sign will sign the request retuning error if errors are encountered.
-//
-// Send will build the request prior to signing. All Sign Handlers will
-// be executed in the order they were set.
-func (r *Request) Sign() error {
-	r.Build()
-	if r.Error != nil {
-		debugLogReqError(r, "Build Request", false, r.Error)
-		return r.Error
-	}
-
-	r.Handlers.Sign.Run(r)
-	return r.Error
-}
-
-// Send will send the request returning error if errors are encountered.
-//
-// Send will sign the request prior to sending. All Send Handlers will
-// be executed in the order they were set.
-func (r *Request) Send() error {
-	for {
-		r.Sign()
-		if r.Error != nil {
-			return r.Error
-		}
-
-		if aws.BoolValue(r.Retryable) {
-			if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
-				r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
-					r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
-			}
-
-			// Re-seek the body back to the original point in for a retry so that
-			// send will send the body's contents again in the upcoming request.
-			r.Body.Seek(r.BodyStart, 0)
-			r.HTTPRequest.Body = ioutil.NopCloser(r.Body)
-		}
-		r.Retryable = nil
-
-		r.Handlers.Send.Run(r)
-		if r.Error != nil {
-			err := r.Error
-			r.Handlers.Retry.Run(r)
-			r.Handlers.AfterRetry.Run(r)
-			if r.Error != nil {
-				debugLogReqError(r, "Send Request", false, r.Error)
-				return r.Error
-			}
-			debugLogReqError(r, "Send Request", true, err)
-			continue
-		}
-
-		r.Handlers.UnmarshalMeta.Run(r)
-		r.Handlers.ValidateResponse.Run(r)
-		if r.Error != nil {
-			err := r.Error
-			r.Handlers.UnmarshalError.Run(r)
-			r.Handlers.Retry.Run(r)
-			r.Handlers.AfterRetry.Run(r)
-			if r.Error != nil {
-				debugLogReqError(r, "Validate Response", false, r.Error)
-				return r.Error
-			}
-			debugLogReqError(r, "Validate Response", true, err)
-			continue
-		}
-
-		r.Handlers.Unmarshal.Run(r)
-		if r.Error != nil {
-			err := r.Error
-			r.Handlers.Retry.Run(r)
-			r.Handlers.AfterRetry.Run(r)
-			if r.Error != nil {
-				debugLogReqError(r, "Unmarshal Response", false, r.Error)
-				return r.Error
-			}
-			debugLogReqError(r, "Unmarshal Response", true, err)
-			continue
-		}
-
-		break
-	}
-
-	return nil
-}
-
-// AddToUserAgent adds the string to the end of the request's current user agent.
-func AddToUserAgent(r *Request, s string) {
-	curUA := r.HTTPRequest.Header.Get("User-Agent")
-	if len(curUA) > 0 {
-		s = curUA + " " + s
-	}
-	r.HTTPRequest.Header.Set("User-Agent", s)
-}

+ 0 - 455
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_pagination_test.go

@@ -1,455 +0,0 @@
-package request_test
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/awstesting/unit"
-	"github.com/aws/aws-sdk-go/service/dynamodb"
-	"github.com/aws/aws-sdk-go/service/route53"
-	"github.com/aws/aws-sdk-go/service/s3"
-)
-
-// Use DynamoDB methods for simplicity
-func TestPaginationQueryPage(t *testing.T) {
-	db := dynamodb.New(unit.Session)
-	tokens, pages, numPages, gotToEnd := []map[string]*dynamodb.AttributeValue{}, []map[string]*dynamodb.AttributeValue{}, 0, false
-
-	reqNum := 0
-	resps := []*dynamodb.QueryOutput{
-		{
-			LastEvaluatedKey: map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
-			Count:            aws.Int64(1),
-			Items: []map[string]*dynamodb.AttributeValue{
-				map[string]*dynamodb.AttributeValue{
-					"key": {S: aws.String("key1")},
-				},
-			},
-		},
-		{
-			LastEvaluatedKey: map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
-			Count:            aws.Int64(1),
-			Items: []map[string]*dynamodb.AttributeValue{
-				map[string]*dynamodb.AttributeValue{
-					"key": {S: aws.String("key2")},
-				},
-			},
-		},
-		{
-			LastEvaluatedKey: map[string]*dynamodb.AttributeValue{},
-			Count:            aws.Int64(1),
-			Items: []map[string]*dynamodb.AttributeValue{
-				map[string]*dynamodb.AttributeValue{
-					"key": {S: aws.String("key3")},
-				},
-			},
-		},
-	}
-
-	db.Handlers.Send.Clear() // mock sending
-	db.Handlers.Unmarshal.Clear()
-	db.Handlers.UnmarshalMeta.Clear()
-	db.Handlers.ValidateResponse.Clear()
-	db.Handlers.Build.PushBack(func(r *request.Request) {
-		in := r.Params.(*dynamodb.QueryInput)
-		if in == nil {
-			tokens = append(tokens, nil)
-		} else if len(in.ExclusiveStartKey) != 0 {
-			tokens = append(tokens, in.ExclusiveStartKey)
-		}
-	})
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &dynamodb.QueryInput{
-		Limit:     aws.Int64(2),
-		TableName: aws.String("tablename"),
-	}
-	err := db.QueryPages(params, func(p *dynamodb.QueryOutput, last bool) bool {
-		numPages++
-		for _, item := range p.Items {
-			pages = append(pages, item)
-		}
-		if last {
-			if gotToEnd {
-				assert.Fail(t, "last=true happened twice")
-			}
-			gotToEnd = true
-		}
-		return true
-	})
-	assert.Nil(t, err)
-
-	assert.Equal(t,
-		[]map[string]*dynamodb.AttributeValue{
-			map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
-			map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
-		}, tokens)
-	assert.Equal(t,
-		[]map[string]*dynamodb.AttributeValue{
-			map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
-			map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
-			map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key3")}},
-		}, pages)
-	assert.Equal(t, 3, numPages)
-	assert.True(t, gotToEnd)
-	assert.Nil(t, params.ExclusiveStartKey)
-}
-
-// Use DynamoDB methods for simplicity
-func TestPagination(t *testing.T) {
-	db := dynamodb.New(unit.Session)
-	tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
-
-	reqNum := 0
-	resps := []*dynamodb.ListTablesOutput{
-		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
-		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
-		{TableNames: []*string{aws.String("Table5")}},
-	}
-
-	db.Handlers.Send.Clear() // mock sending
-	db.Handlers.Unmarshal.Clear()
-	db.Handlers.UnmarshalMeta.Clear()
-	db.Handlers.ValidateResponse.Clear()
-	db.Handlers.Build.PushBack(func(r *request.Request) {
-		in := r.Params.(*dynamodb.ListTablesInput)
-		if in == nil {
-			tokens = append(tokens, "")
-		} else if in.ExclusiveStartTableName != nil {
-			tokens = append(tokens, *in.ExclusiveStartTableName)
-		}
-	})
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
-	err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
-		numPages++
-		for _, t := range p.TableNames {
-			pages = append(pages, *t)
-		}
-		if last {
-			if gotToEnd {
-				assert.Fail(t, "last=true happened twice")
-			}
-			gotToEnd = true
-		}
-		return true
-	})
-
-	assert.Equal(t, []string{"Table2", "Table4"}, tokens)
-	assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
-	assert.Equal(t, 3, numPages)
-	assert.True(t, gotToEnd)
-	assert.Nil(t, err)
-	assert.Nil(t, params.ExclusiveStartTableName)
-}
-
-// Use DynamoDB methods for simplicity
-func TestPaginationEachPage(t *testing.T) {
-	db := dynamodb.New(unit.Session)
-	tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
-
-	reqNum := 0
-	resps := []*dynamodb.ListTablesOutput{
-		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
-		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
-		{TableNames: []*string{aws.String("Table5")}},
-	}
-
-	db.Handlers.Send.Clear() // mock sending
-	db.Handlers.Unmarshal.Clear()
-	db.Handlers.UnmarshalMeta.Clear()
-	db.Handlers.ValidateResponse.Clear()
-	db.Handlers.Build.PushBack(func(r *request.Request) {
-		in := r.Params.(*dynamodb.ListTablesInput)
-		if in == nil {
-			tokens = append(tokens, "")
-		} else if in.ExclusiveStartTableName != nil {
-			tokens = append(tokens, *in.ExclusiveStartTableName)
-		}
-	})
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
-	req, _ := db.ListTablesRequest(params)
-	err := req.EachPage(func(p interface{}, last bool) bool {
-		numPages++
-		for _, t := range p.(*dynamodb.ListTablesOutput).TableNames {
-			pages = append(pages, *t)
-		}
-		if last {
-			if gotToEnd {
-				assert.Fail(t, "last=true happened twice")
-			}
-			gotToEnd = true
-		}
-
-		return true
-	})
-
-	assert.Equal(t, []string{"Table2", "Table4"}, tokens)
-	assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
-	assert.Equal(t, 3, numPages)
-	assert.True(t, gotToEnd)
-	assert.Nil(t, err)
-}
-
-// Use DynamoDB methods for simplicity
-func TestPaginationEarlyExit(t *testing.T) {
-	db := dynamodb.New(unit.Session)
-	numPages, gotToEnd := 0, false
-
-	reqNum := 0
-	resps := []*dynamodb.ListTablesOutput{
-		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
-		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
-		{TableNames: []*string{aws.String("Table5")}},
-	}
-
-	db.Handlers.Send.Clear() // mock sending
-	db.Handlers.Unmarshal.Clear()
-	db.Handlers.UnmarshalMeta.Clear()
-	db.Handlers.ValidateResponse.Clear()
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
-	err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
-		numPages++
-		if numPages == 2 {
-			return false
-		}
-		if last {
-			if gotToEnd {
-				assert.Fail(t, "last=true happened twice")
-			}
-			gotToEnd = true
-		}
-		return true
-	})
-
-	assert.Equal(t, 2, numPages)
-	assert.False(t, gotToEnd)
-	assert.Nil(t, err)
-}
-
-func TestSkipPagination(t *testing.T) {
-	client := s3.New(unit.Session)
-	client.Handlers.Send.Clear() // mock sending
-	client.Handlers.Unmarshal.Clear()
-	client.Handlers.UnmarshalMeta.Clear()
-	client.Handlers.ValidateResponse.Clear()
-	client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = &s3.HeadBucketOutput{}
-	})
-
-	req, _ := client.HeadBucketRequest(&s3.HeadBucketInput{Bucket: aws.String("bucket")})
-
-	numPages, gotToEnd := 0, false
-	req.EachPage(func(p interface{}, last bool) bool {
-		numPages++
-		if last {
-			gotToEnd = true
-		}
-		return true
-	})
-	assert.Equal(t, 1, numPages)
-	assert.True(t, gotToEnd)
-}
-
-// Use S3 for simplicity
-func TestPaginationTruncation(t *testing.T) {
-	client := s3.New(unit.Session)
-
-	reqNum := 0
-	resps := []*s3.ListObjectsOutput{
-		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key1")}}},
-		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key2")}}},
-		{IsTruncated: aws.Bool(false), Contents: []*s3.Object{{Key: aws.String("Key3")}}},
-		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key4")}}},
-	}
-
-	client.Handlers.Send.Clear() // mock sending
-	client.Handlers.Unmarshal.Clear()
-	client.Handlers.UnmarshalMeta.Clear()
-	client.Handlers.ValidateResponse.Clear()
-	client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &s3.ListObjectsInput{Bucket: aws.String("bucket")}
-
-	results := []string{}
-	err := client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
-		results = append(results, *p.Contents[0].Key)
-		return true
-	})
-
-	assert.Equal(t, []string{"Key1", "Key2", "Key3"}, results)
-	assert.Nil(t, err)
-
-	// Try again without truncation token at all
-	reqNum = 0
-	resps[1].IsTruncated = nil
-	resps[2].IsTruncated = aws.Bool(true)
-	results = []string{}
-	err = client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
-		results = append(results, *p.Contents[0].Key)
-		return true
-	})
-
-	assert.Equal(t, []string{"Key1", "Key2"}, results)
-	assert.Nil(t, err)
-}
-
-func TestPaginationNilToken(t *testing.T) {
-	client := route53.New(unit.Session)
-
-	reqNum := 0
-	resps := []*route53.ListResourceRecordSetsOutput{
-		{
-			ResourceRecordSets: []*route53.ResourceRecordSet{
-				{Name: aws.String("first.example.com.")},
-			},
-			IsTruncated:          aws.Bool(true),
-			NextRecordName:       aws.String("second.example.com."),
-			NextRecordType:       aws.String("MX"),
-			NextRecordIdentifier: aws.String("second"),
-			MaxItems:             aws.String("1"),
-		},
-		{
-			ResourceRecordSets: []*route53.ResourceRecordSet{
-				{Name: aws.String("second.example.com.")},
-			},
-			IsTruncated:    aws.Bool(true),
-			NextRecordName: aws.String("third.example.com."),
-			NextRecordType: aws.String("MX"),
-			MaxItems:       aws.String("1"),
-		},
-		{
-			ResourceRecordSets: []*route53.ResourceRecordSet{
-				{Name: aws.String("third.example.com.")},
-			},
-			IsTruncated: aws.Bool(false),
-			MaxItems:    aws.String("1"),
-		},
-	}
-	client.Handlers.Send.Clear() // mock sending
-	client.Handlers.Unmarshal.Clear()
-	client.Handlers.UnmarshalMeta.Clear()
-	client.Handlers.ValidateResponse.Clear()
-
-	idents := []string{}
-	client.Handlers.Build.PushBack(func(r *request.Request) {
-		p := r.Params.(*route53.ListResourceRecordSetsInput)
-		idents = append(idents, aws.StringValue(p.StartRecordIdentifier))
-
-	})
-	client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	params := &route53.ListResourceRecordSetsInput{
-		HostedZoneId: aws.String("id-zone"),
-	}
-
-	results := []string{}
-	err := client.ListResourceRecordSetsPages(params, func(p *route53.ListResourceRecordSetsOutput, last bool) bool {
-		results = append(results, *p.ResourceRecordSets[0].Name)
-		return true
-	})
-
-	assert.NoError(t, err)
-	assert.Equal(t, []string{"", "second", ""}, idents)
-	assert.Equal(t, []string{"first.example.com.", "second.example.com.", "third.example.com."}, results)
-}
-
-// Benchmarks
-var benchResps = []*dynamodb.ListTablesOutput{
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
-	{TableNames: []*string{aws.String("TABLE")}},
-}
-
-var benchDb = func() *dynamodb.DynamoDB {
-	db := dynamodb.New(unit.Session)
-	db.Handlers.Send.Clear() // mock sending
-	db.Handlers.Unmarshal.Clear()
-	db.Handlers.UnmarshalMeta.Clear()
-	db.Handlers.ValidateResponse.Clear()
-	return db
-}
-
-func BenchmarkCodegenIterator(b *testing.B) {
-	reqNum := 0
-	db := benchDb()
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = benchResps[reqNum]
-		reqNum++
-	})
-
-	input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
-	iter := func(fn func(*dynamodb.ListTablesOutput, bool) bool) error {
-		page, _ := db.ListTablesRequest(input)
-		for ; page != nil; page = page.NextPage() {
-			page.Send()
-			out := page.Data.(*dynamodb.ListTablesOutput)
-			if result := fn(out, !page.HasNextPage()); page.Error != nil || !result {
-				return page.Error
-			}
-		}
-		return nil
-	}
-
-	for i := 0; i < b.N; i++ {
-		reqNum = 0
-		iter(func(p *dynamodb.ListTablesOutput, last bool) bool {
-			return true
-		})
-	}
-}
-
-func BenchmarkEachPageIterator(b *testing.B) {
-	reqNum := 0
-	db := benchDb()
-	db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		r.Data = benchResps[reqNum]
-		reqNum++
-	})
-
-	input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
-	for i := 0; i < b.N; i++ {
-		reqNum = 0
-		req, _ := db.ListTablesRequest(input)
-		req.EachPage(func(p interface{}, last bool) bool {
-			return true
-		})
-	}
-}

+ 0 - 261
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/request_test.go

@@ -1,261 +0,0 @@
-package request_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"runtime"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/awstesting"
-)
-
-type testData struct {
-	Data string
-}
-
-func body(str string) io.ReadCloser {
-	return ioutil.NopCloser(bytes.NewReader([]byte(str)))
-}
-
-func unmarshal(req *request.Request) {
-	defer req.HTTPResponse.Body.Close()
-	if req.Data != nil {
-		json.NewDecoder(req.HTTPResponse.Body).Decode(req.Data)
-	}
-	return
-}
-
-func unmarshalError(req *request.Request) {
-	bodyBytes, err := ioutil.ReadAll(req.HTTPResponse.Body)
-	if err != nil {
-		req.Error = awserr.New("UnmarshaleError", req.HTTPResponse.Status, err)
-		return
-	}
-	if len(bodyBytes) == 0 {
-		req.Error = awserr.NewRequestFailure(
-			awserr.New("UnmarshaleError", req.HTTPResponse.Status, fmt.Errorf("empty body")),
-			req.HTTPResponse.StatusCode,
-			"",
-		)
-		return
-	}
-	var jsonErr jsonErrorResponse
-	if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil {
-		req.Error = awserr.New("UnmarshaleError", "JSON unmarshal", err)
-		return
-	}
-	req.Error = awserr.NewRequestFailure(
-		awserr.New(jsonErr.Code, jsonErr.Message, nil),
-		req.HTTPResponse.StatusCode,
-		"",
-	)
-}
-
-type jsonErrorResponse struct {
-	Code    string `json:"__type"`
-	Message string `json:"message"`
-}
-
-// test that retries occur for 5xx status codes
-func TestRequestRecoverRetry5xx(t *testing.T) {
-	reqNum := 0
-	reqs := []http.Response{
-		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-		{StatusCode: 501, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-		{StatusCode: 200, Body: body(`{"data":"valid"}`)},
-	}
-
-	s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
-	s.Handlers.Validate.Clear()
-	s.Handlers.Unmarshal.PushBack(unmarshal)
-	s.Handlers.UnmarshalError.PushBack(unmarshalError)
-	s.Handlers.Send.Clear() // mock sending
-	s.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &reqs[reqNum]
-		reqNum++
-	})
-	out := &testData{}
-	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
-	err := r.Send()
-	assert.Nil(t, err)
-	assert.Equal(t, 2, int(r.RetryCount))
-	assert.Equal(t, "valid", out.Data)
-}
-
-// test that retries occur for 4xx status codes with a response type that can be retried - see `shouldRetry`
-func TestRequestRecoverRetry4xxRetryable(t *testing.T) {
-	reqNum := 0
-	reqs := []http.Response{
-		{StatusCode: 400, Body: body(`{"__type":"Throttling","message":"Rate exceeded."}`)},
-		{StatusCode: 429, Body: body(`{"__type":"ProvisionedThroughputExceededException","message":"Rate exceeded."}`)},
-		{StatusCode: 200, Body: body(`{"data":"valid"}`)},
-	}
-
-	s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
-	s.Handlers.Validate.Clear()
-	s.Handlers.Unmarshal.PushBack(unmarshal)
-	s.Handlers.UnmarshalError.PushBack(unmarshalError)
-	s.Handlers.Send.Clear() // mock sending
-	s.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &reqs[reqNum]
-		reqNum++
-	})
-	out := &testData{}
-	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
-	err := r.Send()
-	assert.Nil(t, err)
-	assert.Equal(t, 2, int(r.RetryCount))
-	assert.Equal(t, "valid", out.Data)
-}
-
-// test that retries don't occur for 4xx status codes with a response type that can't be retried
-func TestRequest4xxUnretryable(t *testing.T) {
-	s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
-	s.Handlers.Validate.Clear()
-	s.Handlers.Unmarshal.PushBack(unmarshal)
-	s.Handlers.UnmarshalError.PushBack(unmarshalError)
-	s.Handlers.Send.Clear() // mock sending
-	s.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &http.Response{StatusCode: 401, Body: body(`{"__type":"SignatureDoesNotMatch","message":"Signature does not match."}`)}
-	})
-	out := &testData{}
-	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
-	err := r.Send()
-	assert.NotNil(t, err)
-	if e, ok := err.(awserr.RequestFailure); ok {
-		assert.Equal(t, 401, e.StatusCode())
-	} else {
-		assert.Fail(t, "Expected error to be a service failure")
-	}
-	assert.Equal(t, "SignatureDoesNotMatch", err.(awserr.Error).Code())
-	assert.Equal(t, "Signature does not match.", err.(awserr.Error).Message())
-	assert.Equal(t, 0, int(r.RetryCount))
-}
-
-func TestRequestExhaustRetries(t *testing.T) {
-	delays := []time.Duration{}
-	sleepDelay := func(delay time.Duration) {
-		delays = append(delays, delay)
-	}
-
-	reqNum := 0
-	reqs := []http.Response{
-		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
-	}
-
-	s := awstesting.NewClient(aws.NewConfig().WithSleepDelay(sleepDelay))
-	s.Handlers.Validate.Clear()
-	s.Handlers.Unmarshal.PushBack(unmarshal)
-	s.Handlers.UnmarshalError.PushBack(unmarshalError)
-	s.Handlers.Send.Clear() // mock sending
-	s.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &reqs[reqNum]
-		reqNum++
-	})
-	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
-	err := r.Send()
-	assert.NotNil(t, err)
-	if e, ok := err.(awserr.RequestFailure); ok {
-		assert.Equal(t, 500, e.StatusCode())
-	} else {
-		assert.Fail(t, "Expected error to be a service failure")
-	}
-	assert.Equal(t, "UnknownError", err.(awserr.Error).Code())
-	assert.Equal(t, "An error occurred.", err.(awserr.Error).Message())
-	assert.Equal(t, 3, int(r.RetryCount))
-
-	expectDelays := []struct{ min, max time.Duration }{{30, 59}, {60, 118}, {120, 236}}
-	for i, v := range delays {
-		min := expectDelays[i].min * time.Millisecond
-		max := expectDelays[i].max * time.Millisecond
-		assert.True(t, min <= v && v <= max,
-			"Expect delay to be within range, i:%d, v:%s, min:%s, max:%s", i, v, min, max)
-	}
-}
-
-// test that the request is retried after the credentials are expired.
-func TestRequestRecoverExpiredCreds(t *testing.T) {
-	reqNum := 0
-	reqs := []http.Response{
-		{StatusCode: 400, Body: body(`{"__type":"ExpiredTokenException","message":"expired token"}`)},
-		{StatusCode: 200, Body: body(`{"data":"valid"}`)},
-	}
-
-	s := awstesting.NewClient(&aws.Config{MaxRetries: aws.Int(10), Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "")})
-	s.Handlers.Validate.Clear()
-	s.Handlers.Unmarshal.PushBack(unmarshal)
-	s.Handlers.UnmarshalError.PushBack(unmarshalError)
-
-	credExpiredBeforeRetry := false
-	credExpiredAfterRetry := false
-
-	s.Handlers.AfterRetry.PushBack(func(r *request.Request) {
-		credExpiredAfterRetry = r.Config.Credentials.IsExpired()
-	})
-
-	s.Handlers.Sign.Clear()
-	s.Handlers.Sign.PushBack(func(r *request.Request) {
-		r.Config.Credentials.Get()
-	})
-	s.Handlers.Send.Clear() // mock sending
-	s.Handlers.Send.PushBack(func(r *request.Request) {
-		r.HTTPResponse = &reqs[reqNum]
-		reqNum++
-	})
-	out := &testData{}
-	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
-	err := r.Send()
-	assert.Nil(t, err)
-
-	assert.False(t, credExpiredBeforeRetry, "Expect valid creds before retry check")
-	assert.True(t, credExpiredAfterRetry, "Expect expired creds after retry check")
-	assert.False(t, s.Config.Credentials.IsExpired(), "Expect valid creds after cred expired recovery")
-
-	assert.Equal(t, 1, int(r.RetryCount))
-	assert.Equal(t, "valid", out.Data)
-}
-
-func TestMakeAddtoUserAgentHandler(t *testing.T) {
-	fn := request.MakeAddToUserAgentHandler("name", "version", "extra1", "extra2")
-	r := &request.Request{HTTPRequest: &http.Request{Header: http.Header{}}}
-	r.HTTPRequest.Header.Set("User-Agent", "foo/bar")
-	fn(r)
-
-	assert.Equal(t, "foo/bar name/version (extra1; extra2)", r.HTTPRequest.Header.Get("User-Agent"))
-}
-
-func TestMakeAddtoUserAgentFreeFormHandler(t *testing.T) {
-	fn := request.MakeAddToUserAgentFreeFormHandler("name/version (extra1; extra2)")
-	r := &request.Request{HTTPRequest: &http.Request{Header: http.Header{}}}
-	r.HTTPRequest.Header.Set("User-Agent", "foo/bar")
-	fn(r)
-
-	assert.Equal(t, "foo/bar name/version (extra1; extra2)", r.HTTPRequest.Header.Get("User-Agent"))
-}
-
-func TestRequestUserAgent(t *testing.T) {
-	s := awstesting.NewClient(&aws.Config{Region: aws.String("us-east-1")})
-	//	s.Handlers.Validate.Clear()
-
-	req := s.NewRequest(&request.Operation{Name: "Operation"}, nil, &testData{})
-	req.HTTPRequest.Header.Set("User-Agent", "foo/bar")
-	assert.NoError(t, req.Build())
-
-	expectUA := fmt.Sprintf("foo/bar %s/%s (%s; %s; %s)",
-		aws.SDKName, aws.SDKVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
-	assert.Equal(t, expectUA, req.HTTPRequest.Header.Get("User-Agent"))
-}

+ 0 - 82
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/retryer.go

@@ -1,82 +0,0 @@
-package request
-
-import (
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-// Retryer is an interface to control retry logic for a given service.
-// The default implementation used by most services is the service.DefaultRetryer
-// structure, which contains basic retry logic using exponential backoff.
-type Retryer interface {
-	RetryRules(*Request) time.Duration
-	ShouldRetry(*Request) bool
-	MaxRetries() int
-}
-
-// WithRetryer sets a config Retryer value to the given Config returning it
-// for chaining.
-func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config {
-	cfg.Retryer = retryer
-	return cfg
-}
-
-// retryableCodes is a collection of service response codes which are retry-able
-// without any further action.
-var retryableCodes = map[string]struct{}{
-	"RequestError":                           {},
-	"RequestTimeout":                         {},
-	"ProvisionedThroughputExceededException": {},
-	"Throttling":                             {},
-	"ThrottlingException":                    {},
-	"RequestLimitExceeded":                   {},
-	"RequestThrottled":                       {},
-	"LimitExceededException":                 {}, // Deleting 10+ DynamoDb tables at once
-	"TooManyRequestsException":               {}, // Lambda functions
-}
-
-// credsExpiredCodes is a collection of error codes which signify the credentials
-// need to be refreshed. Expired tokens require refreshing of credentials, and
-// resigning before the request can be retried.
-var credsExpiredCodes = map[string]struct{}{
-	"ExpiredToken":          {},
-	"ExpiredTokenException": {},
-	"RequestExpired":        {}, // EC2 Only
-}
-
-func isCodeRetryable(code string) bool {
-	if _, ok := retryableCodes[code]; ok {
-		return true
-	}
-
-	return isCodeExpiredCreds(code)
-}
-
-func isCodeExpiredCreds(code string) bool {
-	_, ok := credsExpiredCodes[code]
-	return ok
-}
-
-// IsErrorRetryable returns whether the error is retryable, based on its Code.
-// Returns false if the request has no Error set.
-func (r *Request) IsErrorRetryable() bool {
-	if r.Error != nil {
-		if err, ok := r.Error.(awserr.Error); ok {
-			return isCodeRetryable(err.Code())
-		}
-	}
-	return false
-}
-
-// IsErrorExpired returns whether the error code is a credential expiry error.
-// Returns false if the request has no Error set.
-func (r *Request) IsErrorExpired() bool {
-	if r.Error != nil {
-		if err, ok := r.Error.(awserr.Error); ok {
-			return isCodeExpiredCreds(err.Code())
-		}
-	}
-	return false
-}

+ 0 - 105
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/session/session.go

@@ -1,105 +0,0 @@
-// Package session provides a way to create service clients with shared configuration
-// and handlers.
-package session
-
-import (
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/corehandlers"
-	"github.com/aws/aws-sdk-go/aws/defaults"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/endpoints"
-)
-
-// A Session provides a central location to create service clients from and
-// store configurations and request handlers for those services.
-//
-// Sessions are safe to create service clients concurrently, but it is not safe
-// to mutate the session concurrently.
-type Session struct {
-	Config   *aws.Config
-	Handlers request.Handlers
-}
-
-// New creates a new instance of the handlers merging in the provided Configs
-// on top of the SDK's default configurations. Once the session is created it
-// can be mutated to modify Configs or Handlers. The session is safe to be read
-// concurrently, but it should not be written to concurrently.
-//
-// Example:
-//     // Create a session with the default config and request handlers.
-//     sess := session.New()
-//
-//     // Create a session with a custom region
-//     sess := session.New(&aws.Config{Region: aws.String("us-east-1")})
-//
-//     // Create a session, and add additional handlers for all service
-//     // clients created with the session to inherit. Adds logging handler.
-//     sess := session.New()
-//     sess.Handlers.Send.PushFront(func(r *request.Request) {
-//          // Log every request made and its payload
-//          logger.Println("Request: %s/%s, Payload: %s", r.ClientInfo.ServiceName, r.Operation, r.Params)
-//     })
-//
-//     // Create a S3 client instance from a session
-//     sess := session.New()
-//     svc := s3.New(sess)
-func New(cfgs ...*aws.Config) *Session {
-	def := defaults.Get()
-	s := &Session{
-		Config:   def.Config,
-		Handlers: def.Handlers,
-	}
-	s.Config.MergeIn(cfgs...)
-
-	initHandlers(s)
-
-	return s
-}
-
-func initHandlers(s *Session) {
-	// Add the Validate parameter handler if it is not disabled.
-	s.Handlers.Validate.Remove(corehandlers.ValidateParametersHandler)
-	if !aws.BoolValue(s.Config.DisableParamValidation) {
-		s.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler)
-	}
-}
-
-// Copy creates and returns a copy of the current session, coping the config
-// and handlers. If any additional configs are provided they will be merged
-// on top of the session's copied config.
-//
-// Example:
-//     // Create a copy of the current session, configured for the us-west-2 region.
-//     sess.Copy(&aws.Config{Region: aws.String("us-west-2"})
-func (s *Session) Copy(cfgs ...*aws.Config) *Session {
-	newSession := &Session{
-		Config:   s.Config.Copy(cfgs...),
-		Handlers: s.Handlers.Copy(),
-	}
-
-	initHandlers(newSession)
-
-	return newSession
-}
-
-// ClientConfig satisfies the client.ConfigProvider interface and is used to
-// configure the service client instances. Passing the Session to the service
-// client's constructor (New) will use this method to configure the client.
-//
-// Example:
-//     sess := session.New()
-//     s3.New(sess)
-func (s *Session) ClientConfig(serviceName string, cfgs ...*aws.Config) client.Config {
-	s = s.Copy(cfgs...)
-	endpoint, signingRegion := endpoints.NormalizeEndpoint(
-		aws.StringValue(s.Config.Endpoint), serviceName,
-		aws.StringValue(s.Config.Region), aws.BoolValue(s.Config.DisableSSL))
-
-	return client.Config{
-		Config:        s.Config,
-		Handlers:      s.Handlers,
-		Endpoint:      endpoint,
-		SigningRegion: signingRegion,
-	}
-}

+ 0 - 20
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/session/session_test.go

@@ -1,20 +0,0 @@
-package session_test
-
-import (
-	"net/http"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/session"
-)
-
-func TestNewDefaultSession(t *testing.T) {
-	s := session.New(&aws.Config{Region: aws.String("region")})
-
-	assert.Equal(t, "region", *s.Config.Region)
-	assert.Equal(t, http.DefaultClient, s.Config.HTTPClient)
-	assert.NotNil(t, s.Config.Logger)
-	assert.Equal(t, aws.LogOff, *s.Config.LogLevel)
-}

+ 0 - 88
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types.go

@@ -1,88 +0,0 @@
-package aws
-
-import (
-	"io"
-	"sync"
-)
-
-// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser
-func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
-	return ReaderSeekerCloser{r}
-}
-
-// ReaderSeekerCloser represents a reader that can also delegate io.Seeker and
-// io.Closer interfaces to the underlying object if they are available.
-type ReaderSeekerCloser struct {
-	r io.Reader
-}
-
-// Read reads from the reader up to size of p. The number of bytes read, and
-// error if it occurred will be returned.
-//
-// If the reader is not an io.Reader zero bytes read, and nil error will be returned.
-//
-// Performs the same functionality as io.Reader Read
-func (r ReaderSeekerCloser) Read(p []byte) (int, error) {
-	switch t := r.r.(type) {
-	case io.Reader:
-		return t.Read(p)
-	}
-	return 0, nil
-}
-
-// Seek sets the offset for the next Read to offset, interpreted according to
-// whence: 0 means relative to the origin of the file, 1 means relative to the
-// current offset, and 2 means relative to the end. Seek returns the new offset
-// and an error, if any.
-//
-// If the ReaderSeekerCloser is not an io.Seeker nothing will be done.
-func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) {
-	switch t := r.r.(type) {
-	case io.Seeker:
-		return t.Seek(offset, whence)
-	}
-	return int64(0), nil
-}
-
-// Close closes the ReaderSeekerCloser.
-//
-// If the ReaderSeekerCloser is not an io.Closer nothing will be done.
-func (r ReaderSeekerCloser) Close() error {
-	switch t := r.r.(type) {
-	case io.Closer:
-		return t.Close()
-	}
-	return nil
-}
-
-// A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface
-// Can be used with the s3manager.Downloader to download content to a buffer
-// in memory. Safe to use concurrently.
-type WriteAtBuffer struct {
-	buf []byte
-	m   sync.Mutex
-}
-
-// WriteAt writes a slice of bytes to a buffer starting at the position provided
-// The number of bytes written will be returned, or error. Can overwrite previous
-// written slices if the write ats overlap.
-func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) {
-	b.m.Lock()
-	defer b.m.Unlock()
-
-	expLen := pos + int64(len(p))
-	if int64(len(b.buf)) < expLen {
-		newBuf := make([]byte, expLen)
-		copy(newBuf, b.buf)
-		b.buf = newBuf
-	}
-	copy(b.buf[pos:], p)
-	return len(p), nil
-}
-
-// Bytes returns a slice of bytes written to the buffer.
-func (b *WriteAtBuffer) Bytes() []byte {
-	b.m.Lock()
-	defer b.m.Unlock()
-	return b.buf[:len(b.buf):len(b.buf)]
-}

+ 0 - 56
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go

@@ -1,56 +0,0 @@
-package aws
-
-import (
-	"math/rand"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestWriteAtBuffer(t *testing.T) {
-	b := &WriteAtBuffer{}
-
-	n, err := b.WriteAt([]byte{1}, 0)
-	assert.NoError(t, err)
-	assert.Equal(t, 1, n)
-
-	n, err = b.WriteAt([]byte{1, 1, 1}, 5)
-	assert.NoError(t, err)
-	assert.Equal(t, 3, n)
-
-	n, err = b.WriteAt([]byte{2}, 1)
-	assert.NoError(t, err)
-	assert.Equal(t, 1, n)
-
-	n, err = b.WriteAt([]byte{3}, 2)
-	assert.NoError(t, err)
-	assert.Equal(t, 1, n)
-
-	assert.Equal(t, []byte{1, 2, 3, 0, 0, 1, 1, 1}, b.Bytes())
-}
-
-func BenchmarkWriteAtBuffer(b *testing.B) {
-	buf := &WriteAtBuffer{}
-	r := rand.New(rand.NewSource(1))
-
-	b.ResetTimer()
-	for i := 0; i < b.N; i++ {
-		to := r.Intn(10) * 4096
-		bs := make([]byte, to)
-		buf.WriteAt(bs, r.Int63n(10)*4096)
-	}
-}
-
-func BenchmarkWriteAtBufferParallel(b *testing.B) {
-	buf := &WriteAtBuffer{}
-	r := rand.New(rand.NewSource(1))
-
-	b.ResetTimer()
-	b.RunParallel(func(pb *testing.PB) {
-		for pb.Next() {
-			to := r.Intn(10) * 4096
-			bs := make([]byte, to)
-			buf.WriteAt(bs, r.Int63n(10)*4096)
-		}
-	})
-}

+ 0 - 8
Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/version.go

@@ -1,8 +0,0 @@
-// Package aws provides core functionality for making requests to AWS services.
-package aws
-
-// SDKName is the name of this AWS SDK
-const SDKName = "aws-sdk-go"
-
-// SDKVersion is the version of this SDK
-const SDKVersion = "1.0.0"

+ 0 - 31
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints.go

@@ -1,31 +0,0 @@
-// Package endpoints validates regional endpoints for services.
-package endpoints
-
-//go:generate go run ../model/cli/gen-endpoints/main.go endpoints.json endpoints_map.go
-//go:generate gofmt -s -w endpoints_map.go
-
-import "strings"
-
-// EndpointForRegion returns an endpoint and its signing region for a service and region.
-// if the service and region pair are not found endpoint and signingRegion will be empty.
-func EndpointForRegion(svcName, region string) (endpoint, signingRegion string) {
-	derivedKeys := []string{
-		region + "/" + svcName,
-		region + "/*",
-		"*/" + svcName,
-		"*/*",
-	}
-
-	for _, key := range derivedKeys {
-		if val, ok := endpointsMap.Endpoints[key]; ok {
-			ep := val.Endpoint
-			ep = strings.Replace(ep, "{region}", region, -1)
-			ep = strings.Replace(ep, "{service}", svcName, -1)
-
-			endpoint = ep
-			signingRegion = val.SigningRegion
-			return
-		}
-	}
-	return
-}

+ 0 - 77
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints.json

@@ -1,77 +0,0 @@
-{
-  "version": 2,
-  "endpoints": {
-    "*/*": {
-      "endpoint": "{service}.{region}.amazonaws.com"
-    },
-    "cn-north-1/*": {
-      "endpoint": "{service}.{region}.amazonaws.com.cn",
-      "signatureVersion": "v4"
-    },
-    "us-gov-west-1/iam": {
-      "endpoint": "iam.us-gov.amazonaws.com"
-    },
-    "us-gov-west-1/sts": {
-      "endpoint": "sts.us-gov-west-1.amazonaws.com"
-    },
-    "us-gov-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "*/cloudfront": {
-      "endpoint": "cloudfront.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/cloudsearchdomain": {
-      "endpoint": "",
-      "signingRegion": "us-east-1"
-    },
-    "*/iam": {
-      "endpoint": "iam.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/importexport": {
-      "endpoint": "importexport.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/route53": {
-      "endpoint": "route53.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/sts": {
-      "endpoint": "sts.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "us-east-1/sdb": {
-      "endpoint": "sdb.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "us-east-1/s3": {
-      "endpoint": "s3.amazonaws.com"
-    },
-    "us-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "us-west-2/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "eu-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-southeast-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-southeast-2/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-northeast-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "sa-east-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "eu-central-1/s3": {
-      "endpoint": "{service}.{region}.amazonaws.com",
-      "signatureVersion": "v4"
-    }
-  }
-}

+ 0 - 89
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_map.go

@@ -1,89 +0,0 @@
-package endpoints
-
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-type endpointStruct struct {
-	Version   int
-	Endpoints map[string]endpointEntry
-}
-
-type endpointEntry struct {
-	Endpoint      string
-	SigningRegion string
-}
-
-var endpointsMap = endpointStruct{
-	Version: 2,
-	Endpoints: map[string]endpointEntry{
-		"*/*": {
-			Endpoint: "{service}.{region}.amazonaws.com",
-		},
-		"*/cloudfront": {
-			Endpoint:      "cloudfront.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/cloudsearchdomain": {
-			Endpoint:      "",
-			SigningRegion: "us-east-1",
-		},
-		"*/iam": {
-			Endpoint:      "iam.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/importexport": {
-			Endpoint:      "importexport.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/route53": {
-			Endpoint:      "route53.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/sts": {
-			Endpoint:      "sts.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"ap-northeast-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"ap-southeast-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"ap-southeast-2/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"cn-north-1/*": {
-			Endpoint: "{service}.{region}.amazonaws.com.cn",
-		},
-		"eu-central-1/s3": {
-			Endpoint: "{service}.{region}.amazonaws.com",
-		},
-		"eu-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"sa-east-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-east-1/s3": {
-			Endpoint: "s3.amazonaws.com",
-		},
-		"us-east-1/sdb": {
-			Endpoint:      "sdb.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"us-gov-west-1/iam": {
-			Endpoint: "iam.us-gov.amazonaws.com",
-		},
-		"us-gov-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-gov-west-1/sts": {
-			Endpoint: "sts.us-gov-west-1.amazonaws.com",
-		},
-		"us-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-west-2/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-	},
-}

+ 0 - 28
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go

@@ -1,28 +0,0 @@
-package endpoints
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGlobalEndpoints(t *testing.T) {
-	region := "mock-region-1"
-	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts"}
-
-	for _, name := range svcs {
-		ep, sr := EndpointForRegion(name, region)
-		assert.Equal(t, name+".amazonaws.com", ep)
-		assert.Equal(t, "us-east-1", sr)
-	}
-}
-
-func TestServicesInCN(t *testing.T) {
-	region := "cn-north-1"
-	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts", "s3"}
-
-	for _, name := range svcs {
-		ep, _ := EndpointForRegion(name, region)
-		assert.Equal(t, name+"."+region+".amazonaws.com.cn", ep)
-	}
-}

+ 0 - 32
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build.go

@@ -1,32 +0,0 @@
-// Package ec2query provides serialisation of AWS EC2 requests and responses.
-package ec2query
-
-//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/input/ec2.json build_test.go
-
-import (
-	"net/url"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil"
-)
-
-// Build builds a request for the EC2 protocol.
-func Build(r *aws.Request) {
-	body := url.Values{
-		"Action":  {r.Operation.Name},
-		"Version": {r.Service.APIVersion},
-	}
-	if err := queryutil.Parse(body, r.Params, true); err != nil {
-		r.Error = awserr.New("SerializationError", "failed encoding EC2 Query request", err)
-	}
-
-	if r.ExpireTime == 0 {
-		r.HTTPRequest.Method = "POST"
-		r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
-		r.SetBufferBody([]byte(body.Encode()))
-	} else { // This is a pre-signed request
-		r.HTTPRequest.Method = "GET"
-		r.HTTPRequest.URL.RawQuery = body.Encode()
-	}
-}

+ 0 - 860
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go

@@ -1,860 +0,0 @@
-package ec2query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/internal/protocol/ec2query"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/internal/signer/v4"
-	"github.com/aws/aws-sdk-go/internal/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-
-type InputService1ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService1ProtocolTest client.
-func NewInputService1ProtocolTest(config *aws.Config) *InputService1ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice1protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService1ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService1ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService1TestCaseOperation1 = "OperationName"
-
-// InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputShape) (req *aws.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) {
-	req, out := c.InputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService1TestShapeInputService1TestCaseOperation1Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputShape struct {
-	Bar *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataInputService1TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService2ProtocolTest client.
-func NewInputService2ProtocolTest(config *aws.Config) *InputService2ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice2protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService2ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService2ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService2TestCaseOperation1 = "OperationName"
-
-// InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation.
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputShape) (req *aws.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService2TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService2TestShapeInputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputShape) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) {
-	req, out := c.InputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Output struct {
-	metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeInputShape struct {
-	Bar *string `locationName:"barLocationName" type:"string"`
-
-	Foo *string `type:"string"`
-
-	Yuck *string `locationName:"yuckLocationName" queryName:"yuckQueryName" type:"string"`
-
-	metadataInputService2TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService3ProtocolTest client.
-func NewInputService3ProtocolTest(config *aws.Config) *InputService3ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice3protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService3ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService3ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService3TestCaseOperation1 = "OperationName"
-
-// InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputShape) (req *aws.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) {
-	req, out := c.InputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService3TestShapeInputService3TestCaseOperation1Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputShape struct {
-	StructArg *InputService3TestShapeStructType `locationName:"Struct" type:"structure"`
-
-	metadataInputService3TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeStructType struct {
-	ScalarArg *string `locationName:"Scalar" type:"string"`
-
-	metadataInputService3TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService4ProtocolTest client.
-func NewInputService4ProtocolTest(config *aws.Config) *InputService4ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice4protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService4ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService4ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService4TestCaseOperation1 = "OperationName"
-
-// InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputShape) (req *aws.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) {
-	req, out := c.InputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService4TestShapeInputService4TestCaseOperation1Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputShape struct {
-	ListArg []*string `type:"list"`
-
-	metadataInputService4TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService5ProtocolTest client.
-func NewInputService5ProtocolTest(config *aws.Config) *InputService5ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice5protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService5ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService5ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService5TestCaseOperation1 = "OperationName"
-
-// InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation.
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputShape) (req *aws.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService5TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService5TestShapeInputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputShape) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) {
-	req, out := c.InputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Output struct {
-	metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5TestShapeInputShape struct {
-	ListArg []*string `locationName:"ListMemberName" locationNameList:"item" type:"list"`
-
-	metadataInputService5TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService6ProtocolTest client.
-func NewInputService6ProtocolTest(config *aws.Config) *InputService6ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice6protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService6ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService6ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService6TestCaseOperation1 = "OperationName"
-
-// InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation.
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputShape) (req *aws.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService6TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService6TestShapeInputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputShape) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) {
-	req, out := c.InputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Output struct {
-	metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6TestShapeInputShape struct {
-	ListArg []*string `locationName:"ListMemberName" queryName:"ListQueryName" locationNameList:"item" type:"list"`
-
-	metadataInputService6TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService7ProtocolTest client.
-func NewInputService7ProtocolTest(config *aws.Config) *InputService7ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice7protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService7ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService7ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService7TestCaseOperation1 = "OperationName"
-
-// InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation.
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputShape) (req *aws.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService7TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService7TestShapeInputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputShape) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) {
-	req, out := c.InputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Output struct {
-	metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7TestShapeInputShape struct {
-	BlobArg []byte `type:"blob"`
-
-	metadataInputService7TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService8ProtocolTest client.
-func NewInputService8ProtocolTest(config *aws.Config) *InputService8ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice8protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &InputService8ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService8ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService8TestCaseOperation1 = "OperationName"
-
-// InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation.
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputShape) (req *aws.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService8TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService8TestShapeInputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputShape) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) {
-	req, out := c.InputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Output struct {
-	metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8TestShapeInputShape struct {
-	TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataInputService8TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	svc := NewInputService1ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService1TestShapeInputShape{
-		Bar: aws.String("val2"),
-		Foo: aws.String("val1"),
-	}
-	req, _ := svc.InputService1TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService2ProtocolTestStructureWithLocationNameAndQueryNameAppliedToMembersCase1(t *testing.T) {
-	svc := NewInputService2ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService2TestShapeInputShape{
-		Bar:  aws.String("val2"),
-		Foo:  aws.String("val1"),
-		Yuck: aws.String("val3"),
-	}
-	req, _ := svc.InputService2TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&BarLocationName=val2&Foo=val1&Version=2014-01-01&yuckQueryName=val3`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestNestedStructureMembersCase1(t *testing.T) {
-	svc := NewInputService3ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService3TestShapeInputShape{
-		StructArg: &InputService3TestShapeStructType{
-			ScalarArg: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService3TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&Struct.Scalar=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestListTypesCase1(t *testing.T) {
-	svc := NewInputService4ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService4TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("foo"),
-			aws.String("bar"),
-			aws.String("baz"),
-		},
-	}
-	req, _ := svc.InputService4TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService5ProtocolTestListWithLocationNameAppliedToMemberCase1(t *testing.T) {
-	svc := NewInputService5ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService5TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-	}
-	req, _ := svc.InputService5TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListMemberName.1=a&ListMemberName.2=b&ListMemberName.3=c&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService6ProtocolTestListWithLocationNameAndQueryNameCase1(t *testing.T) {
-	svc := NewInputService6ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService6TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-	}
-	req, _ := svc.InputService6TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListQueryName.1=a&ListQueryName.2=b&ListQueryName.3=c&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService7ProtocolTestBase64EncodedBlobsCase1(t *testing.T) {
-	svc := NewInputService7ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService7TestShapeInputShape{
-		BlobArg: []byte("foo"),
-	}
-	req, _ := svc.InputService7TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService8ProtocolTestTimestampValuesCase1(t *testing.T) {
-	svc := NewInputService8ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService8TestShapeInputShape{
-		TimeArg: aws.Time(time.Unix(1422172800, 0)),
-	}
-	req, _ := svc.InputService8TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}

+ 0 - 54
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal.go

@@ -1,54 +0,0 @@
-package ec2query
-
-//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/output/ec2.json unmarshal_test.go
-
-import (
-	"encoding/xml"
-	"io"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-)
-
-// Unmarshal unmarshals a response body for the EC2 protocol.
-func Unmarshal(r *aws.Request) {
-	defer r.HTTPResponse.Body.Close()
-	if r.DataFilled() {
-		decoder := xml.NewDecoder(r.HTTPResponse.Body)
-		err := xmlutil.UnmarshalXML(r.Data, decoder, "")
-		if err != nil {
-			r.Error = awserr.New("SerializationError", "failed decoding EC2 Query response", err)
-			return
-		}
-	}
-}
-
-// UnmarshalMeta unmarshals response headers for the EC2 protocol.
-func UnmarshalMeta(r *aws.Request) {
-	// TODO implement unmarshaling of request IDs
-}
-
-type xmlErrorResponse struct {
-	XMLName   xml.Name `xml:"Response"`
-	Code      string   `xml:"Errors>Error>Code"`
-	Message   string   `xml:"Errors>Error>Message"`
-	RequestID string   `xml:"RequestId"`
-}
-
-// UnmarshalError unmarshals a response error for the EC2 protocol.
-func UnmarshalError(r *aws.Request) {
-	defer r.HTTPResponse.Body.Close()
-
-	resp := &xmlErrorResponse{}
-	err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp)
-	if err != nil && err != io.EOF {
-		r.Error = awserr.New("SerializationError", "failed decoding EC2 Query error response", err)
-	} else {
-		r.Error = awserr.NewRequestFailure(
-			awserr.New(resp.Code, resp.Message, nil),
-			r.HTTPResponse.StatusCode,
-			resp.RequestID,
-		)
-	}
-}

+ 0 - 816
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go

@@ -1,816 +0,0 @@
-package ec2query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/internal/protocol/ec2query"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/internal/signer/v4"
-	"github.com/aws/aws-sdk-go/internal/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-
-type OutputService1ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService1ProtocolTest client.
-func NewOutputService1ProtocolTest(config *aws.Config) *OutputService1ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice1protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService1ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService1ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService1TestCaseOperation1 = "OperationName"
-
-// OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *aws.Request, output *OutputService1TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService1TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputShape, error) {
-	req, out := c.OutputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService1TestShapeOutputShape struct {
-	Char *string `type:"character"`
-
-	Double *float64 `type:"double"`
-
-	FalseBool *bool `type:"boolean"`
-
-	Float *float64 `type:"float"`
-
-	Long *int64 `type:"long"`
-
-	Num *int64 `locationName:"FooNum" type:"integer"`
-
-	Str *string `type:"string"`
-
-	TrueBool *bool `type:"boolean"`
-
-	metadataOutputService1TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService2ProtocolTest client.
-func NewOutputService2ProtocolTest(config *aws.Config) *OutputService2ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice2protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService2ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService2ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService2TestCaseOperation1 = "OperationName"
-
-// OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *aws.Request, output *OutputService2TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService2TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputShape, error) {
-	req, out := c.OutputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2TestShapeOutputShape struct {
-	Blob []byte `type:"blob"`
-
-	metadataOutputService2TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService3ProtocolTest client.
-func NewOutputService3ProtocolTest(config *aws.Config) *OutputService3ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice3protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService3ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService3ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService3TestCaseOperation1 = "OperationName"
-
-// OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *aws.Request, output *OutputService3TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService3TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputShape, error) {
-	req, out := c.OutputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3TestShapeOutputShape struct {
-	ListMember []*string `type:"list"`
-
-	metadataOutputService3TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService4ProtocolTest client.
-func NewOutputService4ProtocolTest(config *aws.Config) *OutputService4ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice4protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService4ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService4ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService4TestCaseOperation1 = "OperationName"
-
-// OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *aws.Request, output *OutputService4TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService4TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputShape, error) {
-	req, out := c.OutputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4TestShapeOutputShape struct {
-	ListMember []*string `locationNameList:"item" type:"list"`
-
-	metadataOutputService4TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService5ProtocolTest client.
-func NewOutputService5ProtocolTest(config *aws.Config) *OutputService5ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice5protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService5ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService5ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService5TestCaseOperation1 = "OperationName"
-
-// OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *aws.Request, output *OutputService5TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService5TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputShape, error) {
-	req, out := c.OutputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5TestShapeOutputShape struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService5TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService6ProtocolTest client.
-func NewOutputService6ProtocolTest(config *aws.Config) *OutputService6ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice6protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService6ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService6ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService6TestCaseOperation1 = "OperationName"
-
-// OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *aws.Request, output *OutputService6TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService6TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputShape, error) {
-	req, out := c.OutputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeOutputShape struct {
-	Map map[string]*OutputService6TestShapeStructureType `type:"map"`
-
-	metadataOutputService6TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeStructureType struct {
-	Foo *string `locationName:"foo" type:"string"`
-
-	metadataOutputService6TestShapeStructureType `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeStructureType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService7ProtocolTest client.
-func NewOutputService7ProtocolTest(config *aws.Config) *OutputService7ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice7protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService7ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService7ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService7TestCaseOperation1 = "OperationName"
-
-// OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *aws.Request, output *OutputService7TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService7TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputShape, error) {
-	req, out := c.OutputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7TestShapeOutputShape struct {
-	Map map[string]*string `type:"map" flattened:"true"`
-
-	metadataOutputService7TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService8ProtocolTest client.
-func NewOutputService8ProtocolTest(config *aws.Config) *OutputService8ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice8protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(ec2query.Build)
-	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return &OutputService8ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService8ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService8TestCaseOperation1 = "OperationName"
-
-// OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation.
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *aws.Request, output *OutputService8TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService8TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputShape, error) {
-	req, out := c.OutputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeOutputShape struct {
-	Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"`
-
-	metadataOutputService8TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	svc := NewOutputService1ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><RequestId>request-id</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService1TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.Char)
-	assert.Equal(t, 1.3, *out.Double)
-	assert.Equal(t, false, *out.FalseBool)
-	assert.Equal(t, 1.2, *out.Float)
-	assert.Equal(t, int64(200), *out.Long)
-	assert.Equal(t, int64(123), *out.Num)
-	assert.Equal(t, "myname", *out.Str)
-	assert.Equal(t, true, *out.TrueBool)
-
-}
-
-func TestOutputService2ProtocolTestBlobCase1(t *testing.T) {
-	svc := NewOutputService2ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Blob>dmFsdWU=</Blob><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService2TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "value", string(out.Blob))
-
-}
-
-func TestOutputService3ProtocolTestListsCase1(t *testing.T) {
-	svc := NewOutputService3ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><member>abc</member><member>123</member></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService3TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService4ProtocolTestListWithCustomMemberNameCase1(t *testing.T) {
-	svc := NewOutputService4ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><item>abc</item><item>123</item></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService4TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService5ProtocolTestFlattenedListCase1(t *testing.T) {
-	svc := NewOutputService5ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember>abc</ListMember><ListMember>123</ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService5TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService6ProtocolTestNormalMapCase1(t *testing.T) {
-	svc := NewOutputService6ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService6TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"].Foo)
-	assert.Equal(t, "bar", *out.Map["qux"].Foo)
-
-}
-
-func TestOutputService7ProtocolTestFlattenedMapCase1(t *testing.T) {
-	svc := NewOutputService7ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService7TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService8ProtocolTestNamedMapCase1(t *testing.T) {
-	svc := NewOutputService8ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService8TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}

+ 0 - 33
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build.go

@@ -1,33 +0,0 @@
-// Package query provides serialisation of AWS query requests, and responses.
-package query
-
-//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/input/query.json build_test.go
-
-import (
-	"net/url"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil"
-)
-
-// Build builds a request for an AWS Query service.
-func Build(r *aws.Request) {
-	body := url.Values{
-		"Action":  {r.Operation.Name},
-		"Version": {r.Service.APIVersion},
-	}
-	if err := queryutil.Parse(body, r.Params, false); err != nil {
-		r.Error = awserr.New("SerializationError", "failed encoding Query request", err)
-		return
-	}
-
-	if r.ExpireTime == 0 {
-		r.HTTPRequest.Method = "POST"
-		r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
-		r.SetBufferBody([]byte(body.Encode()))
-	} else { // This is a pre-signed request
-		r.HTTPRequest.Method = "GET"
-		r.HTTPRequest.URL.RawQuery = body.Encode()
-	}
-}

+ 0 - 1482
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go

@@ -1,1482 +0,0 @@
-package query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/internal/protocol/query"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/internal/signer/v4"
-	"github.com/aws/aws-sdk-go/internal/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-
-type InputService1ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService1ProtocolTest client.
-func NewInputService1ProtocolTest(config *aws.Config) *InputService1ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice1protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService1ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService1ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService1TestCaseOperation1 = "OperationName"
-
-// InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputShape) (req *aws.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) {
-	req, out := c.InputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService1TestShapeInputService1TestCaseOperation1Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputShape struct {
-	Bar *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataInputService1TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService2ProtocolTest client.
-func NewInputService2ProtocolTest(config *aws.Config) *InputService2ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice2protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService2ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService2ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService2TestCaseOperation1 = "OperationName"
-
-// InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation.
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputShape) (req *aws.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService2TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService2TestShapeInputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputShape) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) {
-	req, out := c.InputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Output struct {
-	metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeInputShape struct {
-	StructArg *InputService2TestShapeStructType `type:"structure"`
-
-	metadataInputService2TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeStructType struct {
-	ScalarArg *string `type:"string"`
-
-	metadataInputService2TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService3ProtocolTest client.
-func NewInputService3ProtocolTest(config *aws.Config) *InputService3ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice3protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService3ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService3ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService3TestCaseOperation1 = "OperationName"
-
-// InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputShape) (req *aws.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) {
-	req, out := c.InputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService3TestCaseOperation2 = "OperationName"
-
-// InputService3TestCaseOperation2Request generates a request for the InputService3TestCaseOperation2 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation2Request(input *InputService3TestShapeInputShape) (req *aws.Request, output *InputService3TestShapeInputService3TestCaseOperation2Output) {
-	op := &aws.Operation{
-		Name: opInputService3TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation2(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation2Output, error) {
-	req, out := c.InputService3TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService3TestShapeInputService3TestCaseOperation1Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputService3TestCaseOperation2Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputShape struct {
-	ListArg []*string `type:"list"`
-
-	metadataInputService3TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService4ProtocolTest client.
-func NewInputService4ProtocolTest(config *aws.Config) *InputService4ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice4protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService4ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService4ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService4TestCaseOperation1 = "OperationName"
-
-// InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputShape) (req *aws.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) {
-	req, out := c.InputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService4TestCaseOperation2 = "OperationName"
-
-// InputService4TestCaseOperation2Request generates a request for the InputService4TestCaseOperation2 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation2Request(input *InputService4TestShapeInputShape) (req *aws.Request, output *InputService4TestShapeInputService4TestCaseOperation2Output) {
-	op := &aws.Operation{
-		Name: opInputService4TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation2(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation2Output, error) {
-	req, out := c.InputService4TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService4TestShapeInputService4TestCaseOperation1Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputService4TestCaseOperation2Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputShape struct {
-	ListArg []*string `type:"list" flattened:"true"`
-
-	ScalarArg *string `type:"string"`
-
-	metadataInputService4TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService5ProtocolTest client.
-func NewInputService5ProtocolTest(config *aws.Config) *InputService5ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice5protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService5ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService5ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService5TestCaseOperation1 = "OperationName"
-
-// InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation.
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputShape) (req *aws.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService5TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService5TestShapeInputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputShape) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) {
-	req, out := c.InputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService5TestCaseOperation2 = "OperationName"
-
-// InputService5TestCaseOperation2Request generates a request for the InputService5TestCaseOperation2 operation.
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation2Request(input *InputService5TestShapeInputShape) (req *aws.Request, output *InputService5TestShapeInputService5TestCaseOperation2Output) {
-	op := &aws.Operation{
-		Name: opInputService5TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService5TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService5TestShapeInputService5TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation2(input *InputService5TestShapeInputShape) (*InputService5TestShapeInputService5TestCaseOperation2Output, error) {
-	req, out := c.InputService5TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Output struct {
-	metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5TestShapeInputService5TestCaseOperation2Output struct {
-	metadataInputService5TestShapeInputService5TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5TestShapeInputShape struct {
-	MapArg map[string]*string `type:"map"`
-
-	metadataInputService5TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService6ProtocolTest client.
-func NewInputService6ProtocolTest(config *aws.Config) *InputService6ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice6protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService6ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService6ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService6TestCaseOperation1 = "OperationName"
-
-// InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation.
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputShape) (req *aws.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService6TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService6TestShapeInputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputShape) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) {
-	req, out := c.InputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Output struct {
-	metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6TestShapeInputShape struct {
-	MapArg map[string]*string `locationNameKey:"TheKey" locationNameValue:"TheValue" type:"map"`
-
-	metadataInputService6TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService7ProtocolTest client.
-func NewInputService7ProtocolTest(config *aws.Config) *InputService7ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice7protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService7ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService7ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService7TestCaseOperation1 = "OperationName"
-
-// InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation.
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputShape) (req *aws.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService7TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService7TestShapeInputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputShape) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) {
-	req, out := c.InputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Output struct {
-	metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7TestShapeInputShape struct {
-	BlobArg []byte `type:"blob"`
-
-	metadataInputService7TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService8ProtocolTest client.
-func NewInputService8ProtocolTest(config *aws.Config) *InputService8ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice8protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService8ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService8ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService8TestCaseOperation1 = "OperationName"
-
-// InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation.
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputShape) (req *aws.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService8TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService8TestShapeInputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputShape) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) {
-	req, out := c.InputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Output struct {
-	metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8TestShapeInputShape struct {
-	TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataInputService8TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new InputService9ProtocolTest client.
-func NewInputService9ProtocolTest(config *aws.Config) *InputService9ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "inputservice9protocoltest",
-		APIVersion:  "2014-01-01",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &InputService9ProtocolTest{service}
-}
-
-// newRequest creates a new request for a InputService9ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService9ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opInputService9TestCaseOperation1 = "OperationName"
-
-// InputService9TestCaseOperation1Request generates a request for the InputService9TestCaseOperation1 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation1Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation1Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation1(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation1Output, error) {
-	req, out := c.InputService9TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService9TestCaseOperation2 = "OperationName"
-
-// InputService9TestCaseOperation2Request generates a request for the InputService9TestCaseOperation2 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation2Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation2Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation2(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation2Output, error) {
-	req, out := c.InputService9TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService9TestCaseOperation3 = "OperationName"
-
-// InputService9TestCaseOperation3Request generates a request for the InputService9TestCaseOperation3 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation3Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation3Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation3,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation3Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation3(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation3Output, error) {
-	req, out := c.InputService9TestCaseOperation3Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService9TestCaseOperation4 = "OperationName"
-
-// InputService9TestCaseOperation4Request generates a request for the InputService9TestCaseOperation4 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation4Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation4Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation4,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation4Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation4(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation4Output, error) {
-	req, out := c.InputService9TestCaseOperation4Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService9TestCaseOperation5 = "OperationName"
-
-// InputService9TestCaseOperation5Request generates a request for the InputService9TestCaseOperation5 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation5Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation5Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation5,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation5Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation5(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation5Output, error) {
-	req, out := c.InputService9TestCaseOperation5Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService9TestCaseOperation6 = "OperationName"
-
-// InputService9TestCaseOperation6Request generates a request for the InputService9TestCaseOperation6 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation6Request(input *InputService9TestShapeInputShape) (req *aws.Request, output *InputService9TestShapeInputService9TestCaseOperation6Output) {
-	op := &aws.Operation{
-		Name: opInputService9TestCaseOperation6,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation6Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation6(input *InputService9TestShapeInputShape) (*InputService9TestShapeInputService9TestCaseOperation6Output, error) {
-	req, out := c.InputService9TestCaseOperation6Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService9TestShapeInputService9TestCaseOperation1Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation2Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation3Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation3Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation3Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation4Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation4Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation4Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation5Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation5Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation5Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation6Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation6Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation6Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputShape struct {
-	RecursiveStruct *InputService9TestShapeRecursiveStructType `type:"structure"`
-
-	metadataInputService9TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeRecursiveStructType struct {
-	NoRecurse *string `type:"string"`
-
-	RecursiveList []*InputService9TestShapeRecursiveStructType `type:"list"`
-
-	RecursiveMap map[string]*InputService9TestShapeRecursiveStructType `type:"map"`
-
-	RecursiveStruct *InputService9TestShapeRecursiveStructType `type:"structure"`
-
-	metadataInputService9TestShapeRecursiveStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeRecursiveStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	svc := NewInputService1ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService1TestShapeInputShape{
-		Bar: aws.String("val2"),
-		Foo: aws.String("val1"),
-	}
-	req, _ := svc.InputService1TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService2ProtocolTestNestedStructureMembersCase1(t *testing.T) {
-	svc := NewInputService2ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService2TestShapeInputShape{
-		StructArg: &InputService2TestShapeStructType{
-			ScalarArg: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService2TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&StructArg.ScalarArg=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestListTypesCase1(t *testing.T) {
-	svc := NewInputService3ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService3TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("foo"),
-			aws.String("bar"),
-			aws.String("baz"),
-		},
-	}
-	req, _ := svc.InputService3TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListArg.member.1=foo&ListArg.member.2=bar&ListArg.member.3=baz&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestListTypesCase2(t *testing.T) {
-	svc := NewInputService3ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService3TestShapeInputShape{
-		ListArg: []*string{},
-	}
-	req, _ := svc.InputService3TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListArg=&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestFlattenedListCase1(t *testing.T) {
-	svc := NewInputService4ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService4TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-		ScalarArg: aws.String("foo"),
-	}
-	req, _ := svc.InputService4TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListArg.1=a&ListArg.2=b&ListArg.3=c&ScalarArg=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestFlattenedListCase2(t *testing.T) {
-	svc := NewInputService4ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService4TestShapeInputShape{
-		ListArg:   []*string{},
-		ScalarArg: aws.String("foo"),
-	}
-	req, _ := svc.InputService4TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&ListArg=&ScalarArg=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService5ProtocolTestSerializeMapTypeCase1(t *testing.T) {
-	svc := NewInputService5ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService5TestShapeInputShape{
-		MapArg: map[string]*string{
-			"key1": aws.String("val1"),
-			"key2": aws.String("val2"),
-		},
-	}
-	req, _ := svc.InputService5TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&MapArg.entry.1.key=key1&MapArg.entry.1.value=val1&MapArg.entry.2.key=key2&MapArg.entry.2.value=val2&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService5ProtocolTestSerializeMapTypeCase2(t *testing.T) {
-	svc := NewInputService5ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService5TestShapeInputShape{
-		MapArg: map[string]*string{},
-	}
-	req, _ := svc.InputService5TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&MapArg=&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService6ProtocolTestSerializeMapTypeWithLocationNameCase1(t *testing.T) {
-	svc := NewInputService6ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService6TestShapeInputShape{
-		MapArg: map[string]*string{
-			"key1": aws.String("val1"),
-			"key2": aws.String("val2"),
-		},
-	}
-	req, _ := svc.InputService6TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&MapArg.entry.1.TheKey=key1&MapArg.entry.1.TheValue=val1&MapArg.entry.2.TheKey=key2&MapArg.entry.2.TheValue=val2&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService7ProtocolTestBase64EncodedBlobsCase1(t *testing.T) {
-	svc := NewInputService7ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService7TestShapeInputShape{
-		BlobArg: []byte("foo"),
-	}
-	req, _ := svc.InputService7TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService8ProtocolTestTimestampValuesCase1(t *testing.T) {
-	svc := NewInputService8ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService8TestShapeInputShape{
-		TimeArg: aws.Time(time.Unix(1422172800, 0)),
-	}
-	req, _ := svc.InputService8TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase1(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			NoRecurse: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.NoRecurse=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase2(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-				NoRecurse: aws.String("foo"),
-			},
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.RecursiveStruct.NoRecurse=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase3(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-				RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-					RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-						NoRecurse: aws.String("foo"),
-					},
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation3Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.RecursiveStruct.RecursiveStruct.RecursiveStruct.NoRecurse=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase4(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			RecursiveList: []*InputService9TestShapeRecursiveStructType{
-				{
-					NoRecurse: aws.String("foo"),
-				},
-				{
-					NoRecurse: aws.String("bar"),
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation4Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.NoRecurse=bar&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase5(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			RecursiveList: []*InputService9TestShapeRecursiveStructType{
-				{
-					NoRecurse: aws.String("foo"),
-				},
-				{
-					RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-						NoRecurse: aws.String("bar"),
-					},
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation5Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.RecursiveStruct.NoRecurse=bar&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestRecursiveShapesCase6(t *testing.T) {
-	svc := NewInputService9ProtocolTest(nil)
-	svc.Endpoint = "https://test"
-
-	input := &InputService9TestShapeInputShape{
-		RecursiveStruct: &InputService9TestShapeRecursiveStructType{
-			RecursiveMap: map[string]*InputService9TestShapeRecursiveStructType{
-				"bar": {
-					NoRecurse: aws.String("bar"),
-				},
-				"foo": {
-					NoRecurse: aws.String("foo"),
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation6Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	assert.Equal(t, util.Trim(`Action=OperationName&RecursiveStruct.RecursiveMap.entry.1.key=bar&RecursiveStruct.RecursiveMap.entry.1.value.NoRecurse=bar&RecursiveStruct.RecursiveMap.entry.2.key=foo&RecursiveStruct.RecursiveMap.entry.2.value.NoRecurse=foo&Version=2014-01-01`), util.Trim(string(body)))
-
-	// assert URL
-	assert.Equal(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}

+ 0 - 223
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/queryutil/queryutil.go

@@ -1,223 +0,0 @@
-package queryutil
-
-import (
-	"encoding/base64"
-	"fmt"
-	"net/url"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// Parse parses an object i and fills a url.Values object. The isEC2 flag
-// indicates if this is the EC2 Query sub-protocol.
-func Parse(body url.Values, i interface{}, isEC2 bool) error {
-	q := queryParser{isEC2: isEC2}
-	return q.parseValue(body, reflect.ValueOf(i), "", "")
-}
-
-func elemOf(value reflect.Value) reflect.Value {
-	for value.Kind() == reflect.Ptr {
-		value = value.Elem()
-	}
-	return value
-}
-
-type queryParser struct {
-	isEC2 bool
-}
-
-func (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	value = elemOf(value)
-
-	// no need to handle zero values
-	if !value.IsValid() {
-		return nil
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch value.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		return q.parseStruct(v, value, prefix)
-	case "list":
-		return q.parseList(v, value, prefix, tag)
-	case "map":
-		return q.parseMap(v, value, prefix, tag)
-	default:
-		return q.parseScalar(v, value, prefix, tag)
-	}
-}
-
-func (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error {
-	if !value.IsValid() {
-		return nil
-	}
-
-	t := value.Type()
-	for i := 0; i < value.NumField(); i++ {
-		if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		value := elemOf(value.Field(i))
-		field := t.Field(i)
-		var name string
-
-		if q.isEC2 {
-			name = field.Tag.Get("queryName")
-		}
-		if name == "" {
-			if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
-				name = field.Tag.Get("locationNameList")
-			} else if locName := field.Tag.Get("locationName"); locName != "" {
-				name = locName
-			}
-			if name != "" && q.isEC2 {
-				name = strings.ToUpper(name[0:1]) + name[1:]
-			}
-		}
-		if name == "" {
-			name = field.Name
-		}
-
-		if prefix != "" {
-			name = prefix + "." + name
-		}
-
-		if err := q.parseValue(v, value, name, field.Tag); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	// If it's empty, generate an empty value
-	if !value.IsNil() && value.Len() == 0 {
-		v.Set(prefix, "")
-		return nil
-	}
-
-	// check for unflattened list member
-	if !q.isEC2 && tag.Get("flattened") == "" {
-		prefix += ".member"
-	}
-
-	for i := 0; i < value.Len(); i++ {
-		slicePrefix := prefix
-		if slicePrefix == "" {
-			slicePrefix = strconv.Itoa(i + 1)
-		} else {
-			slicePrefix = slicePrefix + "." + strconv.Itoa(i+1)
-		}
-		if err := q.parseValue(v, value.Index(i), slicePrefix, ""); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	// If it's empty, generate an empty value
-	if !value.IsNil() && value.Len() == 0 {
-		v.Set(prefix, "")
-		return nil
-	}
-
-	// check for unflattened list member
-	if !q.isEC2 && tag.Get("flattened") == "" {
-		prefix += ".entry"
-	}
-
-	// sort keys for improved serialization consistency.
-	// this is not strictly necessary for protocol support.
-	mapKeyValues := value.MapKeys()
-	mapKeys := map[string]reflect.Value{}
-	mapKeyNames := make([]string, len(mapKeyValues))
-	for i, mapKey := range mapKeyValues {
-		name := mapKey.String()
-		mapKeys[name] = mapKey
-		mapKeyNames[i] = name
-	}
-	sort.Strings(mapKeyNames)
-
-	for i, mapKeyName := range mapKeyNames {
-		mapKey := mapKeys[mapKeyName]
-		mapValue := value.MapIndex(mapKey)
-
-		kname := tag.Get("locationNameKey")
-		if kname == "" {
-			kname = "key"
-		}
-		vname := tag.Get("locationNameValue")
-		if vname == "" {
-			vname = "value"
-		}
-
-		// serialize key
-		var keyName string
-		if prefix == "" {
-			keyName = strconv.Itoa(i+1) + "." + kname
-		} else {
-			keyName = prefix + "." + strconv.Itoa(i+1) + "." + kname
-		}
-
-		if err := q.parseValue(v, mapKey, keyName, ""); err != nil {
-			return err
-		}
-
-		// serialize value
-		var valueName string
-		if prefix == "" {
-			valueName = strconv.Itoa(i+1) + "." + vname
-		} else {
-			valueName = prefix + "." + strconv.Itoa(i+1) + "." + vname
-		}
-
-		if err := q.parseValue(v, mapValue, valueName, ""); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error {
-	switch value := r.Interface().(type) {
-	case string:
-		v.Set(name, value)
-	case []byte:
-		if !r.IsNil() {
-			v.Set(name, base64.StdEncoding.EncodeToString(value))
-		}
-	case bool:
-		v.Set(name, strconv.FormatBool(value))
-	case int64:
-		v.Set(name, strconv.FormatInt(value, 10))
-	case int:
-		v.Set(name, strconv.Itoa(value))
-	case float64:
-		v.Set(name, strconv.FormatFloat(value, 'f', -1, 64))
-	case float32:
-		v.Set(name, strconv.FormatFloat(float64(value), 'f', -1, 32))
-	case time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		v.Set(name, value.UTC().Format(ISO8601UTC))
-	default:
-		return fmt.Errorf("unsupported value for param %s: %v (%s)", name, r.Interface(), r.Type().Name())
-	}
-	return nil
-}

+ 0 - 29
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal.go

@@ -1,29 +0,0 @@
-package query
-
-//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/output/query.json unmarshal_test.go
-
-import (
-	"encoding/xml"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-)
-
-// Unmarshal unmarshals a response for an AWS Query service.
-func Unmarshal(r *aws.Request) {
-	defer r.HTTPResponse.Body.Close()
-	if r.DataFilled() {
-		decoder := xml.NewDecoder(r.HTTPResponse.Body)
-		err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result")
-		if err != nil {
-			r.Error = awserr.New("SerializationError", "failed decoding Query response", err)
-			return
-		}
-	}
-}
-
-// UnmarshalMeta unmarshals header response values for an AWS Query service.
-func UnmarshalMeta(r *aws.Request) {
-	// TODO implement unmarshaling of request IDs
-}

+ 0 - 33
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_error.go

@@ -1,33 +0,0 @@
-package query
-
-import (
-	"encoding/xml"
-	"io"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-type xmlErrorResponse struct {
-	XMLName   xml.Name `xml:"ErrorResponse"`
-	Code      string   `xml:"Error>Code"`
-	Message   string   `xml:"Error>Message"`
-	RequestID string   `xml:"RequestId"`
-}
-
-// UnmarshalError unmarshals an error response for an AWS Query service.
-func UnmarshalError(r *aws.Request) {
-	defer r.HTTPResponse.Body.Close()
-
-	resp := &xmlErrorResponse{}
-	err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp)
-	if err != nil && err != io.EOF {
-		r.Error = awserr.New("SerializationError", "failed to decode query XML error response", err)
-	} else {
-		r.Error = awserr.NewRequestFailure(
-			awserr.New(resp.Code, resp.Message, nil),
-			r.HTTPResponse.StatusCode,
-			resp.RequestID,
-		)
-	}
-}

+ 0 - 1418
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go

@@ -1,1418 +0,0 @@
-package query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/internal/protocol/query"
-	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/internal/signer/v4"
-	"github.com/aws/aws-sdk-go/internal/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-
-type OutputService1ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService1ProtocolTest client.
-func NewOutputService1ProtocolTest(config *aws.Config) *OutputService1ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice1protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService1ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService1ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService1TestCaseOperation1 = "OperationName"
-
-// OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *aws.Request, output *OutputService1TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService1TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputShape, error) {
-	req, out := c.OutputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService1TestShapeOutputShape struct {
-	Char *string `type:"character"`
-
-	Double *float64 `type:"double"`
-
-	FalseBool *bool `type:"boolean"`
-
-	Float *float64 `type:"float"`
-
-	Long *int64 `type:"long"`
-
-	Num *int64 `locationName:"FooNum" type:"integer"`
-
-	Str *string `type:"string"`
-
-	Timestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	TrueBool *bool `type:"boolean"`
-
-	metadataOutputService1TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService2ProtocolTest client.
-func NewOutputService2ProtocolTest(config *aws.Config) *OutputService2ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice2protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService2ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService2ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService2TestCaseOperation1 = "OperationName"
-
-// OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *aws.Request, output *OutputService2TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService2TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputShape, error) {
-	req, out := c.OutputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2TestShapeOutputShape struct {
-	Num *int64 `type:"integer"`
-
-	Str *string `type:"string"`
-
-	metadataOutputService2TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService3ProtocolTest client.
-func NewOutputService3ProtocolTest(config *aws.Config) *OutputService3ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice3protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService3ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService3ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService3TestCaseOperation1 = "OperationName"
-
-// OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *aws.Request, output *OutputService3TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService3TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputShape, error) {
-	req, out := c.OutputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3TestShapeOutputShape struct {
-	Blob []byte `type:"blob"`
-
-	metadataOutputService3TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService4ProtocolTest client.
-func NewOutputService4ProtocolTest(config *aws.Config) *OutputService4ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice4protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService4ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService4ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService4TestCaseOperation1 = "OperationName"
-
-// OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *aws.Request, output *OutputService4TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService4TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputShape, error) {
-	req, out := c.OutputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4TestShapeOutputShape struct {
-	ListMember []*string `type:"list"`
-
-	metadataOutputService4TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService5ProtocolTest client.
-func NewOutputService5ProtocolTest(config *aws.Config) *OutputService5ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice5protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService5ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService5ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService5TestCaseOperation1 = "OperationName"
-
-// OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *aws.Request, output *OutputService5TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService5TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputShape, error) {
-	req, out := c.OutputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5TestShapeOutputShape struct {
-	ListMember []*string `locationNameList:"item" type:"list"`
-
-	metadataOutputService5TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService6ProtocolTest client.
-func NewOutputService6ProtocolTest(config *aws.Config) *OutputService6ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice6protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService6ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService6ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService6TestCaseOperation1 = "OperationName"
-
-// OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *aws.Request, output *OutputService6TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService6TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputShape, error) {
-	req, out := c.OutputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeOutputShape struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService6TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService7ProtocolTest client.
-func NewOutputService7ProtocolTest(config *aws.Config) *OutputService7ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice7protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService7ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService7ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService7TestCaseOperation1 = "OperationName"
-
-// OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *aws.Request, output *OutputService7TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService7TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputShape, error) {
-	req, out := c.OutputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7TestShapeOutputShape struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService7TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService8ProtocolTest client.
-func NewOutputService8ProtocolTest(config *aws.Config) *OutputService8ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice8protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService8ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService8ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService8TestCaseOperation1 = "OperationName"
-
-// OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation.
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *aws.Request, output *OutputService8TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService8TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputShape, error) {
-	req, out := c.OutputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeOutputShape struct {
-	List []*OutputService8TestShapeStructureShape `type:"list"`
-
-	metadataOutputService8TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeStructureShape struct {
-	Bar *string `type:"string"`
-
-	Baz *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataOutputService8TestShapeStructureShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeStructureShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService9ProtocolTest client.
-func NewOutputService9ProtocolTest(config *aws.Config) *OutputService9ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice9protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService9ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService9ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService9ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService9TestCaseOperation1 = "OperationName"
-
-// OutputService9TestCaseOperation1Request generates a request for the OutputService9TestCaseOperation1 operation.
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1Request(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (req *aws.Request, output *OutputService9TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService9TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService9TestShapeOutputService9TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService9TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (*OutputService9TestShapeOutputShape, error) {
-	req, out := c.OutputService9TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	metadataOutputService9TestShapeOutputService9TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9TestShapeOutputShape struct {
-	List []*OutputService9TestShapeStructureShape `type:"list" flattened:"true"`
-
-	metadataOutputService9TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9TestShapeStructureShape struct {
-	Bar *string `type:"string"`
-
-	Baz *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataOutputService9TestShapeStructureShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeStructureShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService10ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService10ProtocolTest client.
-func NewOutputService10ProtocolTest(config *aws.Config) *OutputService10ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice10protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService10ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService10ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService10ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService10TestCaseOperation1 = "OperationName"
-
-// OutputService10TestCaseOperation1Request generates a request for the OutputService10TestCaseOperation1 operation.
-func (c *OutputService10ProtocolTest) OutputService10TestCaseOperation1Request(input *OutputService10TestShapeOutputService10TestCaseOperation1Input) (req *aws.Request, output *OutputService10TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService10TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService10TestShapeOutputService10TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService10TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService10ProtocolTest) OutputService10TestCaseOperation1(input *OutputService10TestShapeOutputService10TestCaseOperation1Input) (*OutputService10TestShapeOutputShape, error) {
-	req, out := c.OutputService10TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService10TestShapeOutputService10TestCaseOperation1Input struct {
-	metadataOutputService10TestShapeOutputService10TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService10TestShapeOutputService10TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService10TestShapeOutputShape struct {
-	List []*string `locationNameList:"NamedList" type:"list" flattened:"true"`
-
-	metadataOutputService10TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService10TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService11ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService11ProtocolTest client.
-func NewOutputService11ProtocolTest(config *aws.Config) *OutputService11ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice11protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService11ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService11ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService11ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService11TestCaseOperation1 = "OperationName"
-
-// OutputService11TestCaseOperation1Request generates a request for the OutputService11TestCaseOperation1 operation.
-func (c *OutputService11ProtocolTest) OutputService11TestCaseOperation1Request(input *OutputService11TestShapeOutputService11TestCaseOperation1Input) (req *aws.Request, output *OutputService11TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService11TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService11TestShapeOutputService11TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService11TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService11ProtocolTest) OutputService11TestCaseOperation1(input *OutputService11TestShapeOutputService11TestCaseOperation1Input) (*OutputService11TestShapeOutputShape, error) {
-	req, out := c.OutputService11TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService11TestShapeOutputService11TestCaseOperation1Input struct {
-	metadataOutputService11TestShapeOutputService11TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeOutputService11TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService11TestShapeOutputShape struct {
-	Map map[string]*OutputService11TestShapeStructType `type:"map"`
-
-	metadataOutputService11TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService11TestShapeStructType struct {
-	Foo *string `locationName:"foo" type:"string"`
-
-	metadataOutputService11TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService12ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService12ProtocolTest client.
-func NewOutputService12ProtocolTest(config *aws.Config) *OutputService12ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice12protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService12ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService12ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService12ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService12TestCaseOperation1 = "OperationName"
-
-// OutputService12TestCaseOperation1Request generates a request for the OutputService12TestCaseOperation1 operation.
-func (c *OutputService12ProtocolTest) OutputService12TestCaseOperation1Request(input *OutputService12TestShapeOutputService12TestCaseOperation1Input) (req *aws.Request, output *OutputService12TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService12TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService12TestShapeOutputService12TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService12TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService12ProtocolTest) OutputService12TestCaseOperation1(input *OutputService12TestShapeOutputService12TestCaseOperation1Input) (*OutputService12TestShapeOutputShape, error) {
-	req, out := c.OutputService12TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService12TestShapeOutputService12TestCaseOperation1Input struct {
-	metadataOutputService12TestShapeOutputService12TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService12TestShapeOutputService12TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService12TestShapeOutputShape struct {
-	Map map[string]*string `type:"map" flattened:"true"`
-
-	metadataOutputService12TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService12TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService13ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService13ProtocolTest client.
-func NewOutputService13ProtocolTest(config *aws.Config) *OutputService13ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice13protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService13ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService13ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService13ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService13TestCaseOperation1 = "OperationName"
-
-// OutputService13TestCaseOperation1Request generates a request for the OutputService13TestCaseOperation1 operation.
-func (c *OutputService13ProtocolTest) OutputService13TestCaseOperation1Request(input *OutputService13TestShapeOutputService13TestCaseOperation1Input) (req *aws.Request, output *OutputService13TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService13TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService13TestShapeOutputService13TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService13TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService13ProtocolTest) OutputService13TestCaseOperation1(input *OutputService13TestShapeOutputService13TestCaseOperation1Input) (*OutputService13TestShapeOutputShape, error) {
-	req, out := c.OutputService13TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService13TestShapeOutputService13TestCaseOperation1Input struct {
-	metadataOutputService13TestShapeOutputService13TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService13TestShapeOutputService13TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService13TestShapeOutputShape struct {
-	Map map[string]*string `locationName:"Attribute" locationNameKey:"Name" locationNameValue:"Value" type:"map" flattened:"true"`
-
-	metadataOutputService13TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService13TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService14ProtocolTest struct {
-	*aws.Service
-}
-
-// New returns a new OutputService14ProtocolTest client.
-func NewOutputService14ProtocolTest(config *aws.Config) *OutputService14ProtocolTest {
-	service := &aws.Service{
-		Config:      aws.DefaultConfig.Merge(config),
-		ServiceName: "outputservice14protocoltest",
-		APIVersion:  "",
-	}
-	service.Initialize()
-
-	// Handlers
-	service.Handlers.Sign.PushBack(v4.Sign)
-	service.Handlers.Build.PushBack(query.Build)
-	service.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	service.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	service.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return &OutputService14ProtocolTest{service}
-}
-
-// newRequest creates a new request for a OutputService14ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService14ProtocolTest) newRequest(op *aws.Operation, params, data interface{}) *aws.Request {
-	req := aws.NewRequest(c.Service, op, params, data)
-
-	return req
-}
-
-const opOutputService14TestCaseOperation1 = "OperationName"
-
-// OutputService14TestCaseOperation1Request generates a request for the OutputService14TestCaseOperation1 operation.
-func (c *OutputService14ProtocolTest) OutputService14TestCaseOperation1Request(input *OutputService14TestShapeOutputService14TestCaseOperation1Input) (req *aws.Request, output *OutputService14TestShapeOutputShape) {
-	op := &aws.Operation{
-		Name: opOutputService14TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService14TestShapeOutputService14TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService14TestShapeOutputShape{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService14ProtocolTest) OutputService14TestCaseOperation1(input *OutputService14TestShapeOutputService14TestCaseOperation1Input) (*OutputService14TestShapeOutputShape, error) {
-	req, out := c.OutputService14TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService14TestShapeOutputService14TestCaseOperation1Input struct {
-	metadataOutputService14TestShapeOutputService14TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService14TestShapeOutputService14TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService14TestShapeOutputShape struct {
-	Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"`
-
-	metadataOutputService14TestShapeOutputShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService14TestShapeOutputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	svc := NewOutputService1ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><Timestamp>2015-01-25T08:00:00Z</Timestamp></OperationNameResult><ResponseMetadata><RequestId>request-id</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService1TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.Char)
-	assert.Equal(t, 1.3, *out.Double)
-	assert.Equal(t, false, *out.FalseBool)
-	assert.Equal(t, 1.2, *out.Float)
-	assert.Equal(t, int64(200), *out.Long)
-	assert.Equal(t, int64(123), *out.Num)
-	assert.Equal(t, "myname", *out.Str)
-	assert.Equal(t, time.Unix(1.4221728e+09, 0).UTC().String(), out.Timestamp.String())
-	assert.Equal(t, true, *out.TrueBool)
-
-}
-
-func TestOutputService2ProtocolTestNotAllMembersInResponseCase1(t *testing.T) {
-	svc := NewOutputService2ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Str>myname</Str></OperationNameResult><ResponseMetadata><RequestId>request-id</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService2TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "myname", *out.Str)
-
-}
-
-func TestOutputService3ProtocolTestBlobCase1(t *testing.T) {
-	svc := NewOutputService3ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Blob>dmFsdWU=</Blob></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService3TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "value", string(out.Blob))
-
-}
-
-func TestOutputService4ProtocolTestListsCase1(t *testing.T) {
-	svc := NewOutputService4ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember><member>abc</member><member>123</member></ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService4TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService5ProtocolTestListWithCustomMemberNameCase1(t *testing.T) {
-	svc := NewOutputService5ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember><item>abc</item><item>123</item></ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService5TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService6ProtocolTestFlattenedListCase1(t *testing.T) {
-	svc := NewOutputService6ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember>abc</ListMember><ListMember>123</ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService6TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService7ProtocolTestFlattenedSingleElementListCase1(t *testing.T) {
-	svc := NewOutputService7ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember>abc</ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService7TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-
-}
-
-func TestOutputService8ProtocolTestListOfStructuresCase1(t *testing.T) {
-	svc := NewOutputService8ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><List><member><Foo>firstfoo</Foo><Bar>firstbar</Bar><Baz>firstbaz</Baz></member><member><Foo>secondfoo</Foo><Bar>secondbar</Bar><Baz>secondbaz</Baz></member></List></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService8TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "firstbar", *out.List[0].Bar)
-	assert.Equal(t, "firstbaz", *out.List[0].Baz)
-	assert.Equal(t, "firstfoo", *out.List[0].Foo)
-	assert.Equal(t, "secondbar", *out.List[1].Bar)
-	assert.Equal(t, "secondbaz", *out.List[1].Baz)
-	assert.Equal(t, "secondfoo", *out.List[1].Foo)
-
-}
-
-func TestOutputService9ProtocolTestFlattenedListOfStructuresCase1(t *testing.T) {
-	svc := NewOutputService9ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><List><Foo>firstfoo</Foo><Bar>firstbar</Bar><Baz>firstbaz</Baz></List><List><Foo>secondfoo</Foo><Bar>secondbar</Bar><Baz>secondbaz</Baz></List></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService9TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "firstbar", *out.List[0].Bar)
-	assert.Equal(t, "firstbaz", *out.List[0].Baz)
-	assert.Equal(t, "firstfoo", *out.List[0].Foo)
-	assert.Equal(t, "secondbar", *out.List[1].Bar)
-	assert.Equal(t, "secondbaz", *out.List[1].Baz)
-	assert.Equal(t, "secondfoo", *out.List[1].Foo)
-
-}
-
-func TestOutputService10ProtocolTestFlattenedListWithLocationNameCase1(t *testing.T) {
-	svc := NewOutputService10ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><NamedList>a</NamedList><NamedList>b</NamedList></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService10TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.List[0])
-	assert.Equal(t, "b", *out.List[1])
-
-}
-
-func TestOutputService11ProtocolTestNormalMapCase1(t *testing.T) {
-	svc := NewOutputService11ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08\"><OperationNameResult><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService11TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"].Foo)
-	assert.Equal(t, "bar", *out.Map["qux"].Foo)
-
-}
-
-func TestOutputService12ProtocolTestFlattenedMapCase1(t *testing.T) {
-	svc := NewOutputService12ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService12TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService13ProtocolTestFlattenedMapInShapeDefinitionCase1(t *testing.T) {
-	svc := NewOutputService13ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Attribute><Name>qux</Name><Value>bar</Value></Attribute></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService13TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService14ProtocolTestNamedMapCase1(t *testing.T) {
-	svc := NewOutputService14ProtocolTest(nil)
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService14TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}

+ 0 - 217
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/build.go

@@ -1,217 +0,0 @@
-// Package rest provides RESTful serialisation of AWS requests and responses.
-package rest
-
-import (
-	"bytes"
-	"encoding/base64"
-	"fmt"
-	"io"
-	"net/url"
-	"path"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-// RFC822 returns an RFC822 formatted timestamp for AWS protocols
-const RFC822 = "Mon, 2 Jan 2006 15:04:05 GMT"
-
-// Whether the byte value can be sent without escaping in AWS URLs
-var noEscape [256]bool
-
-func init() {
-	for i := 0; i < len(noEscape); i++ {
-		// AWS expects every character except these to be escaped
-		noEscape[i] = (i >= 'A' && i <= 'Z') ||
-			(i >= 'a' && i <= 'z') ||
-			(i >= '0' && i <= '9') ||
-			i == '-' ||
-			i == '.' ||
-			i == '_' ||
-			i == '~'
-	}
-}
-
-// Build builds the REST component of a service request.
-func Build(r *aws.Request) {
-	if r.ParamsFilled() {
-		v := reflect.ValueOf(r.Params).Elem()
-		buildLocationElements(r, v)
-		buildBody(r, v)
-	}
-}
-
-func buildLocationElements(r *aws.Request, v reflect.Value) {
-	query := r.HTTPRequest.URL.Query()
-
-	for i := 0; i < v.NumField(); i++ {
-		m := v.Field(i)
-		if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) {
-			continue
-		}
-
-		if m.IsValid() {
-			field := v.Type().Field(i)
-			name := field.Tag.Get("locationName")
-			if name == "" {
-				name = field.Name
-			}
-			if m.Kind() == reflect.Ptr {
-				m = m.Elem()
-			}
-			if !m.IsValid() {
-				continue
-			}
-
-			switch field.Tag.Get("location") {
-			case "headers": // header maps
-				buildHeaderMap(r, m, field.Tag.Get("locationName"))
-			case "header":
-				buildHeader(r, m, name)
-			case "uri":
-				buildURI(r, m, name)
-			case "querystring":
-				buildQueryString(r, m, name, query)
-			}
-		}
-		if r.Error != nil {
-			return
-		}
-	}
-
-	r.HTTPRequest.URL.RawQuery = query.Encode()
-	updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path)
-}
-
-func buildBody(r *aws.Request, v reflect.Value) {
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			pfield, _ := v.Type().FieldByName(payloadName)
-			if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
-				payload := reflect.Indirect(v.FieldByName(payloadName))
-				if payload.IsValid() && payload.Interface() != nil {
-					switch reader := payload.Interface().(type) {
-					case io.ReadSeeker:
-						r.SetReaderBody(reader)
-					case []byte:
-						r.SetBufferBody(reader)
-					case string:
-						r.SetStringBody(reader)
-					default:
-						r.Error = awserr.New("SerializationError",
-							"failed to encode REST request",
-							fmt.Errorf("unknown payload type %s", payload.Type()))
-					}
-				}
-			}
-		}
-	}
-}
-
-func buildHeader(r *aws.Request, v reflect.Value, name string) {
-	str, err := convertType(v)
-	if err != nil {
-		r.Error = awserr.New("SerializationError", "failed to encode REST request", err)
-	} else if str != nil {
-		r.HTTPRequest.Header.Add(name, *str)
-	}
-}
-
-func buildHeaderMap(r *aws.Request, v reflect.Value, prefix string) {
-	for _, key := range v.MapKeys() {
-		str, err := convertType(v.MapIndex(key))
-		if err != nil {
-			r.Error = awserr.New("SerializationError", "failed to encode REST request", err)
-		} else if str != nil {
-			r.HTTPRequest.Header.Add(prefix+key.String(), *str)
-		}
-	}
-}
-
-func buildURI(r *aws.Request, v reflect.Value, name string) {
-	value, err := convertType(v)
-	if err != nil {
-		r.Error = awserr.New("SerializationError", "failed to encode REST request", err)
-	} else if value != nil {
-		uri := r.HTTPRequest.URL.Path
-		uri = strings.Replace(uri, "{"+name+"}", EscapePath(*value, true), -1)
-		uri = strings.Replace(uri, "{"+name+"+}", EscapePath(*value, false), -1)
-		r.HTTPRequest.URL.Path = uri
-	}
-}
-
-func buildQueryString(r *aws.Request, v reflect.Value, name string, query url.Values) {
-	str, err := convertType(v)
-	if err != nil {
-		r.Error = awserr.New("SerializationError", "failed to encode REST request", err)
-	} else if str != nil {
-		query.Set(name, *str)
-	}
-}
-
-func updatePath(url *url.URL, urlPath string) {
-	scheme, query := url.Scheme, url.RawQuery
-
-	hasSlash := strings.HasSuffix(urlPath, "/")
-
-	// clean up path
-	urlPath = path.Clean(urlPath)
-	if hasSlash && !strings.HasSuffix(urlPath, "/") {
-		urlPath += "/"
-	}
-
-	// get formatted URL minus scheme so we can build this into Opaque
-	url.Scheme, url.Path, url.RawQuery = "", "", ""
-	s := url.String()
-	url.Scheme = scheme
-	url.RawQuery = query
-
-	// build opaque URI
-	url.Opaque = s + urlPath
-}
-
-// EscapePath escapes part of a URL path in Amazon style
-func EscapePath(path string, encodeSep bool) string {
-	var buf bytes.Buffer
-	for i := 0; i < len(path); i++ {
-		c := path[i]
-		if noEscape[c] || (c == '/' && !encodeSep) {
-			buf.WriteByte(c)
-		} else {
-			buf.WriteByte('%')
-			buf.WriteString(strings.ToUpper(strconv.FormatUint(uint64(c), 16)))
-		}
-	}
-	return buf.String()
-}
-
-func convertType(v reflect.Value) (*string, error) {
-	v = reflect.Indirect(v)
-	if !v.IsValid() {
-		return nil, nil
-	}
-
-	var str string
-	switch value := v.Interface().(type) {
-	case string:
-		str = value
-	case []byte:
-		str = base64.StdEncoding.EncodeToString(value)
-	case bool:
-		str = strconv.FormatBool(value)
-	case int64:
-		str = strconv.FormatInt(value, 10)
-	case float64:
-		str = strconv.FormatFloat(value, 'f', -1, 64)
-	case time.Time:
-		str = value.UTC().Format(RFC822)
-	default:
-		err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
-		return nil, err
-	}
-	return &str, nil
-}

+ 0 - 45
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/payload.go

@@ -1,45 +0,0 @@
-package rest
-
-import "reflect"
-
-// PayloadMember returns the payload field member of i if there is one, or nil.
-func PayloadMember(i interface{}) interface{} {
-	if i == nil {
-		return nil
-	}
-
-	v := reflect.ValueOf(i).Elem()
-	if !v.IsValid() {
-		return nil
-	}
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			field, _ := v.Type().FieldByName(payloadName)
-			if field.Tag.Get("type") != "structure" {
-				return nil
-			}
-
-			payload := v.FieldByName(payloadName)
-			if payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) {
-				return payload.Interface()
-			}
-		}
-	}
-	return nil
-}
-
-// PayloadType returns the type of a payload field member of i if there is one, or "".
-func PayloadType(i interface{}) string {
-	v := reflect.Indirect(reflect.ValueOf(i))
-	if !v.IsValid() {
-		return ""
-	}
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			if member, ok := v.Type().FieldByName(payloadName); ok {
-				return member.Tag.Get("type")
-			}
-		}
-	}
-	return ""
-}

+ 0 - 174
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/unmarshal.go

@@ -1,174 +0,0 @@
-package rest
-
-import (
-	"encoding/base64"
-	"fmt"
-	"io/ioutil"
-	"net/http"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-)
-
-// Unmarshal unmarshals the REST component of a response in a REST service.
-func Unmarshal(r *aws.Request) {
-	if r.DataFilled() {
-		v := reflect.Indirect(reflect.ValueOf(r.Data))
-		unmarshalBody(r, v)
-		unmarshalLocationElements(r, v)
-	}
-}
-
-func unmarshalBody(r *aws.Request, v reflect.Value) {
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			pfield, _ := v.Type().FieldByName(payloadName)
-			if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
-				payload := v.FieldByName(payloadName)
-				if payload.IsValid() {
-					switch payload.Interface().(type) {
-					case []byte:
-						b, err := ioutil.ReadAll(r.HTTPResponse.Body)
-						if err != nil {
-							r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-						} else {
-							payload.Set(reflect.ValueOf(b))
-						}
-					case *string:
-						b, err := ioutil.ReadAll(r.HTTPResponse.Body)
-						if err != nil {
-							r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-						} else {
-							str := string(b)
-							payload.Set(reflect.ValueOf(&str))
-						}
-					default:
-						switch payload.Type().String() {
-						case "io.ReadSeeker":
-							payload.Set(reflect.ValueOf(aws.ReadSeekCloser(r.HTTPResponse.Body)))
-						case "aws.ReadSeekCloser", "io.ReadCloser":
-							payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
-						default:
-							r.Error = awserr.New("SerializationError",
-								"failed to decode REST response",
-								fmt.Errorf("unknown payload type %s", payload.Type()))
-						}
-					}
-				}
-			}
-		}
-	}
-}
-
-func unmarshalLocationElements(r *aws.Request, v reflect.Value) {
-	for i := 0; i < v.NumField(); i++ {
-		m, field := v.Field(i), v.Type().Field(i)
-		if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {
-			continue
-		}
-
-		if m.IsValid() {
-			name := field.Tag.Get("locationName")
-			if name == "" {
-				name = field.Name
-			}
-
-			switch field.Tag.Get("location") {
-			case "statusCode":
-				unmarshalStatusCode(m, r.HTTPResponse.StatusCode)
-			case "header":
-				err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name))
-				if err != nil {
-					r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-					break
-				}
-			case "headers":
-				prefix := field.Tag.Get("locationName")
-				err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix)
-				if err != nil {
-					r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-					break
-				}
-			}
-		}
-		if r.Error != nil {
-			return
-		}
-	}
-}
-
-func unmarshalStatusCode(v reflect.Value, statusCode int) {
-	if !v.IsValid() {
-		return
-	}
-
-	switch v.Interface().(type) {
-	case *int64:
-		s := int64(statusCode)
-		v.Set(reflect.ValueOf(&s))
-	}
-}
-
-func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error {
-	switch r.Interface().(type) {
-	case map[string]*string: // we only support string map value types
-		out := map[string]*string{}
-		for k, v := range headers {
-			k = http.CanonicalHeaderKey(k)
-			if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) {
-				out[k[len(prefix):]] = &v[0]
-			}
-		}
-		r.Set(reflect.ValueOf(out))
-	}
-	return nil
-}
-
-func unmarshalHeader(v reflect.Value, header string) error {
-	if !v.IsValid() || (header == "" && v.Elem().Kind() != reflect.String) {
-		return nil
-	}
-
-	switch v.Interface().(type) {
-	case *string:
-		v.Set(reflect.ValueOf(&header))
-	case []byte:
-		b, err := base64.StdEncoding.DecodeString(header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&b))
-	case *bool:
-		b, err := strconv.ParseBool(header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&b))
-	case *int64:
-		i, err := strconv.ParseInt(header, 10, 64)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&i))
-	case *float64:
-		f, err := strconv.ParseFloat(header, 64)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&f))
-	case *time.Time:
-		t, err := time.Parse(RFC822, header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&t))
-	default:
-		err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
-		return err
-	}
-	return nil
-}

+ 0 - 287
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil/build.go

@@ -1,287 +0,0 @@
-// Package xmlutil provides XML serialisation of AWS requests and responses.
-package xmlutil
-
-import (
-	"encoding/base64"
-	"encoding/xml"
-	"fmt"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// BuildXML will serialize params into an xml.Encoder.
-// Error will be returned if the serialization of any of the params or nested values fails.
-func BuildXML(params interface{}, e *xml.Encoder) error {
-	b := xmlBuilder{encoder: e, namespaces: map[string]string{}}
-	root := NewXMLElement(xml.Name{})
-	if err := b.buildValue(reflect.ValueOf(params), root, ""); err != nil {
-		return err
-	}
-	for _, c := range root.Children {
-		for _, v := range c {
-			return StructToXML(e, v, false)
-		}
-	}
-	return nil
-}
-
-// Returns the reflection element of a value, if it is a pointer.
-func elemOf(value reflect.Value) reflect.Value {
-	for value.Kind() == reflect.Ptr {
-		value = value.Elem()
-	}
-	return value
-}
-
-// A xmlBuilder serializes values from Go code to XML
-type xmlBuilder struct {
-	encoder    *xml.Encoder
-	namespaces map[string]string
-}
-
-// buildValue generic XMLNode builder for any type. Will build value for their specific type
-// struct, list, map, scalar.
-//
-// Also takes a "type" tag value to set what type a value should be converted to XMLNode as. If
-// type is not provided reflect will be used to determine the value's type.
-func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	value = elemOf(value)
-	if !value.IsValid() { // no need to handle zero values
-		return nil
-	} else if tag.Get("location") != "" { // don't handle non-body location values
-		return nil
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch value.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		if field, ok := value.Type().FieldByName("SDKShapeTraits"); ok {
-			tag = tag + reflect.StructTag(" ") + field.Tag
-		}
-		return b.buildStruct(value, current, tag)
-	case "list":
-		return b.buildList(value, current, tag)
-	case "map":
-		return b.buildMap(value, current, tag)
-	default:
-		return b.buildScalar(value, current, tag)
-	}
-}
-
-// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested
-// types are converted to XMLNodes also.
-func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if !value.IsValid() {
-		return nil
-	}
-
-	fieldAdded := false
-
-	// unwrap payloads
-	if payload := tag.Get("payload"); payload != "" {
-		field, _ := value.Type().FieldByName(payload)
-		tag = field.Tag
-		value = elemOf(value.FieldByName(payload))
-
-		if !value.IsValid() {
-			return nil
-		}
-	}
-
-	child := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
-
-	// there is an xmlNamespace associated with this struct
-	if prefix, uri := tag.Get("xmlPrefix"), tag.Get("xmlURI"); uri != "" {
-		ns := xml.Attr{
-			Name:  xml.Name{Local: "xmlns"},
-			Value: uri,
-		}
-		if prefix != "" {
-			b.namespaces[prefix] = uri // register the namespace
-			ns.Name.Local = "xmlns:" + prefix
-		}
-
-		child.Attr = append(child.Attr, ns)
-	}
-
-	t := value.Type()
-	for i := 0; i < value.NumField(); i++ {
-		if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		member := elemOf(value.Field(i))
-		field := t.Field(i)
-		mTag := field.Tag
-
-		if mTag.Get("location") != "" { // skip non-body members
-			continue
-		}
-
-		memberName := mTag.Get("locationName")
-		if memberName == "" {
-			memberName = field.Name
-			mTag = reflect.StructTag(string(mTag) + ` locationName:"` + memberName + `"`)
-		}
-		if err := b.buildValue(member, child, mTag); err != nil {
-			return err
-		}
-
-		fieldAdded = true
-	}
-
-	if fieldAdded { // only append this child if we have one ore more valid members
-		current.AddChild(child)
-	}
-
-	return nil
-}
-
-// buildList adds the value's list items to the current XMLNode as children nodes. All
-// nested values in the list are converted to XMLNodes also.
-func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if value.IsNil() { // don't build omitted lists
-		return nil
-	}
-
-	// check for unflattened list member
-	flattened := tag.Get("flattened") != ""
-
-	xname := xml.Name{Local: tag.Get("locationName")}
-	if flattened {
-		for i := 0; i < value.Len(); i++ {
-			child := NewXMLElement(xname)
-			current.AddChild(child)
-			if err := b.buildValue(value.Index(i), child, ""); err != nil {
-				return err
-			}
-		}
-	} else {
-		list := NewXMLElement(xname)
-		current.AddChild(list)
-
-		for i := 0; i < value.Len(); i++ {
-			iname := tag.Get("locationNameList")
-			if iname == "" {
-				iname = "member"
-			}
-
-			child := NewXMLElement(xml.Name{Local: iname})
-			list.AddChild(child)
-			if err := b.buildValue(value.Index(i), child, ""); err != nil {
-				return err
-			}
-		}
-	}
-
-	return nil
-}
-
-// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All
-// nested values in the map are converted to XMLNodes also.
-//
-// Error will be returned if it is unable to build the map's values into XMLNodes
-func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if value.IsNil() { // don't build omitted maps
-		return nil
-	}
-
-	maproot := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
-	current.AddChild(maproot)
-	current = maproot
-
-	kname, vname := "key", "value"
-	if n := tag.Get("locationNameKey"); n != "" {
-		kname = n
-	}
-	if n := tag.Get("locationNameValue"); n != "" {
-		vname = n
-	}
-
-	// sorting is not required for compliance, but it makes testing easier
-	keys := make([]string, value.Len())
-	for i, k := range value.MapKeys() {
-		keys[i] = k.String()
-	}
-	sort.Strings(keys)
-
-	for _, k := range keys {
-		v := value.MapIndex(reflect.ValueOf(k))
-
-		mapcur := current
-		if tag.Get("flattened") == "" { // add "entry" tag to non-flat maps
-			child := NewXMLElement(xml.Name{Local: "entry"})
-			mapcur.AddChild(child)
-			mapcur = child
-		}
-
-		kchild := NewXMLElement(xml.Name{Local: kname})
-		kchild.Text = k
-		vchild := NewXMLElement(xml.Name{Local: vname})
-		mapcur.AddChild(kchild)
-		mapcur.AddChild(vchild)
-
-		if err := b.buildValue(v, vchild, ""); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// buildScalar will convert the value into a string and append it as a attribute or child
-// of the current XMLNode.
-//
-// The value will be added as an attribute if tag contains a "xmlAttribute" attribute value.
-//
-// Error will be returned if the value type is unsupported.
-func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	var str string
-	switch converted := value.Interface().(type) {
-	case string:
-		str = converted
-	case []byte:
-		if !value.IsNil() {
-			str = base64.StdEncoding.EncodeToString(converted)
-		}
-	case bool:
-		str = strconv.FormatBool(converted)
-	case int64:
-		str = strconv.FormatInt(converted, 10)
-	case int:
-		str = strconv.Itoa(converted)
-	case float64:
-		str = strconv.FormatFloat(converted, 'f', -1, 64)
-	case float32:
-		str = strconv.FormatFloat(float64(converted), 'f', -1, 32)
-	case time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		str = converted.UTC().Format(ISO8601UTC)
-	default:
-		return fmt.Errorf("unsupported value for param %s: %v (%s)",
-			tag.Get("locationName"), value.Interface(), value.Type().Name())
-	}
-
-	xname := xml.Name{Local: tag.Get("locationName")}
-	if tag.Get("xmlAttribute") != "" { // put into current node's attribute list
-		attr := xml.Attr{Name: xname, Value: str}
-		current.Attr = append(current.Attr, attr)
-	} else { // regular text node
-		current.AddChild(&XMLNode{Name: xname, Text: str})
-	}
-	return nil
-}

+ 0 - 260
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil/unmarshal.go

@@ -1,260 +0,0 @@
-package xmlutil
-
-import (
-	"encoding/base64"
-	"encoding/xml"
-	"fmt"
-	"io"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// UnmarshalXML deserializes an xml.Decoder into the container v. V
-// needs to match the shape of the XML expected to be decoded.
-// If the shape doesn't match unmarshaling will fail.
-func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
-	n, _ := XMLToStruct(d, nil)
-	if n.Children != nil {
-		for _, root := range n.Children {
-			for _, c := range root {
-				if wrappedChild, ok := c.Children[wrapper]; ok {
-					c = wrappedChild[0] // pull out wrapped element
-				}
-
-				err := parse(reflect.ValueOf(v), c, "")
-				if err != nil {
-					if err == io.EOF {
-						return nil
-					}
-					return err
-				}
-			}
-		}
-		return nil
-	}
-	return nil
-}
-
-// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect
-// will be used to determine the type from r.
-func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	rtype := r.Type()
-	if rtype.Kind() == reflect.Ptr {
-		rtype = rtype.Elem() // check kind of actual element type
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch rtype.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		if field, ok := rtype.FieldByName("SDKShapeTraits"); ok {
-			tag = field.Tag
-		}
-		return parseStruct(r, node, tag)
-	case "list":
-		return parseList(r, node, tag)
-	case "map":
-		return parseMap(r, node, tag)
-	default:
-		return parseScalar(r, node, tag)
-	}
-}
-
-// parseStruct deserializes a structure and its fields from an XMLNode. Any nested
-// types in the structure will also be deserialized.
-func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	t := r.Type()
-	if r.Kind() == reflect.Ptr {
-		if r.IsNil() { // create the structure if it's nil
-			s := reflect.New(r.Type().Elem())
-			r.Set(s)
-			r = s
-		}
-
-		r = r.Elem()
-		t = t.Elem()
-	}
-
-	// unwrap any payloads
-	if payload := tag.Get("payload"); payload != "" {
-		field, _ := t.FieldByName(payload)
-		return parseStruct(r.FieldByName(payload), node, field.Tag)
-	}
-
-	for i := 0; i < t.NumField(); i++ {
-		field := t.Field(i)
-		if c := field.Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		// figure out what this field is called
-		name := field.Name
-		if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
-			name = field.Tag.Get("locationNameList")
-		} else if locName := field.Tag.Get("locationName"); locName != "" {
-			name = locName
-		}
-
-		// try to find the field by name in elements
-		elems := node.Children[name]
-
-		if elems == nil { // try to find the field in attributes
-			for _, a := range node.Attr {
-				if name == a.Name.Local {
-					// turn this into a text node for de-serializing
-					elems = []*XMLNode{{Text: a.Value}}
-				}
-			}
-		}
-
-		member := r.FieldByName(field.Name)
-		for _, elem := range elems {
-			err := parse(member, elem, field.Tag)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-// parseList deserializes a list of values from an XML node. Each list entry
-// will also be deserialized.
-func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	t := r.Type()
-
-	if tag.Get("flattened") == "" { // look at all item entries
-		mname := "member"
-		if name := tag.Get("locationNameList"); name != "" {
-			mname = name
-		}
-
-		if Children, ok := node.Children[mname]; ok {
-			if r.IsNil() {
-				r.Set(reflect.MakeSlice(t, len(Children), len(Children)))
-			}
-
-			for i, c := range Children {
-				err := parse(r.Index(i), c, "")
-				if err != nil {
-					return err
-				}
-			}
-		}
-	} else { // flattened list means this is a single element
-		if r.IsNil() {
-			r.Set(reflect.MakeSlice(t, 0, 0))
-		}
-
-		childR := reflect.Zero(t.Elem())
-		r.Set(reflect.Append(r, childR))
-		err := parse(r.Index(r.Len()-1), node, "")
-		if err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode
-// will also be deserialized as map entries.
-func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	if r.IsNil() {
-		r.Set(reflect.MakeMap(r.Type()))
-	}
-
-	if tag.Get("flattened") == "" { // look at all child entries
-		for _, entry := range node.Children["entry"] {
-			parseMapEntry(r, entry, tag)
-		}
-	} else { // this element is itself an entry
-		parseMapEntry(r, node, tag)
-	}
-
-	return nil
-}
-
-// parseMapEntry deserializes a map entry from a XML node.
-func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	kname, vname := "key", "value"
-	if n := tag.Get("locationNameKey"); n != "" {
-		kname = n
-	}
-	if n := tag.Get("locationNameValue"); n != "" {
-		vname = n
-	}
-
-	keys, ok := node.Children[kname]
-	values := node.Children[vname]
-	if ok {
-		for i, key := range keys {
-			keyR := reflect.ValueOf(key.Text)
-			value := values[i]
-			valueR := reflect.New(r.Type().Elem()).Elem()
-
-			parse(valueR, value, "")
-			r.SetMapIndex(keyR, valueR)
-		}
-	}
-	return nil
-}
-
-// parseScaller deserializes an XMLNode value into a concrete type based on the
-// interface type of r.
-//
-// Error is returned if the deserialization fails due to invalid type conversion,
-// or unsupported interface type.
-func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	switch r.Interface().(type) {
-	case *string:
-		r.Set(reflect.ValueOf(&node.Text))
-		return nil
-	case []byte:
-		b, err := base64.StdEncoding.DecodeString(node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(b))
-	case *bool:
-		v, err := strconv.ParseBool(node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *int64:
-		v, err := strconv.ParseInt(node.Text, 10, 64)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *float64:
-		v, err := strconv.ParseFloat(node.Text, 64)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		t, err := time.Parse(ISO8601UTC, node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&t))
-	default:
-		return fmt.Errorf("unsupported value: %v (%s)", r.Interface(), r.Type())
-	}
-	return nil
-}

+ 0 - 43
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go

@@ -1,43 +0,0 @@
-package v4_test
-
-import (
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/internal/test/unit"
-	"github.com/aws/aws-sdk-go/service/s3"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ = unit.Imported
-
-func TestPresignHandler(t *testing.T) {
-	svc := s3.New(nil)
-	req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
-		Bucket:             aws.String("bucket"),
-		Key:                aws.String("key"),
-		ContentDisposition: aws.String("a+b c$d"),
-		ACL:                aws.String("public-read"),
-	})
-	req.Time = time.Unix(0, 0)
-	urlstr, err := req.Presign(5 * time.Minute)
-
-	assert.NoError(t, err)
-
-	expectedDate := "19700101T000000Z"
-	expectedHeaders := "host;x-amz-acl"
-	expectedSig := "7edcb4e3a1bf12f4989018d75acbe3a7f03df24bd6f3112602d59fc551f0e4e2"
-	expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
-
-	u, _ := url.Parse(urlstr)
-	urlQ := u.Query()
-	assert.Equal(t, expectedSig, urlQ.Get("X-Amz-Signature"))
-	assert.Equal(t, expectedCred, urlQ.Get("X-Amz-Credential"))
-	assert.Equal(t, expectedHeaders, urlQ.Get("X-Amz-SignedHeaders"))
-	assert.Equal(t, expectedDate, urlQ.Get("X-Amz-Date"))
-	assert.Equal(t, "300", urlQ.Get("X-Amz-Expires"))
-
-	assert.NotContains(t, urlstr, "+") // + encoded as %20
-}

+ 0 - 364
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4.go

@@ -1,364 +0,0 @@
-// Package v4 implements signing for AWS V4 signer
-package v4
-
-import (
-	"crypto/hmac"
-	"crypto/sha256"
-	"encoding/hex"
-	"fmt"
-	"io"
-	"net/http"
-	"net/url"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/internal/protocol/rest"
-)
-
-const (
-	authHeaderPrefix = "AWS4-HMAC-SHA256"
-	timeFormat       = "20060102T150405Z"
-	shortTimeFormat  = "20060102"
-)
-
-var ignoredHeaders = map[string]bool{
-	"Authorization":  true,
-	"Content-Type":   true,
-	"Content-Length": true,
-	"User-Agent":     true,
-}
-
-type signer struct {
-	Request     *http.Request
-	Time        time.Time
-	ExpireTime  time.Duration
-	ServiceName string
-	Region      string
-	CredValues  credentials.Value
-	Credentials *credentials.Credentials
-	Query       url.Values
-	Body        io.ReadSeeker
-	Debug       aws.LogLevelType
-	Logger      aws.Logger
-
-	isPresign          bool
-	formattedTime      string
-	formattedShortTime string
-
-	signedHeaders    string
-	canonicalHeaders string
-	canonicalString  string
-	credentialString string
-	stringToSign     string
-	signature        string
-	authorization    string
-}
-
-// Sign requests with signature version 4.
-//
-// Will sign the requests with the service config's Credentials object
-// Signing is skipped if the credentials is the credentials.AnonymousCredentials
-// object.
-func Sign(req *aws.Request) {
-	// If the request does not need to be signed ignore the signing of the
-	// request if the AnonymousCredentials object is used.
-	if req.Service.Config.Credentials == credentials.AnonymousCredentials {
-		return
-	}
-
-	region := req.Service.SigningRegion
-	if region == "" {
-		region = aws.StringValue(req.Service.Config.Region)
-	}
-
-	name := req.Service.SigningName
-	if name == "" {
-		name = req.Service.ServiceName
-	}
-
-	s := signer{
-		Request:     req.HTTPRequest,
-		Time:        req.Time,
-		ExpireTime:  req.ExpireTime,
-		Query:       req.HTTPRequest.URL.Query(),
-		Body:        req.Body,
-		ServiceName: name,
-		Region:      region,
-		Credentials: req.Service.Config.Credentials,
-		Debug:       req.Service.Config.LogLevel.Value(),
-		Logger:      req.Service.Config.Logger,
-	}
-
-	req.Error = s.sign()
-}
-
-func (v4 *signer) sign() error {
-	if v4.ExpireTime != 0 {
-		v4.isPresign = true
-	}
-
-	if v4.isRequestSigned() {
-		if !v4.Credentials.IsExpired() {
-			// If the request is already signed, and the credentials have not
-			// expired yet ignore the signing request.
-			return nil
-		}
-
-		// The credentials have expired for this request. The current signing
-		// is invalid, and needs to be request because the request will fail.
-		if v4.isPresign {
-			v4.removePresign()
-			// Update the request's query string to ensure the values stays in
-			// sync in the case retrieving the new credentials fails.
-			v4.Request.URL.RawQuery = v4.Query.Encode()
-		}
-	}
-
-	var err error
-	v4.CredValues, err = v4.Credentials.Get()
-	if err != nil {
-		return err
-	}
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-Algorithm", authHeaderPrefix)
-		if v4.CredValues.SessionToken != "" {
-			v4.Query.Set("X-Amz-Security-Token", v4.CredValues.SessionToken)
-		} else {
-			v4.Query.Del("X-Amz-Security-Token")
-		}
-	} else if v4.CredValues.SessionToken != "" {
-		v4.Request.Header.Set("X-Amz-Security-Token", v4.CredValues.SessionToken)
-	}
-
-	v4.build()
-
-	if v4.Debug.Matches(aws.LogDebugWithSigning) {
-		v4.logSigningInfo()
-	}
-
-	return nil
-}
-
-const logSignInfoMsg = `DEBUG: Request Signiture:
----[ CANONICAL STRING  ]-----------------------------
-%s
----[ STRING TO SIGN ]--------------------------------
-%s%s
------------------------------------------------------`
-const logSignedURLMsg = `
----[ SIGNED URL ]------------------------------------
-%s`
-
-func (v4 *signer) logSigningInfo() {
-	signedURLMsg := ""
-	if v4.isPresign {
-		signedURLMsg = fmt.Sprintf(logSignedURLMsg, v4.Request.URL.String())
-	}
-	msg := fmt.Sprintf(logSignInfoMsg, v4.canonicalString, v4.stringToSign, signedURLMsg)
-	v4.Logger.Log(msg)
-}
-
-func (v4 *signer) build() {
-	v4.buildTime()             // no depends
-	v4.buildCredentialString() // no depends
-	if v4.isPresign {
-		v4.buildQuery() // no depends
-	}
-	v4.buildCanonicalHeaders() // depends on cred string
-	v4.buildCanonicalString()  // depends on canon headers / signed headers
-	v4.buildStringToSign()     // depends on canon string
-	v4.buildSignature()        // depends on string to sign
-
-	if v4.isPresign {
-		v4.Request.URL.RawQuery += "&X-Amz-Signature=" + v4.signature
-	} else {
-		parts := []string{
-			authHeaderPrefix + " Credential=" + v4.CredValues.AccessKeyID + "/" + v4.credentialString,
-			"SignedHeaders=" + v4.signedHeaders,
-			"Signature=" + v4.signature,
-		}
-		v4.Request.Header.Set("Authorization", strings.Join(parts, ", "))
-	}
-}
-
-func (v4 *signer) buildTime() {
-	v4.formattedTime = v4.Time.UTC().Format(timeFormat)
-	v4.formattedShortTime = v4.Time.UTC().Format(shortTimeFormat)
-
-	if v4.isPresign {
-		duration := int64(v4.ExpireTime / time.Second)
-		v4.Query.Set("X-Amz-Date", v4.formattedTime)
-		v4.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10))
-	} else {
-		v4.Request.Header.Set("X-Amz-Date", v4.formattedTime)
-	}
-}
-
-func (v4 *signer) buildCredentialString() {
-	v4.credentialString = strings.Join([]string{
-		v4.formattedShortTime,
-		v4.Region,
-		v4.ServiceName,
-		"aws4_request",
-	}, "/")
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-Credential", v4.CredValues.AccessKeyID+"/"+v4.credentialString)
-	}
-}
-
-func (v4 *signer) buildQuery() {
-	for k, h := range v4.Request.Header {
-		if strings.HasPrefix(http.CanonicalHeaderKey(k), "X-Amz-") {
-			continue // never hoist x-amz-* headers, they must be signed
-		}
-		if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok {
-			continue // never hoist ignored headers
-		}
-
-		v4.Request.Header.Del(k)
-		v4.Query.Del(k)
-		for _, v := range h {
-			v4.Query.Add(k, v)
-		}
-	}
-}
-
-func (v4 *signer) buildCanonicalHeaders() {
-	var headers []string
-	headers = append(headers, "host")
-	for k := range v4.Request.Header {
-		if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok {
-			continue // ignored header
-		}
-		headers = append(headers, strings.ToLower(k))
-	}
-	sort.Strings(headers)
-
-	v4.signedHeaders = strings.Join(headers, ";")
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-SignedHeaders", v4.signedHeaders)
-	}
-
-	headerValues := make([]string, len(headers))
-	for i, k := range headers {
-		if k == "host" {
-			headerValues[i] = "host:" + v4.Request.URL.Host
-		} else {
-			headerValues[i] = k + ":" +
-				strings.Join(v4.Request.Header[http.CanonicalHeaderKey(k)], ",")
-		}
-	}
-
-	v4.canonicalHeaders = strings.Join(headerValues, "\n")
-}
-
-func (v4 *signer) buildCanonicalString() {
-	v4.Request.URL.RawQuery = strings.Replace(v4.Query.Encode(), "+", "%20", -1)
-	uri := v4.Request.URL.Opaque
-	if uri != "" {
-		uri = "/" + strings.Join(strings.Split(uri, "/")[3:], "/")
-	} else {
-		uri = v4.Request.URL.Path
-	}
-	if uri == "" {
-		uri = "/"
-	}
-
-	if v4.ServiceName != "s3" {
-		uri = rest.EscapePath(uri, false)
-	}
-
-	v4.canonicalString = strings.Join([]string{
-		v4.Request.Method,
-		uri,
-		v4.Request.URL.RawQuery,
-		v4.canonicalHeaders + "\n",
-		v4.signedHeaders,
-		v4.bodyDigest(),
-	}, "\n")
-}
-
-func (v4 *signer) buildStringToSign() {
-	v4.stringToSign = strings.Join([]string{
-		authHeaderPrefix,
-		v4.formattedTime,
-		v4.credentialString,
-		hex.EncodeToString(makeSha256([]byte(v4.canonicalString))),
-	}, "\n")
-}
-
-func (v4 *signer) buildSignature() {
-	secret := v4.CredValues.SecretAccessKey
-	date := makeHmac([]byte("AWS4"+secret), []byte(v4.formattedShortTime))
-	region := makeHmac(date, []byte(v4.Region))
-	service := makeHmac(region, []byte(v4.ServiceName))
-	credentials := makeHmac(service, []byte("aws4_request"))
-	signature := makeHmac(credentials, []byte(v4.stringToSign))
-	v4.signature = hex.EncodeToString(signature)
-}
-
-func (v4 *signer) bodyDigest() string {
-	hash := v4.Request.Header.Get("X-Amz-Content-Sha256")
-	if hash == "" {
-		if v4.isPresign && v4.ServiceName == "s3" {
-			hash = "UNSIGNED-PAYLOAD"
-		} else if v4.Body == nil {
-			hash = hex.EncodeToString(makeSha256([]byte{}))
-		} else {
-			hash = hex.EncodeToString(makeSha256Reader(v4.Body))
-		}
-		v4.Request.Header.Add("X-Amz-Content-Sha256", hash)
-	}
-	return hash
-}
-
-// isRequestSigned returns if the request is currently signed or presigned
-func (v4 *signer) isRequestSigned() bool {
-	if v4.isPresign && v4.Query.Get("X-Amz-Signature") != "" {
-		return true
-	}
-	if v4.Request.Header.Get("Authorization") != "" {
-		return true
-	}
-
-	return false
-}
-
-// unsign removes signing flags for both signed and presigned requests.
-func (v4 *signer) removePresign() {
-	v4.Query.Del("X-Amz-Algorithm")
-	v4.Query.Del("X-Amz-Signature")
-	v4.Query.Del("X-Amz-Security-Token")
-	v4.Query.Del("X-Amz-Date")
-	v4.Query.Del("X-Amz-Expires")
-	v4.Query.Del("X-Amz-Credential")
-	v4.Query.Del("X-Amz-SignedHeaders")
-}
-
-func makeHmac(key []byte, data []byte) []byte {
-	hash := hmac.New(sha256.New, key)
-	hash.Write(data)
-	return hash.Sum(nil)
-}
-
-func makeSha256(data []byte) []byte {
-	hash := sha256.New()
-	hash.Write(data)
-	return hash.Sum(nil)
-}
-
-func makeSha256Reader(reader io.ReadSeeker) []byte {
-	hash := sha256.New()
-	start, _ := reader.Seek(0, 1)
-	defer reader.Seek(start, 0)
-
-	io.Copy(hash, reader)
-	return hash.Sum(nil)
-}

+ 0 - 245
Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go

@@ -1,245 +0,0 @@
-package v4
-
-import (
-	"net/http"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/stretchr/testify/assert"
-)
-
-func buildSigner(serviceName string, region string, signTime time.Time, expireTime time.Duration, body string) signer {
-	endpoint := "https://" + serviceName + "." + region + ".amazonaws.com"
-	reader := strings.NewReader(body)
-	req, _ := http.NewRequest("POST", endpoint, reader)
-	req.URL.Opaque = "//example.org/bucket/key-._~,!@#$%^&*()"
-	req.Header.Add("X-Amz-Target", "prefix.Operation")
-	req.Header.Add("Content-Type", "application/x-amz-json-1.0")
-	req.Header.Add("Content-Length", string(len(body)))
-	req.Header.Add("X-Amz-Meta-Other-Header", "some-value=!@#$%^&* (+)")
-
-	return signer{
-		Request:     req,
-		Time:        signTime,
-		ExpireTime:  expireTime,
-		Query:       req.URL.Query(),
-		Body:        reader,
-		ServiceName: serviceName,
-		Region:      region,
-		Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-	}
-}
-
-func removeWS(text string) string {
-	text = strings.Replace(text, " ", "", -1)
-	text = strings.Replace(text, "\n", "", -1)
-	text = strings.Replace(text, "\t", "", -1)
-	return text
-}
-
-func assertEqual(t *testing.T, expected, given string) {
-	if removeWS(expected) != removeWS(given) {
-		t.Errorf("\nExpected: %s\nGiven:    %s", expected, given)
-	}
-}
-
-func TestPresignRequest(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 300*time.Second, "{}")
-	signer.sign()
-
-	expectedDate := "19700101T000000Z"
-	expectedHeaders := "host;x-amz-meta-other-header;x-amz-target"
-	expectedSig := "5eeedebf6f995145ce56daa02902d10485246d3defb34f97b973c1f40ab82d36"
-	expectedCred := "AKID/19700101/us-east-1/dynamodb/aws4_request"
-
-	q := signer.Request.URL.Query()
-	assert.Equal(t, expectedSig, q.Get("X-Amz-Signature"))
-	assert.Equal(t, expectedCred, q.Get("X-Amz-Credential"))
-	assert.Equal(t, expectedHeaders, q.Get("X-Amz-SignedHeaders"))
-	assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
-}
-
-func TestSignRequest(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 0, "{}")
-	signer.sign()
-
-	expectedDate := "19700101T000000Z"
-	expectedSig := "AWS4-HMAC-SHA256 Credential=AKID/19700101/us-east-1/dynamodb/aws4_request, SignedHeaders=host;x-amz-date;x-amz-meta-other-header;x-amz-security-token;x-amz-target, Signature=69ada33fec48180dab153576e4dd80c4e04124f80dda3eccfed8a67c2b91ed5e"
-
-	q := signer.Request.Header
-	assert.Equal(t, expectedSig, q.Get("Authorization"))
-	assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
-}
-
-func TestSignEmptyBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "")
-	signer.Body = nil
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", hash)
-}
-
-func TestSignBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
-}
-
-func TestSignSeekedBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "   hello")
-	signer.Body.Read(make([]byte, 3)) // consume first 3 bytes so body is now "hello"
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
-
-	start, _ := signer.Body.Seek(0, 1)
-	assert.Equal(t, int64(3), start)
-}
-
-func TestPresignEmptyBodyS3(t *testing.T) {
-	signer := buildSigner("s3", "us-east-1", time.Now(), 5*time.Minute, "hello")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "UNSIGNED-PAYLOAD", hash)
-}
-
-func TestSignPrecomputedBodyChecksum(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
-	signer.Request.Header.Set("X-Amz-Content-Sha256", "PRECOMPUTED")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "PRECOMPUTED", hash)
-}
-
-func TestAnonymousCredentials(t *testing.T) {
-	r := aws.NewRequest(
-		aws.NewService(&aws.Config{Credentials: credentials.AnonymousCredentials}),
-		&aws.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	Sign(r)
-
-	urlQ := r.HTTPRequest.URL.Query()
-	assert.Empty(t, urlQ.Get("X-Amz-Signature"))
-	assert.Empty(t, urlQ.Get("X-Amz-Credential"))
-	assert.Empty(t, urlQ.Get("X-Amz-SignedHeaders"))
-	assert.Empty(t, urlQ.Get("X-Amz-Date"))
-
-	hQ := r.HTTPRequest.Header
-	assert.Empty(t, hQ.Get("Authorization"))
-	assert.Empty(t, hQ.Get("X-Amz-Date"))
-}
-
-func TestIgnoreResignRequestWithValidCreds(t *testing.T) {
-	r := aws.NewRequest(
-		aws.NewService(&aws.Config{
-			Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-			Region:      aws.String("us-west-2"),
-		}),
-		&aws.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-
-	Sign(r)
-	sig := r.HTTPRequest.Header.Get("Authorization")
-
-	Sign(r)
-	assert.Equal(t, sig, r.HTTPRequest.Header.Get("Authorization"))
-}
-
-func TestIgnorePreResignRequestWithValidCreds(t *testing.T) {
-	r := aws.NewRequest(
-		aws.NewService(&aws.Config{
-			Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-			Region:      aws.String("us-west-2"),
-		}),
-		&aws.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	r.ExpireTime = time.Minute * 10
-
-	Sign(r)
-	sig := r.HTTPRequest.Header.Get("X-Amz-Signature")
-
-	Sign(r)
-	assert.Equal(t, sig, r.HTTPRequest.Header.Get("X-Amz-Signature"))
-}
-
-func TestResignRequestExpiredCreds(t *testing.T) {
-	creds := credentials.NewStaticCredentials("AKID", "SECRET", "SESSION")
-	r := aws.NewRequest(
-		aws.NewService(&aws.Config{Credentials: creds}),
-		&aws.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	Sign(r)
-	querySig := r.HTTPRequest.Header.Get("Authorization")
-
-	creds.Expire()
-
-	Sign(r)
-	assert.NotEqual(t, querySig, r.HTTPRequest.Header.Get("Authorization"))
-}
-
-func TestPreResignRequestExpiredCreds(t *testing.T) {
-	provider := &credentials.StaticProvider{credentials.Value{"AKID", "SECRET", "SESSION"}}
-	creds := credentials.NewCredentials(provider)
-	r := aws.NewRequest(
-		aws.NewService(&aws.Config{Credentials: creds}),
-		&aws.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	r.ExpireTime = time.Minute * 10
-
-	Sign(r)
-	querySig := r.HTTPRequest.URL.Query().Get("X-Amz-Signature")
-
-	creds.Expire()
-	r.Time = time.Now().Add(time.Hour * 48)
-
-	Sign(r)
-	assert.NotEqual(t, querySig, r.HTTPRequest.URL.Query().Get("X-Amz-Signature"))
-}
-
-func BenchmarkPresignRequest(b *testing.B) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 300*time.Second, "{}")
-	for i := 0; i < b.N; i++ {
-		signer.sign()
-	}
-}
-
-func BenchmarkSignRequest(b *testing.B) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "{}")
-	for i := 0; i < b.N; i++ {
-		signer.sign()
-	}
-}

+ 0 - 65
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go

@@ -1,65 +0,0 @@
-// Package endpoints validates regional endpoints for services.
-package endpoints
-
-//go:generate go run ../model/cli/gen-endpoints/main.go endpoints.json endpoints_map.go
-//go:generate gofmt -s -w endpoints_map.go
-
-import (
-	"fmt"
-	"regexp"
-	"strings"
-)
-
-// NormalizeEndpoint takes and endpoint and service API information to return a
-// normalized endpoint and signing region.  If the endpoint is not an empty string
-// the service name and region will be used to look up the service's API endpoint.
-// If the endpoint is provided the scheme will be added if it is not present.
-func NormalizeEndpoint(endpoint, serviceName, region string, disableSSL bool) (normEndpoint, signingRegion string) {
-	if endpoint == "" {
-		return EndpointForRegion(serviceName, region, disableSSL)
-	}
-
-	return AddScheme(endpoint, disableSSL), ""
-}
-
-// EndpointForRegion returns an endpoint and its signing region for a service and region.
-// if the service and region pair are not found endpoint and signingRegion will be empty.
-func EndpointForRegion(svcName, region string, disableSSL bool) (endpoint, signingRegion string) {
-	derivedKeys := []string{
-		region + "/" + svcName,
-		region + "/*",
-		"*/" + svcName,
-		"*/*",
-	}
-
-	for _, key := range derivedKeys {
-		if val, ok := endpointsMap.Endpoints[key]; ok {
-			ep := val.Endpoint
-			ep = strings.Replace(ep, "{region}", region, -1)
-			ep = strings.Replace(ep, "{service}", svcName, -1)
-
-			endpoint = ep
-			signingRegion = val.SigningRegion
-			break
-		}
-	}
-
-	return AddScheme(endpoint, disableSSL), signingRegion
-}
-
-// Regular expression to determine if the endpoint string is prefixed with a scheme.
-var schemeRE = regexp.MustCompile("^([^:]+)://")
-
-// AddScheme adds the HTTP or HTTPS schemes to a endpoint URL if there is no
-// scheme. If disableSSL is true HTTP will be added instead of the default HTTPS.
-func AddScheme(endpoint string, disableSSL bool) string {
-	if endpoint != "" && !schemeRE.MatchString(endpoint) {
-		scheme := "https"
-		if disableSSL {
-			scheme = "http"
-		}
-		endpoint = fmt.Sprintf("%s://%s", scheme, endpoint)
-	}
-
-	return endpoint
-}

+ 0 - 89
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json

@@ -1,89 +0,0 @@
-{
-  "version": 2,
-  "endpoints": {
-    "*/*": {
-      "endpoint": "{service}.{region}.amazonaws.com"
-    },
-    "cn-north-1/*": {
-      "endpoint": "{service}.{region}.amazonaws.com.cn",
-      "signatureVersion": "v4"
-    },
-    "us-gov-west-1/iam": {
-      "endpoint": "iam.us-gov.amazonaws.com"
-    },
-    "us-gov-west-1/sts": {
-      "endpoint": "sts.us-gov-west-1.amazonaws.com"
-    },
-    "us-gov-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "*/cloudfront": {
-      "endpoint": "cloudfront.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/cloudsearchdomain": {
-      "endpoint": "",
-      "signingRegion": "us-east-1"
-    },
-    "*/data.iot": {
-      "endpoint": "",
-      "signingRegion": "us-east-1"
-    },
-    "*/ec2metadata": {
-      "endpoint": "http://169.254.169.254/latest",
-      "signingRegion": "us-east-1"
-    },
-    "*/iam": {
-      "endpoint": "iam.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/importexport": {
-      "endpoint": "importexport.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/route53": {
-      "endpoint": "route53.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/sts": {
-      "endpoint": "sts.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "*/waf": {
-      "endpoint": "waf.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "us-east-1/sdb": {
-      "endpoint": "sdb.amazonaws.com",
-      "signingRegion": "us-east-1"
-    },
-    "us-east-1/s3": {
-      "endpoint": "s3.amazonaws.com"
-    },
-    "us-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "us-west-2/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "eu-west-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-southeast-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-southeast-2/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "ap-northeast-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "sa-east-1/s3": {
-      "endpoint": "s3-{region}.amazonaws.com"
-    },
-    "eu-central-1/s3": {
-      "endpoint": "{service}.{region}.amazonaws.com",
-      "signatureVersion": "v4"
-    }
-  }
-}

+ 0 - 101
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go

@@ -1,101 +0,0 @@
-package endpoints
-
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-type endpointStruct struct {
-	Version   int
-	Endpoints map[string]endpointEntry
-}
-
-type endpointEntry struct {
-	Endpoint      string
-	SigningRegion string
-}
-
-var endpointsMap = endpointStruct{
-	Version: 2,
-	Endpoints: map[string]endpointEntry{
-		"*/*": {
-			Endpoint: "{service}.{region}.amazonaws.com",
-		},
-		"*/cloudfront": {
-			Endpoint:      "cloudfront.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/cloudsearchdomain": {
-			Endpoint:      "",
-			SigningRegion: "us-east-1",
-		},
-		"*/data.iot": {
-			Endpoint:      "",
-			SigningRegion: "us-east-1",
-		},
-		"*/ec2metadata": {
-			Endpoint:      "http://169.254.169.254/latest",
-			SigningRegion: "us-east-1",
-		},
-		"*/iam": {
-			Endpoint:      "iam.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/importexport": {
-			Endpoint:      "importexport.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/route53": {
-			Endpoint:      "route53.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/sts": {
-			Endpoint:      "sts.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"*/waf": {
-			Endpoint:      "waf.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"ap-northeast-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"ap-southeast-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"ap-southeast-2/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"cn-north-1/*": {
-			Endpoint: "{service}.{region}.amazonaws.com.cn",
-		},
-		"eu-central-1/s3": {
-			Endpoint: "{service}.{region}.amazonaws.com",
-		},
-		"eu-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"sa-east-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-east-1/s3": {
-			Endpoint: "s3.amazonaws.com",
-		},
-		"us-east-1/sdb": {
-			Endpoint:      "sdb.amazonaws.com",
-			SigningRegion: "us-east-1",
-		},
-		"us-gov-west-1/iam": {
-			Endpoint: "iam.us-gov.amazonaws.com",
-		},
-		"us-gov-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-gov-west-1/sts": {
-			Endpoint: "sts.us-gov-west-1.amazonaws.com",
-		},
-		"us-west-1/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-		"us-west-2/s3": {
-			Endpoint: "s3-{region}.amazonaws.com",
-		},
-	},
-}

+ 0 - 41
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/endpoints/endpoints_test.go

@@ -1,41 +0,0 @@
-package endpoints_test
-
-import (
-	"fmt"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/private/endpoints"
-)
-
-func TestGenericEndpoint(t *testing.T) {
-	name := "service"
-	region := "mock-region-1"
-
-	ep, sr := endpoints.EndpointForRegion(name, region, false)
-	assert.Equal(t, fmt.Sprintf("https://%s.%s.amazonaws.com", name, region), ep)
-	assert.Empty(t, sr)
-}
-
-func TestGlobalEndpoints(t *testing.T) {
-	region := "mock-region-1"
-	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts", "waf"}
-
-	for _, name := range svcs {
-		ep, sr := endpoints.EndpointForRegion(name, region, false)
-		assert.Equal(t, fmt.Sprintf("https://%s.amazonaws.com", name), ep)
-		assert.Equal(t, "us-east-1", sr)
-	}
-}
-
-func TestServicesInCN(t *testing.T) {
-	region := "cn-north-1"
-	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts", "s3", "waf"}
-
-	for _, name := range svcs {
-		ep, sr := endpoints.EndpointForRegion(name, region, false)
-		assert.Equal(t, fmt.Sprintf("https://%s.%s.amazonaws.com.cn", name, region), ep)
-		assert.Empty(t, sr)
-	}
-}

+ 0 - 32
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go

@@ -1,32 +0,0 @@
-// Package ec2query provides serialisation of AWS EC2 requests and responses.
-package ec2query
-
-//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/ec2.json build_test.go
-
-import (
-	"net/url"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/query/queryutil"
-)
-
-// Build builds a request for the EC2 protocol.
-func Build(r *request.Request) {
-	body := url.Values{
-		"Action":  {r.Operation.Name},
-		"Version": {r.ClientInfo.APIVersion},
-	}
-	if err := queryutil.Parse(body, r.Params, true); err != nil {
-		r.Error = awserr.New("SerializationError", "failed encoding EC2 Query request", err)
-	}
-
-	if r.ExpireTime == 0 {
-		r.HTTPRequest.Method = "POST"
-		r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
-		r.SetBufferBody([]byte(body.Encode()))
-	} else { // This is a pre-signed request
-		r.HTTPRequest.Method = "GET"
-		r.HTTPRequest.URL.RawQuery = body.Encode()
-	}
-}

+ 0 - 1051
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/build_test.go

@@ -1,1051 +0,0 @@
-package ec2query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/aws/session"
-	"github.com/aws/aws-sdk-go/awstesting"
-	"github.com/aws/aws-sdk-go/private/protocol/ec2query"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/private/signer/v4"
-	"github.com/aws/aws-sdk-go/private/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = awstesting.GenerateAssertions
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-var _ = aws.String
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService1ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService1ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService1ProtocolTest client from just a session.
-//     svc := inputservice1protocoltest.New(mySession)
-//
-//     // Create a InputService1ProtocolTest client with additional configuration
-//     svc := inputservice1protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService1ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService1ProtocolTest {
-	c := p.ClientConfig("inputservice1protocoltest", cfgs...)
-	return newInputService1ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService1ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService1ProtocolTest {
-	svc := &InputService1ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice1protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService1TestCaseOperation1 = "OperationName"
-
-// InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputService1TestCaseOperation1Input) (req *request.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputService1TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputService1TestCaseOperation1Input) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) {
-	req, out := c.InputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService1TestShapeInputService1TestCaseOperation1Input struct {
-	Bar *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataInputService1TestShapeInputService1TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputService1TestCaseOperation1Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService2ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService2ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService2ProtocolTest client from just a session.
-//     svc := inputservice2protocoltest.New(mySession)
-//
-//     // Create a InputService2ProtocolTest client with additional configuration
-//     svc := inputservice2protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService2ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService2ProtocolTest {
-	c := p.ClientConfig("inputservice2protocoltest", cfgs...)
-	return newInputService2ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService2ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService2ProtocolTest {
-	svc := &InputService2ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice2protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService2TestCaseOperation1 = "OperationName"
-
-// InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation.
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputService2TestCaseOperation1Input) (req *request.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService2TestShapeInputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService2TestShapeInputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputService2TestCaseOperation1Input) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) {
-	req, out := c.InputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Input struct {
-	Bar *string `locationName:"barLocationName" type:"string"`
-
-	Foo *string `type:"string"`
-
-	Yuck *string `locationName:"yuckLocationName" queryName:"yuckQueryName" type:"string"`
-
-	metadataInputService2TestShapeInputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Output struct {
-	metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService3ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService3ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService3ProtocolTest client from just a session.
-//     svc := inputservice3protocoltest.New(mySession)
-//
-//     // Create a InputService3ProtocolTest client with additional configuration
-//     svc := inputservice3protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService3ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService3ProtocolTest {
-	c := p.ClientConfig("inputservice3protocoltest", cfgs...)
-	return newInputService3ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService3ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService3ProtocolTest {
-	svc := &InputService3ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice3protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService3TestCaseOperation1 = "OperationName"
-
-// InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputService3TestCaseOperation1Input) (req *request.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputService3TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputService3TestCaseOperation1Input) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) {
-	req, out := c.InputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService3TestShapeInputService3TestCaseOperation1Input struct {
-	StructArg *InputService3TestShapeStructType `locationName:"Struct" type:"structure"`
-
-	metadataInputService3TestShapeInputService3TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputService3TestCaseOperation1Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeStructType struct {
-	ScalarArg *string `locationName:"Scalar" type:"string"`
-
-	metadataInputService3TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService4ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService4ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService4ProtocolTest client from just a session.
-//     svc := inputservice4protocoltest.New(mySession)
-//
-//     // Create a InputService4ProtocolTest client with additional configuration
-//     svc := inputservice4protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService4ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService4ProtocolTest {
-	c := p.ClientConfig("inputservice4protocoltest", cfgs...)
-	return newInputService4ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService4ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService4ProtocolTest {
-	svc := &InputService4ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice4protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService4TestCaseOperation1 = "OperationName"
-
-// InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputService4TestCaseOperation1Input) (req *request.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputService4TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputService4TestCaseOperation1Input) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) {
-	req, out := c.InputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService4TestShapeInputService4TestCaseOperation1Input struct {
-	ListArg []*string `type:"list"`
-
-	metadataInputService4TestShapeInputService4TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputService4TestCaseOperation1Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService5ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService5ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService5ProtocolTest client from just a session.
-//     svc := inputservice5protocoltest.New(mySession)
-//
-//     // Create a InputService5ProtocolTest client with additional configuration
-//     svc := inputservice5protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService5ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService5ProtocolTest {
-	c := p.ClientConfig("inputservice5protocoltest", cfgs...)
-	return newInputService5ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService5ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService5ProtocolTest {
-	svc := &InputService5ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice5protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService5TestCaseOperation1 = "OperationName"
-
-// InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation.
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputService5TestCaseOperation1Input) (req *request.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService5TestShapeInputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService5TestShapeInputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputService5TestCaseOperation1Input) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) {
-	req, out := c.InputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Input struct {
-	ListArg []*string `locationName:"ListMemberName" locationNameList:"item" type:"list"`
-
-	metadataInputService5TestShapeInputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Output struct {
-	metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService6ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService6ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService6ProtocolTest client from just a session.
-//     svc := inputservice6protocoltest.New(mySession)
-//
-//     // Create a InputService6ProtocolTest client with additional configuration
-//     svc := inputservice6protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService6ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService6ProtocolTest {
-	c := p.ClientConfig("inputservice6protocoltest", cfgs...)
-	return newInputService6ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService6ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService6ProtocolTest {
-	svc := &InputService6ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice6protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService6TestCaseOperation1 = "OperationName"
-
-// InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation.
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputService6TestCaseOperation1Input) (req *request.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService6TestShapeInputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService6TestShapeInputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputService6TestCaseOperation1Input) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) {
-	req, out := c.InputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Input struct {
-	ListArg []*string `locationName:"ListMemberName" queryName:"ListQueryName" locationNameList:"item" type:"list"`
-
-	metadataInputService6TestShapeInputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Output struct {
-	metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService7ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService7ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService7ProtocolTest client from just a session.
-//     svc := inputservice7protocoltest.New(mySession)
-//
-//     // Create a InputService7ProtocolTest client with additional configuration
-//     svc := inputservice7protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService7ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService7ProtocolTest {
-	c := p.ClientConfig("inputservice7protocoltest", cfgs...)
-	return newInputService7ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService7ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService7ProtocolTest {
-	svc := &InputService7ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice7protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService7TestCaseOperation1 = "OperationName"
-
-// InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation.
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputService7TestCaseOperation1Input) (req *request.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService7TestShapeInputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService7TestShapeInputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputService7TestCaseOperation1Input) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) {
-	req, out := c.InputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Input struct {
-	BlobArg []byte `type:"blob"`
-
-	metadataInputService7TestShapeInputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Output struct {
-	metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService8ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService8ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService8ProtocolTest client from just a session.
-//     svc := inputservice8protocoltest.New(mySession)
-//
-//     // Create a InputService8ProtocolTest client with additional configuration
-//     svc := inputservice8protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService8ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService8ProtocolTest {
-	c := p.ClientConfig("inputservice8protocoltest", cfgs...)
-	return newInputService8ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService8ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService8ProtocolTest {
-	svc := &InputService8ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice8protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService8TestCaseOperation1 = "OperationName"
-
-// InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation.
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputService8TestCaseOperation1Input) (req *request.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService8TestShapeInputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService8TestShapeInputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputService8TestCaseOperation1Input) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) {
-	req, out := c.InputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Input struct {
-	TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataInputService8TestShapeInputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Output struct {
-	metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService1TestShapeInputService1TestCaseOperation1Input{
-		Bar: aws.String("val2"),
-		Foo: aws.String("val1"),
-	}
-	req, _ := svc.InputService1TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService2ProtocolTestStructureWithLocationNameAndQueryNameAppliedToMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService2ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService2TestShapeInputService2TestCaseOperation1Input{
-		Bar:  aws.String("val2"),
-		Foo:  aws.String("val1"),
-		Yuck: aws.String("val3"),
-	}
-	req, _ := svc.InputService2TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&BarLocationName=val2&Foo=val1&Version=2014-01-01&yuckQueryName=val3`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestNestedStructureMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService3ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService3TestShapeInputService3TestCaseOperation1Input{
-		StructArg: &InputService3TestShapeStructType{
-			ScalarArg: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService3TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Struct.Scalar=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestListTypesCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService4ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService4TestShapeInputService4TestCaseOperation1Input{
-		ListArg: []*string{
-			aws.String("foo"),
-			aws.String("bar"),
-			aws.String("baz"),
-		},
-	}
-	req, _ := svc.InputService4TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService5ProtocolTestListWithLocationNameAppliedToMemberCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService5ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService5TestShapeInputService5TestCaseOperation1Input{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-	}
-	req, _ := svc.InputService5TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListMemberName.1=a&ListMemberName.2=b&ListMemberName.3=c&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService6ProtocolTestListWithLocationNameAndQueryNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService6ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService6TestShapeInputService6TestCaseOperation1Input{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-	}
-	req, _ := svc.InputService6TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListQueryName.1=a&ListQueryName.2=b&ListQueryName.3=c&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService7ProtocolTestBase64EncodedBlobsCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService7ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService7TestShapeInputService7TestCaseOperation1Input{
-		BlobArg: []byte("foo"),
-	}
-	req, _ := svc.InputService7TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService8ProtocolTestTimestampValuesCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService8ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService8TestShapeInputService8TestCaseOperation1Input{
-		TimeArg: aws.Time(time.Unix(1422172800, 0)),
-	}
-	req, _ := svc.InputService8TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	ec2query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}

+ 0 - 54
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go

@@ -1,54 +0,0 @@
-package ec2query
-
-//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/ec2.json unmarshal_test.go
-
-import (
-	"encoding/xml"
-	"io"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-)
-
-// Unmarshal unmarshals a response body for the EC2 protocol.
-func Unmarshal(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-	if r.DataFilled() {
-		decoder := xml.NewDecoder(r.HTTPResponse.Body)
-		err := xmlutil.UnmarshalXML(r.Data, decoder, "")
-		if err != nil {
-			r.Error = awserr.New("SerializationError", "failed decoding EC2 Query response", err)
-			return
-		}
-	}
-}
-
-// UnmarshalMeta unmarshals response headers for the EC2 protocol.
-func UnmarshalMeta(r *request.Request) {
-	// TODO implement unmarshaling of request IDs
-}
-
-type xmlErrorResponse struct {
-	XMLName   xml.Name `xml:"Response"`
-	Code      string   `xml:"Errors>Error>Code"`
-	Message   string   `xml:"Errors>Error>Message"`
-	RequestID string   `xml:"RequestId"`
-}
-
-// UnmarshalError unmarshals a response error for the EC2 protocol.
-func UnmarshalError(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-
-	resp := &xmlErrorResponse{}
-	err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp)
-	if err != nil && err != io.EOF {
-		r.Error = awserr.New("SerializationError", "failed decoding EC2 Query error response", err)
-	} else {
-		r.Error = awserr.NewRequestFailure(
-			awserr.New(resp.Code, resp.Message, nil),
-			r.HTTPResponse.StatusCode,
-			resp.RequestID,
-		)
-	}
-}

+ 0 - 1132
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal_test.go

@@ -1,1132 +0,0 @@
-package ec2query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/aws/session"
-	"github.com/aws/aws-sdk-go/awstesting"
-	"github.com/aws/aws-sdk-go/private/protocol/ec2query"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/private/signer/v4"
-	"github.com/aws/aws-sdk-go/private/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = awstesting.GenerateAssertions
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-var _ = aws.String
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService1ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService1ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService1ProtocolTest client from just a session.
-//     svc := outputservice1protocoltest.New(mySession)
-//
-//     // Create a OutputService1ProtocolTest client with additional configuration
-//     svc := outputservice1protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService1ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService1ProtocolTest {
-	c := p.ClientConfig("outputservice1protocoltest", cfgs...)
-	return newOutputService1ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService1ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService1ProtocolTest {
-	svc := &OutputService1ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice1protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService1TestCaseOperation1 = "OperationName"
-
-// OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *request.Request, output *OutputService1TestShapeOutputService1TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService1TestShapeOutputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputService1TestCaseOperation1Output, error) {
-	req, out := c.OutputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Output struct {
-	Char *string `type:"character"`
-
-	Double *float64 `type:"double"`
-
-	FalseBool *bool `type:"boolean"`
-
-	Float *float64 `type:"float"`
-
-	Long *int64 `type:"long"`
-
-	Num *int64 `locationName:"FooNum" type:"integer"`
-
-	Str *string `type:"string"`
-
-	TrueBool *bool `type:"boolean"`
-
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService2ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService2ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService2ProtocolTest client from just a session.
-//     svc := outputservice2protocoltest.New(mySession)
-//
-//     // Create a OutputService2ProtocolTest client with additional configuration
-//     svc := outputservice2protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService2ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService2ProtocolTest {
-	c := p.ClientConfig("outputservice2protocoltest", cfgs...)
-	return newOutputService2ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService2ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService2ProtocolTest {
-	svc := &OutputService2ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice2protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService2TestCaseOperation1 = "OperationName"
-
-// OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *request.Request, output *OutputService2TestShapeOutputService2TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService2TestShapeOutputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputService2TestCaseOperation1Output, error) {
-	req, out := c.OutputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Output struct {
-	Blob []byte `type:"blob"`
-
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService3ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService3ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService3ProtocolTest client from just a session.
-//     svc := outputservice3protocoltest.New(mySession)
-//
-//     // Create a OutputService3ProtocolTest client with additional configuration
-//     svc := outputservice3protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService3ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService3ProtocolTest {
-	c := p.ClientConfig("outputservice3protocoltest", cfgs...)
-	return newOutputService3ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService3ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService3ProtocolTest {
-	svc := &OutputService3ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice3protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService3TestCaseOperation1 = "OperationName"
-
-// OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *request.Request, output *OutputService3TestShapeOutputService3TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService3TestShapeOutputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputService3TestCaseOperation1Output, error) {
-	req, out := c.OutputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Output struct {
-	ListMember []*string `type:"list"`
-
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService4ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService4ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService4ProtocolTest client from just a session.
-//     svc := outputservice4protocoltest.New(mySession)
-//
-//     // Create a OutputService4ProtocolTest client with additional configuration
-//     svc := outputservice4protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService4ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService4ProtocolTest {
-	c := p.ClientConfig("outputservice4protocoltest", cfgs...)
-	return newOutputService4ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService4ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService4ProtocolTest {
-	svc := &OutputService4ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice4protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService4TestCaseOperation1 = "OperationName"
-
-// OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *request.Request, output *OutputService4TestShapeOutputService4TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService4TestShapeOutputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputService4TestCaseOperation1Output, error) {
-	req, out := c.OutputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Output struct {
-	ListMember []*string `locationNameList:"item" type:"list"`
-
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService5ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService5ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService5ProtocolTest client from just a session.
-//     svc := outputservice5protocoltest.New(mySession)
-//
-//     // Create a OutputService5ProtocolTest client with additional configuration
-//     svc := outputservice5protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService5ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService5ProtocolTest {
-	c := p.ClientConfig("outputservice5protocoltest", cfgs...)
-	return newOutputService5ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService5ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService5ProtocolTest {
-	svc := &OutputService5ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice5protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService5TestCaseOperation1 = "OperationName"
-
-// OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *request.Request, output *OutputService5TestShapeOutputService5TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService5TestShapeOutputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputService5TestCaseOperation1Output, error) {
-	req, out := c.OutputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Output struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService6ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService6ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService6ProtocolTest client from just a session.
-//     svc := outputservice6protocoltest.New(mySession)
-//
-//     // Create a OutputService6ProtocolTest client with additional configuration
-//     svc := outputservice6protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService6ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService6ProtocolTest {
-	c := p.ClientConfig("outputservice6protocoltest", cfgs...)
-	return newOutputService6ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService6ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService6ProtocolTest {
-	svc := &OutputService6ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice6protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService6TestCaseOperation1 = "OperationName"
-
-// OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *request.Request, output *OutputService6TestShapeOutputService6TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService6TestShapeOutputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputService6TestCaseOperation1Output, error) {
-	req, out := c.OutputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Output struct {
-	Map map[string]*OutputService6TestShapeStructureType `type:"map"`
-
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeStructureType struct {
-	Foo *string `locationName:"foo" type:"string"`
-
-	metadataOutputService6TestShapeStructureType `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeStructureType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService7ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService7ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService7ProtocolTest client from just a session.
-//     svc := outputservice7protocoltest.New(mySession)
-//
-//     // Create a OutputService7ProtocolTest client with additional configuration
-//     svc := outputservice7protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService7ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService7ProtocolTest {
-	c := p.ClientConfig("outputservice7protocoltest", cfgs...)
-	return newOutputService7ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService7ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService7ProtocolTest {
-	svc := &OutputService7ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice7protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService7TestCaseOperation1 = "OperationName"
-
-// OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *request.Request, output *OutputService7TestShapeOutputService7TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService7TestShapeOutputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputService7TestCaseOperation1Output, error) {
-	req, out := c.OutputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Output struct {
-	Map map[string]*string `type:"map" flattened:"true"`
-
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService8ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService8ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService8ProtocolTest client from just a session.
-//     svc := outputservice8protocoltest.New(mySession)
-//
-//     // Create a OutputService8ProtocolTest client with additional configuration
-//     svc := outputservice8protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService8ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService8ProtocolTest {
-	c := p.ClientConfig("outputservice8protocoltest", cfgs...)
-	return newOutputService8ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService8ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService8ProtocolTest {
-	svc := &OutputService8ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice8protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService8TestCaseOperation1 = "OperationName"
-
-// OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation.
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *request.Request, output *OutputService8TestShapeOutputService8TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService8TestShapeOutputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputService8TestCaseOperation1Output, error) {
-	req, out := c.OutputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Output struct {
-	Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"`
-
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService9ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService9ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService9ProtocolTest client from just a session.
-//     svc := outputservice9protocoltest.New(mySession)
-//
-//     // Create a OutputService9ProtocolTest client with additional configuration
-//     svc := outputservice9protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService9ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService9ProtocolTest {
-	c := p.ClientConfig("outputservice9protocoltest", cfgs...)
-	return newOutputService9ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService9ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService9ProtocolTest {
-	svc := &OutputService9ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice9protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(ec2query.Build)
-	svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService9ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService9ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService9TestCaseOperation1 = "OperationName"
-
-// OutputService9TestCaseOperation1Request generates a request for the OutputService9TestCaseOperation1 operation.
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1Request(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (req *request.Request, output *OutputService9TestShapeOutputService9TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService9TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService9TestShapeOutputService9TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService9TestShapeOutputService9TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (*OutputService9TestShapeOutputService9TestCaseOperation1Output, error) {
-	req, out := c.OutputService9TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	metadataOutputService9TestShapeOutputService9TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9TestShapeOutputService9TestCaseOperation1Output struct {
-	Foo *string `type:"string"`
-
-	metadataOutputService9TestShapeOutputService9TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputService9TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><RequestId>request-id</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService1TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.Char)
-	assert.Equal(t, 1.3, *out.Double)
-	assert.Equal(t, false, *out.FalseBool)
-	assert.Equal(t, 1.2, *out.Float)
-	assert.Equal(t, int64(200), *out.Long)
-	assert.Equal(t, int64(123), *out.Num)
-	assert.Equal(t, "myname", *out.Str)
-	assert.Equal(t, true, *out.TrueBool)
-
-}
-
-func TestOutputService2ProtocolTestBlobCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService2ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Blob>dmFsdWU=</Blob><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService2TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "value", string(out.Blob))
-
-}
-
-func TestOutputService3ProtocolTestListsCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService3ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><member>abc</member><member>123</member></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService3TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService4ProtocolTestListWithCustomMemberNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService4ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><item>abc</item><item>123</item></ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService4TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService5ProtocolTestFlattenedListCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService5ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember>abc</ListMember><ListMember>123</ListMember><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService5TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService6ProtocolTestNormalMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService6ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService6TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"].Foo)
-	assert.Equal(t, "bar", *out.Map["qux"].Foo)
-
-}
-
-func TestOutputService7ProtocolTestFlattenedMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService7ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService7TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService8ProtocolTestNamedMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService8ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService8TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService9ProtocolTestEmptyStringCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService9ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Foo/><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService9TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	ec2query.UnmarshalMeta(req)
-	ec2query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "", *out.Foo)
-
-}

+ 0 - 33
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/build.go

@@ -1,33 +0,0 @@
-// Package query provides serialisation of AWS query requests, and responses.
-package query
-
-//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/query.json build_test.go
-
-import (
-	"net/url"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/query/queryutil"
-)
-
-// Build builds a request for an AWS Query service.
-func Build(r *request.Request) {
-	body := url.Values{
-		"Action":  {r.Operation.Name},
-		"Version": {r.ClientInfo.APIVersion},
-	}
-	if err := queryutil.Parse(body, r.Params, false); err != nil {
-		r.Error = awserr.New("SerializationError", "failed encoding Query request", err)
-		return
-	}
-
-	if r.ExpireTime == 0 {
-		r.HTTPRequest.Method = "POST"
-		r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
-		r.SetBufferBody([]byte(body.Encode()))
-	} else { // This is a pre-signed request
-		r.HTTPRequest.Method = "GET"
-		r.HTTPRequest.URL.RawQuery = body.Encode()
-	}
-}

+ 0 - 2139
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/build_test.go

@@ -1,2139 +0,0 @@
-package query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/aws/session"
-	"github.com/aws/aws-sdk-go/awstesting"
-	"github.com/aws/aws-sdk-go/private/protocol/query"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/private/signer/v4"
-	"github.com/aws/aws-sdk-go/private/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = awstesting.GenerateAssertions
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-var _ = aws.String
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService1ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService1ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService1ProtocolTest client from just a session.
-//     svc := inputservice1protocoltest.New(mySession)
-//
-//     // Create a InputService1ProtocolTest client with additional configuration
-//     svc := inputservice1protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService1ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService1ProtocolTest {
-	c := p.ClientConfig("inputservice1protocoltest", cfgs...)
-	return newInputService1ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService1ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService1ProtocolTest {
-	svc := &InputService1ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice1protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService1TestCaseOperation1 = "OperationName"
-
-// InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputShape) (req *request.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) {
-	req, out := c.InputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService1TestCaseOperation2 = "OperationName"
-
-// InputService1TestCaseOperation2Request generates a request for the InputService1TestCaseOperation2 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation2Request(input *InputService1TestShapeInputShape) (req *request.Request, output *InputService1TestShapeInputService1TestCaseOperation2Output) {
-	op := &request.Operation{
-		Name: opInputService1TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation2(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation2Output, error) {
-	req, out := c.InputService1TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService1TestCaseOperation3 = "OperationName"
-
-// InputService1TestCaseOperation3Request generates a request for the InputService1TestCaseOperation3 operation.
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation3Request(input *InputService1TestShapeInputShape) (req *request.Request, output *InputService1TestShapeInputService1TestCaseOperation3Output) {
-	op := &request.Operation{
-		Name: opInputService1TestCaseOperation3,
-	}
-
-	if input == nil {
-		input = &InputService1TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService1TestShapeInputService1TestCaseOperation3Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService1ProtocolTest) InputService1TestCaseOperation3(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation3Output, error) {
-	req, out := c.InputService1TestCaseOperation3Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService1TestShapeInputService1TestCaseOperation1Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputService1TestCaseOperation2Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputService1TestCaseOperation3Output struct {
-	metadataInputService1TestShapeInputService1TestCaseOperation3Output `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputService1TestCaseOperation3Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService1TestShapeInputShape struct {
-	Bar *string `type:"string"`
-
-	Baz *bool `type:"boolean"`
-
-	Foo *string `type:"string"`
-
-	metadataInputService1TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService1TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService2ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService2ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService2ProtocolTest client from just a session.
-//     svc := inputservice2protocoltest.New(mySession)
-//
-//     // Create a InputService2ProtocolTest client with additional configuration
-//     svc := inputservice2protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService2ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService2ProtocolTest {
-	c := p.ClientConfig("inputservice2protocoltest", cfgs...)
-	return newInputService2ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService2ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService2ProtocolTest {
-	svc := &InputService2ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice2protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService2TestCaseOperation1 = "OperationName"
-
-// InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation.
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputService2TestCaseOperation1Input) (req *request.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService2TestShapeInputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService2TestShapeInputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputService2TestCaseOperation1Input) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) {
-	req, out := c.InputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Input struct {
-	StructArg *InputService2TestShapeStructType `type:"structure"`
-
-	metadataInputService2TestShapeInputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeInputService2TestCaseOperation1Output struct {
-	metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService2TestShapeStructType struct {
-	ScalarArg *string `type:"string"`
-
-	metadataInputService2TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService2TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService3ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService3ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService3ProtocolTest client from just a session.
-//     svc := inputservice3protocoltest.New(mySession)
-//
-//     // Create a InputService3ProtocolTest client with additional configuration
-//     svc := inputservice3protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService3ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService3ProtocolTest {
-	c := p.ClientConfig("inputservice3protocoltest", cfgs...)
-	return newInputService3ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService3ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService3ProtocolTest {
-	svc := &InputService3ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice3protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService3TestCaseOperation1 = "OperationName"
-
-// InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputShape) (req *request.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) {
-	req, out := c.InputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService3TestCaseOperation2 = "OperationName"
-
-// InputService3TestCaseOperation2Request generates a request for the InputService3TestCaseOperation2 operation.
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation2Request(input *InputService3TestShapeInputShape) (req *request.Request, output *InputService3TestShapeInputService3TestCaseOperation2Output) {
-	op := &request.Operation{
-		Name: opInputService3TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService3TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService3TestShapeInputService3TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService3ProtocolTest) InputService3TestCaseOperation2(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation2Output, error) {
-	req, out := c.InputService3TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService3TestShapeInputService3TestCaseOperation1Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputService3TestCaseOperation2Output struct {
-	metadataInputService3TestShapeInputService3TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputService3TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService3TestShapeInputShape struct {
-	ListArg []*string `type:"list"`
-
-	metadataInputService3TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService3TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService4ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService4ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService4ProtocolTest client from just a session.
-//     svc := inputservice4protocoltest.New(mySession)
-//
-//     // Create a InputService4ProtocolTest client with additional configuration
-//     svc := inputservice4protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService4ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService4ProtocolTest {
-	c := p.ClientConfig("inputservice4protocoltest", cfgs...)
-	return newInputService4ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService4ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService4ProtocolTest {
-	svc := &InputService4ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice4protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService4TestCaseOperation1 = "OperationName"
-
-// InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputShape) (req *request.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) {
-	req, out := c.InputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService4TestCaseOperation2 = "OperationName"
-
-// InputService4TestCaseOperation2Request generates a request for the InputService4TestCaseOperation2 operation.
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation2Request(input *InputService4TestShapeInputShape) (req *request.Request, output *InputService4TestShapeInputService4TestCaseOperation2Output) {
-	op := &request.Operation{
-		Name: opInputService4TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService4TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService4TestShapeInputService4TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService4ProtocolTest) InputService4TestCaseOperation2(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation2Output, error) {
-	req, out := c.InputService4TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService4TestShapeInputService4TestCaseOperation1Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputService4TestCaseOperation2Output struct {
-	metadataInputService4TestShapeInputService4TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputService4TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService4TestShapeInputShape struct {
-	ListArg []*string `type:"list" flattened:"true"`
-
-	NamedListArg []*string `locationNameList:"Foo" type:"list" flattened:"true"`
-
-	ScalarArg *string `type:"string"`
-
-	metadataInputService4TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService4TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService5ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService5ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService5ProtocolTest client from just a session.
-//     svc := inputservice5protocoltest.New(mySession)
-//
-//     // Create a InputService5ProtocolTest client with additional configuration
-//     svc := inputservice5protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService5ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService5ProtocolTest {
-	c := p.ClientConfig("inputservice5protocoltest", cfgs...)
-	return newInputService5ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService5ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService5ProtocolTest {
-	svc := &InputService5ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice5protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService5TestCaseOperation1 = "OperationName"
-
-// InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation.
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputService5TestCaseOperation1Input) (req *request.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService5TestShapeInputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService5TestShapeInputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputService5TestCaseOperation1Input) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) {
-	req, out := c.InputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Input struct {
-	MapArg map[string]*string `type:"map" flattened:"true"`
-
-	metadataInputService5TestShapeInputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService5TestShapeInputService5TestCaseOperation1Output struct {
-	metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService6ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService6ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService6ProtocolTest client from just a session.
-//     svc := inputservice6protocoltest.New(mySession)
-//
-//     // Create a InputService6ProtocolTest client with additional configuration
-//     svc := inputservice6protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService6ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService6ProtocolTest {
-	c := p.ClientConfig("inputservice6protocoltest", cfgs...)
-	return newInputService6ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService6ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService6ProtocolTest {
-	svc := &InputService6ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice6protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService6TestCaseOperation1 = "OperationName"
-
-// InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation.
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputService6TestCaseOperation1Input) (req *request.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService6TestShapeInputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService6TestShapeInputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputService6TestCaseOperation1Input) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) {
-	req, out := c.InputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Input struct {
-	ListArg []*string `locationNameList:"item" type:"list"`
-
-	metadataInputService6TestShapeInputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService6TestShapeInputService6TestCaseOperation1Output struct {
-	metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService7ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService7ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService7ProtocolTest client from just a session.
-//     svc := inputservice7protocoltest.New(mySession)
-//
-//     // Create a InputService7ProtocolTest client with additional configuration
-//     svc := inputservice7protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService7ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService7ProtocolTest {
-	c := p.ClientConfig("inputservice7protocoltest", cfgs...)
-	return newInputService7ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService7ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService7ProtocolTest {
-	svc := &InputService7ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice7protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService7TestCaseOperation1 = "OperationName"
-
-// InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation.
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputService7TestCaseOperation1Input) (req *request.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService7TestShapeInputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService7TestShapeInputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputService7TestCaseOperation1Input) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) {
-	req, out := c.InputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Input struct {
-	ListArg []*string `locationNameList:"ListArgLocation" type:"list" flattened:"true"`
-
-	ScalarArg *string `type:"string"`
-
-	metadataInputService7TestShapeInputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService7TestShapeInputService7TestCaseOperation1Output struct {
-	metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService8ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService8ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService8ProtocolTest client from just a session.
-//     svc := inputservice8protocoltest.New(mySession)
-//
-//     // Create a InputService8ProtocolTest client with additional configuration
-//     svc := inputservice8protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService8ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService8ProtocolTest {
-	c := p.ClientConfig("inputservice8protocoltest", cfgs...)
-	return newInputService8ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService8ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService8ProtocolTest {
-	svc := &InputService8ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice8protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService8TestCaseOperation1 = "OperationName"
-
-// InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation.
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputService8TestCaseOperation1Input) (req *request.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService8TestShapeInputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService8TestShapeInputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputService8TestCaseOperation1Input) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) {
-	req, out := c.InputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Input struct {
-	MapArg map[string]*string `type:"map"`
-
-	metadataInputService8TestShapeInputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService8TestShapeInputService8TestCaseOperation1Output struct {
-	metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService9ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService9ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService9ProtocolTest client from just a session.
-//     svc := inputservice9protocoltest.New(mySession)
-//
-//     // Create a InputService9ProtocolTest client with additional configuration
-//     svc := inputservice9protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService9ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService9ProtocolTest {
-	c := p.ClientConfig("inputservice9protocoltest", cfgs...)
-	return newInputService9ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService9ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService9ProtocolTest {
-	svc := &InputService9ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice9protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService9ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService9ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService9TestCaseOperation1 = "OperationName"
-
-// InputService9TestCaseOperation1Request generates a request for the InputService9TestCaseOperation1 operation.
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation1Request(input *InputService9TestShapeInputService9TestCaseOperation1Input) (req *request.Request, output *InputService9TestShapeInputService9TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService9TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService9TestShapeInputService9TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService9TestShapeInputService9TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService9ProtocolTest) InputService9TestCaseOperation1(input *InputService9TestShapeInputService9TestCaseOperation1Input) (*InputService9TestShapeInputService9TestCaseOperation1Output, error) {
-	req, out := c.InputService9TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService9TestShapeInputService9TestCaseOperation1Input struct {
-	MapArg map[string]*string `locationNameKey:"TheKey" locationNameValue:"TheValue" type:"map"`
-
-	metadataInputService9TestShapeInputService9TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService9TestShapeInputService9TestCaseOperation1Output struct {
-	metadataInputService9TestShapeInputService9TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService9TestShapeInputService9TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService10ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService10ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService10ProtocolTest client from just a session.
-//     svc := inputservice10protocoltest.New(mySession)
-//
-//     // Create a InputService10ProtocolTest client with additional configuration
-//     svc := inputservice10protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService10ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService10ProtocolTest {
-	c := p.ClientConfig("inputservice10protocoltest", cfgs...)
-	return newInputService10ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService10ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService10ProtocolTest {
-	svc := &InputService10ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice10protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService10ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService10ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService10TestCaseOperation1 = "OperationName"
-
-// InputService10TestCaseOperation1Request generates a request for the InputService10TestCaseOperation1 operation.
-func (c *InputService10ProtocolTest) InputService10TestCaseOperation1Request(input *InputService10TestShapeInputService10TestCaseOperation1Input) (req *request.Request, output *InputService10TestShapeInputService10TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService10TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService10TestShapeInputService10TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService10TestShapeInputService10TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService10ProtocolTest) InputService10TestCaseOperation1(input *InputService10TestShapeInputService10TestCaseOperation1Input) (*InputService10TestShapeInputService10TestCaseOperation1Output, error) {
-	req, out := c.InputService10TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService10TestShapeInputService10TestCaseOperation1Input struct {
-	BlobArg []byte `type:"blob"`
-
-	metadataInputService10TestShapeInputService10TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService10TestShapeInputService10TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService10TestShapeInputService10TestCaseOperation1Output struct {
-	metadataInputService10TestShapeInputService10TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService10TestShapeInputService10TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService11ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService11ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService11ProtocolTest client from just a session.
-//     svc := inputservice11protocoltest.New(mySession)
-//
-//     // Create a InputService11ProtocolTest client with additional configuration
-//     svc := inputservice11protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService11ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService11ProtocolTest {
-	c := p.ClientConfig("inputservice11protocoltest", cfgs...)
-	return newInputService11ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService11ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService11ProtocolTest {
-	svc := &InputService11ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice11protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService11ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService11ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService11TestCaseOperation1 = "OperationName"
-
-// InputService11TestCaseOperation1Request generates a request for the InputService11TestCaseOperation1 operation.
-func (c *InputService11ProtocolTest) InputService11TestCaseOperation1Request(input *InputService11TestShapeInputService11TestCaseOperation1Input) (req *request.Request, output *InputService11TestShapeInputService11TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService11TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService11TestShapeInputService11TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService11TestShapeInputService11TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService11ProtocolTest) InputService11TestCaseOperation1(input *InputService11TestShapeInputService11TestCaseOperation1Input) (*InputService11TestShapeInputService11TestCaseOperation1Output, error) {
-	req, out := c.InputService11TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService11TestShapeInputService11TestCaseOperation1Input struct {
-	TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataInputService11TestShapeInputService11TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataInputService11TestShapeInputService11TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService11TestShapeInputService11TestCaseOperation1Output struct {
-	metadataInputService11TestShapeInputService11TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService11TestShapeInputService11TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type InputService12ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the InputService12ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a InputService12ProtocolTest client from just a session.
-//     svc := inputservice12protocoltest.New(mySession)
-//
-//     // Create a InputService12ProtocolTest client with additional configuration
-//     svc := inputservice12protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewInputService12ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *InputService12ProtocolTest {
-	c := p.ClientConfig("inputservice12protocoltest", cfgs...)
-	return newInputService12ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newInputService12ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *InputService12ProtocolTest {
-	svc := &InputService12ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "inputservice12protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2014-01-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a InputService12ProtocolTest operation and runs any
-// custom request initialization.
-func (c *InputService12ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opInputService12TestCaseOperation1 = "OperationName"
-
-// InputService12TestCaseOperation1Request generates a request for the InputService12TestCaseOperation1 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation1Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation1(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation1Output, error) {
-	req, out := c.InputService12TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService12TestCaseOperation2 = "OperationName"
-
-// InputService12TestCaseOperation2Request generates a request for the InputService12TestCaseOperation2 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation2Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation2Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation2,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation2Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation2(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation2Output, error) {
-	req, out := c.InputService12TestCaseOperation2Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService12TestCaseOperation3 = "OperationName"
-
-// InputService12TestCaseOperation3Request generates a request for the InputService12TestCaseOperation3 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation3Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation3Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation3,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation3Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation3(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation3Output, error) {
-	req, out := c.InputService12TestCaseOperation3Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService12TestCaseOperation4 = "OperationName"
-
-// InputService12TestCaseOperation4Request generates a request for the InputService12TestCaseOperation4 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation4Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation4Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation4,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation4Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation4(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation4Output, error) {
-	req, out := c.InputService12TestCaseOperation4Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService12TestCaseOperation5 = "OperationName"
-
-// InputService12TestCaseOperation5Request generates a request for the InputService12TestCaseOperation5 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation5Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation5Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation5,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation5Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation5(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation5Output, error) {
-	req, out := c.InputService12TestCaseOperation5Request(input)
-	err := req.Send()
-	return out, err
-}
-
-const opInputService12TestCaseOperation6 = "OperationName"
-
-// InputService12TestCaseOperation6Request generates a request for the InputService12TestCaseOperation6 operation.
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation6Request(input *InputService12TestShapeInputShape) (req *request.Request, output *InputService12TestShapeInputService12TestCaseOperation6Output) {
-	op := &request.Operation{
-		Name: opInputService12TestCaseOperation6,
-	}
-
-	if input == nil {
-		input = &InputService12TestShapeInputShape{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &InputService12TestShapeInputService12TestCaseOperation6Output{}
-	req.Data = output
-	return
-}
-
-func (c *InputService12ProtocolTest) InputService12TestCaseOperation6(input *InputService12TestShapeInputShape) (*InputService12TestShapeInputService12TestCaseOperation6Output, error) {
-	req, out := c.InputService12TestCaseOperation6Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type InputService12TestShapeInputService12TestCaseOperation1Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputService12TestCaseOperation2Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation2Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation2Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputService12TestCaseOperation3Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation3Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation3Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputService12TestCaseOperation4Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation4Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation4Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputService12TestCaseOperation5Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation5Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation5Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputService12TestCaseOperation6Output struct {
-	metadataInputService12TestShapeInputService12TestCaseOperation6Output `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputService12TestCaseOperation6Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeInputShape struct {
-	RecursiveStruct *InputService12TestShapeRecursiveStructType `type:"structure"`
-
-	metadataInputService12TestShapeInputShape `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeInputShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type InputService12TestShapeRecursiveStructType struct {
-	NoRecurse *string `type:"string"`
-
-	RecursiveList []*InputService12TestShapeRecursiveStructType `type:"list"`
-
-	RecursiveMap map[string]*InputService12TestShapeRecursiveStructType `type:"map"`
-
-	RecursiveStruct *InputService12TestShapeRecursiveStructType `type:"structure"`
-
-	metadataInputService12TestShapeRecursiveStructType `json:"-" xml:"-"`
-}
-
-type metadataInputService12TestShapeRecursiveStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService1TestShapeInputShape{
-		Bar: aws.String("val2"),
-		Foo: aws.String("val1"),
-	}
-	req, _ := svc.InputService1TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService1ProtocolTestScalarMembersCase2(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService1TestShapeInputShape{
-		Baz: aws.Bool(true),
-	}
-	req, _ := svc.InputService1TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Baz=true&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService1ProtocolTestScalarMembersCase3(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService1TestShapeInputShape{
-		Baz: aws.Bool(false),
-	}
-	req, _ := svc.InputService1TestCaseOperation3Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Baz=false&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService2ProtocolTestNestedStructureMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService2ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService2TestShapeInputService2TestCaseOperation1Input{
-		StructArg: &InputService2TestShapeStructType{
-			ScalarArg: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService2TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&StructArg.ScalarArg=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestListTypesCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService3ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService3TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("foo"),
-			aws.String("bar"),
-			aws.String("baz"),
-		},
-	}
-	req, _ := svc.InputService3TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArg.member.1=foo&ListArg.member.2=bar&ListArg.member.3=baz&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService3ProtocolTestListTypesCase2(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService3ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService3TestShapeInputShape{
-		ListArg: []*string{},
-	}
-	req, _ := svc.InputService3TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArg=&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestFlattenedListCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService4ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService4TestShapeInputShape{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-		ScalarArg: aws.String("foo"),
-	}
-	req, _ := svc.InputService4TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArg.1=a&ListArg.2=b&ListArg.3=c&ScalarArg=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService4ProtocolTestFlattenedListCase2(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService4ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService4TestShapeInputShape{
-		NamedListArg: []*string{
-			aws.String("a"),
-		},
-	}
-	req, _ := svc.InputService4TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&Foo.1=a&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService5ProtocolTestSerializeFlattenedMapTypeCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService5ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService5TestShapeInputService5TestCaseOperation1Input{
-		MapArg: map[string]*string{
-			"key1": aws.String("val1"),
-			"key2": aws.String("val2"),
-		},
-	}
-	req, _ := svc.InputService5TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&MapArg.1.key=key1&MapArg.1.value=val1&MapArg.2.key=key2&MapArg.2.value=val2&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService6ProtocolTestNonFlattenedListWithLocationNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService6ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService6TestShapeInputService6TestCaseOperation1Input{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-	}
-	req, _ := svc.InputService6TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArg.item.1=a&ListArg.item.2=b&ListArg.item.3=c&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService7ProtocolTestFlattenedListWithLocationNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService7ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService7TestShapeInputService7TestCaseOperation1Input{
-		ListArg: []*string{
-			aws.String("a"),
-			aws.String("b"),
-			aws.String("c"),
-		},
-		ScalarArg: aws.String("foo"),
-	}
-	req, _ := svc.InputService7TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&ListArgLocation.1=a&ListArgLocation.2=b&ListArgLocation.3=c&ScalarArg=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService8ProtocolTestSerializeMapTypeCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService8ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService8TestShapeInputService8TestCaseOperation1Input{
-		MapArg: map[string]*string{
-			"key1": aws.String("val1"),
-			"key2": aws.String("val2"),
-		},
-	}
-	req, _ := svc.InputService8TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&MapArg.entry.1.key=key1&MapArg.entry.1.value=val1&MapArg.entry.2.key=key2&MapArg.entry.2.value=val2&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService9ProtocolTestSerializeMapTypeWithLocationNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService9ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService9TestShapeInputService9TestCaseOperation1Input{
-		MapArg: map[string]*string{
-			"key1": aws.String("val1"),
-			"key2": aws.String("val2"),
-		},
-	}
-	req, _ := svc.InputService9TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&MapArg.entry.1.TheKey=key1&MapArg.entry.1.TheValue=val1&MapArg.entry.2.TheKey=key2&MapArg.entry.2.TheValue=val2&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService10ProtocolTestBase64EncodedBlobsCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService10ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService10TestShapeInputService10TestCaseOperation1Input{
-		BlobArg: []byte("foo"),
-	}
-	req, _ := svc.InputService10TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService11ProtocolTestTimestampValuesCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService11ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService11TestShapeInputService11TestCaseOperation1Input{
-		TimeArg: aws.Time(time.Unix(1422172800, 0)),
-	}
-	req, _ := svc.InputService11TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			NoRecurse: aws.String("foo"),
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation1Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.NoRecurse=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase2(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-				NoRecurse: aws.String("foo"),
-			},
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation2Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.RecursiveStruct.NoRecurse=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase3(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-				RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-					RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-						NoRecurse: aws.String("foo"),
-					},
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation3Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.RecursiveStruct.RecursiveStruct.RecursiveStruct.NoRecurse=foo&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase4(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			RecursiveList: []*InputService12TestShapeRecursiveStructType{
-				{
-					NoRecurse: aws.String("foo"),
-				},
-				{
-					NoRecurse: aws.String("bar"),
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation4Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.NoRecurse=bar&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase5(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			RecursiveList: []*InputService12TestShapeRecursiveStructType{
-				{
-					NoRecurse: aws.String("foo"),
-				},
-				{
-					RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-						NoRecurse: aws.String("bar"),
-					},
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation5Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.RecursiveStruct.NoRecurse=bar&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}
-
-func TestInputService12ProtocolTestRecursiveShapesCase6(t *testing.T) {
-	sess := session.New()
-	svc := NewInputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	input := &InputService12TestShapeInputShape{
-		RecursiveStruct: &InputService12TestShapeRecursiveStructType{
-			RecursiveMap: map[string]*InputService12TestShapeRecursiveStructType{
-				"bar": {
-					NoRecurse: aws.String("bar"),
-				},
-				"foo": {
-					NoRecurse: aws.String("foo"),
-				},
-			},
-		},
-	}
-	req, _ := svc.InputService12TestCaseOperation6Request(input)
-	r := req.HTTPRequest
-
-	// build request
-	query.Build(req)
-	assert.NoError(t, req.Error)
-
-	// assert body
-	assert.NotNil(t, r.Body)
-	body, _ := ioutil.ReadAll(r.Body)
-	awstesting.AssertQuery(t, `Action=OperationName&RecursiveStruct.RecursiveMap.entry.1.key=foo&RecursiveStruct.RecursiveMap.entry.1.value.NoRecurse=foo&RecursiveStruct.RecursiveMap.entry.2.key=bar&RecursiveStruct.RecursiveMap.entry.2.value.NoRecurse=bar&Version=2014-01-01`, util.Trim(string(body)))
-
-	// assert URL
-	awstesting.AssertURL(t, "https://test/", r.URL.String())
-
-	// assert headers
-
-}

+ 0 - 223
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go

@@ -1,223 +0,0 @@
-package queryutil
-
-import (
-	"encoding/base64"
-	"fmt"
-	"net/url"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// Parse parses an object i and fills a url.Values object. The isEC2 flag
-// indicates if this is the EC2 Query sub-protocol.
-func Parse(body url.Values, i interface{}, isEC2 bool) error {
-	q := queryParser{isEC2: isEC2}
-	return q.parseValue(body, reflect.ValueOf(i), "", "")
-}
-
-func elemOf(value reflect.Value) reflect.Value {
-	for value.Kind() == reflect.Ptr {
-		value = value.Elem()
-	}
-	return value
-}
-
-type queryParser struct {
-	isEC2 bool
-}
-
-func (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	value = elemOf(value)
-
-	// no need to handle zero values
-	if !value.IsValid() {
-		return nil
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch value.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		return q.parseStruct(v, value, prefix)
-	case "list":
-		return q.parseList(v, value, prefix, tag)
-	case "map":
-		return q.parseMap(v, value, prefix, tag)
-	default:
-		return q.parseScalar(v, value, prefix, tag)
-	}
-}
-
-func (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error {
-	if !value.IsValid() {
-		return nil
-	}
-
-	t := value.Type()
-	for i := 0; i < value.NumField(); i++ {
-		if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		elemValue := elemOf(value.Field(i))
-		field := t.Field(i)
-		var name string
-
-		if q.isEC2 {
-			name = field.Tag.Get("queryName")
-		}
-		if name == "" {
-			if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
-				name = field.Tag.Get("locationNameList")
-			} else if locName := field.Tag.Get("locationName"); locName != "" {
-				name = locName
-			}
-			if name != "" && q.isEC2 {
-				name = strings.ToUpper(name[0:1]) + name[1:]
-			}
-		}
-		if name == "" {
-			name = field.Name
-		}
-
-		if prefix != "" {
-			name = prefix + "." + name
-		}
-
-		if err := q.parseValue(v, elemValue, name, field.Tag); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	// If it's empty, generate an empty value
-	if !value.IsNil() && value.Len() == 0 {
-		v.Set(prefix, "")
-		return nil
-	}
-
-	// check for unflattened list member
-	if !q.isEC2 && tag.Get("flattened") == "" {
-		prefix += ".member"
-	}
-
-	for i := 0; i < value.Len(); i++ {
-		slicePrefix := prefix
-		if slicePrefix == "" {
-			slicePrefix = strconv.Itoa(i + 1)
-		} else {
-			slicePrefix = slicePrefix + "." + strconv.Itoa(i+1)
-		}
-		if err := q.parseValue(v, value.Index(i), slicePrefix, ""); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
-	// If it's empty, generate an empty value
-	if !value.IsNil() && value.Len() == 0 {
-		v.Set(prefix, "")
-		return nil
-	}
-
-	// check for unflattened list member
-	if !q.isEC2 && tag.Get("flattened") == "" {
-		prefix += ".entry"
-	}
-
-	// sort keys for improved serialization consistency.
-	// this is not strictly necessary for protocol support.
-	mapKeyValues := value.MapKeys()
-	mapKeys := map[string]reflect.Value{}
-	mapKeyNames := make([]string, len(mapKeyValues))
-	for i, mapKey := range mapKeyValues {
-		name := mapKey.String()
-		mapKeys[name] = mapKey
-		mapKeyNames[i] = name
-	}
-	sort.Strings(mapKeyNames)
-
-	for i, mapKeyName := range mapKeyNames {
-		mapKey := mapKeys[mapKeyName]
-		mapValue := value.MapIndex(mapKey)
-
-		kname := tag.Get("locationNameKey")
-		if kname == "" {
-			kname = "key"
-		}
-		vname := tag.Get("locationNameValue")
-		if vname == "" {
-			vname = "value"
-		}
-
-		// serialize key
-		var keyName string
-		if prefix == "" {
-			keyName = strconv.Itoa(i+1) + "." + kname
-		} else {
-			keyName = prefix + "." + strconv.Itoa(i+1) + "." + kname
-		}
-
-		if err := q.parseValue(v, mapKey, keyName, ""); err != nil {
-			return err
-		}
-
-		// serialize value
-		var valueName string
-		if prefix == "" {
-			valueName = strconv.Itoa(i+1) + "." + vname
-		} else {
-			valueName = prefix + "." + strconv.Itoa(i+1) + "." + vname
-		}
-
-		if err := q.parseValue(v, mapValue, valueName, ""); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error {
-	switch value := r.Interface().(type) {
-	case string:
-		v.Set(name, value)
-	case []byte:
-		if !r.IsNil() {
-			v.Set(name, base64.StdEncoding.EncodeToString(value))
-		}
-	case bool:
-		v.Set(name, strconv.FormatBool(value))
-	case int64:
-		v.Set(name, strconv.FormatInt(value, 10))
-	case int:
-		v.Set(name, strconv.Itoa(value))
-	case float64:
-		v.Set(name, strconv.FormatFloat(value, 'f', -1, 64))
-	case float32:
-		v.Set(name, strconv.FormatFloat(float64(value), 'f', -1, 32))
-	case time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		v.Set(name, value.UTC().Format(ISO8601UTC))
-	default:
-		return fmt.Errorf("unsupported value for param %s: %v (%s)", name, r.Interface(), r.Type().Name())
-	}
-	return nil
-}

+ 0 - 29
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go

@@ -1,29 +0,0 @@
-package query
-
-//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/query.json unmarshal_test.go
-
-import (
-	"encoding/xml"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-)
-
-// Unmarshal unmarshals a response for an AWS Query service.
-func Unmarshal(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-	if r.DataFilled() {
-		decoder := xml.NewDecoder(r.HTTPResponse.Body)
-		err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result")
-		if err != nil {
-			r.Error = awserr.New("SerializationError", "failed decoding Query response", err)
-			return
-		}
-	}
-}
-
-// UnmarshalMeta unmarshals header response values for an AWS Query service.
-func UnmarshalMeta(r *request.Request) {
-	// TODO implement unmarshaling of request IDs
-}

+ 0 - 33
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go

@@ -1,33 +0,0 @@
-package query
-
-import (
-	"encoding/xml"
-	"io"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-type xmlErrorResponse struct {
-	XMLName   xml.Name `xml:"ErrorResponse"`
-	Code      string   `xml:"Error>Code"`
-	Message   string   `xml:"Error>Message"`
-	RequestID string   `xml:"RequestId"`
-}
-
-// UnmarshalError unmarshals an error response for an AWS Query service.
-func UnmarshalError(r *request.Request) {
-	defer r.HTTPResponse.Body.Close()
-
-	resp := &xmlErrorResponse{}
-	err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp)
-	if err != nil && err != io.EOF {
-		r.Error = awserr.New("SerializationError", "failed to decode query XML error response", err)
-	} else {
-		r.Error = awserr.NewRequestFailure(
-			awserr.New(resp.Code, resp.Message, nil),
-			r.HTTPResponse.StatusCode,
-			resp.RequestID,
-		)
-	}
-}

+ 0 - 1878
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_test.go

@@ -1,1878 +0,0 @@
-package query_test
-
-import (
-	"bytes"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/aws/session"
-	"github.com/aws/aws-sdk-go/awstesting"
-	"github.com/aws/aws-sdk-go/private/protocol/query"
-	"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-	"github.com/aws/aws-sdk-go/private/signer/v4"
-	"github.com/aws/aws-sdk-go/private/util"
-	"github.com/stretchr/testify/assert"
-)
-
-var _ bytes.Buffer // always import bytes
-var _ http.Request
-var _ json.Marshaler
-var _ time.Time
-var _ xmlutil.XMLNode
-var _ xml.Attr
-var _ = awstesting.GenerateAssertions
-var _ = ioutil.Discard
-var _ = util.Trim("")
-var _ = url.Values{}
-var _ = io.EOF
-var _ = aws.String
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService1ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService1ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService1ProtocolTest client from just a session.
-//     svc := outputservice1protocoltest.New(mySession)
-//
-//     // Create a OutputService1ProtocolTest client with additional configuration
-//     svc := outputservice1protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService1ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService1ProtocolTest {
-	c := p.ClientConfig("outputservice1protocoltest", cfgs...)
-	return newOutputService1ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService1ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService1ProtocolTest {
-	svc := &OutputService1ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice1protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService1TestCaseOperation1 = "OperationName"
-
-// OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *request.Request, output *OutputService1TestShapeOutputService1TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService1TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService1TestShapeOutputService1TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputService1TestCaseOperation1Output, error) {
-	req, out := c.OutputService1TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService1TestShapeOutputService1TestCaseOperation1Output struct {
-	Char *string `type:"character"`
-
-	Double *float64 `type:"double"`
-
-	FalseBool *bool `type:"boolean"`
-
-	Float *float64 `type:"float"`
-
-	Long *int64 `type:"long"`
-
-	Num *int64 `locationName:"FooNum" type:"integer"`
-
-	Str *string `type:"string"`
-
-	Timestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	TrueBool *bool `type:"boolean"`
-
-	metadataOutputService1TestShapeOutputService1TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService1TestShapeOutputService1TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService2ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService2ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService2ProtocolTest client from just a session.
-//     svc := outputservice2protocoltest.New(mySession)
-//
-//     // Create a OutputService2ProtocolTest client with additional configuration
-//     svc := outputservice2protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService2ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService2ProtocolTest {
-	c := p.ClientConfig("outputservice2protocoltest", cfgs...)
-	return newOutputService2ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService2ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService2ProtocolTest {
-	svc := &OutputService2ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice2protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService2TestCaseOperation1 = "OperationName"
-
-// OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *request.Request, output *OutputService2TestShapeOutputService2TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService2TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService2TestShapeOutputService2TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputService2TestCaseOperation1Output, error) {
-	req, out := c.OutputService2TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService2TestShapeOutputService2TestCaseOperation1Output struct {
-	Num *int64 `type:"integer"`
-
-	Str *string `type:"string"`
-
-	metadataOutputService2TestShapeOutputService2TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService2TestShapeOutputService2TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService3ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService3ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService3ProtocolTest client from just a session.
-//     svc := outputservice3protocoltest.New(mySession)
-//
-//     // Create a OutputService3ProtocolTest client with additional configuration
-//     svc := outputservice3protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService3ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService3ProtocolTest {
-	c := p.ClientConfig("outputservice3protocoltest", cfgs...)
-	return newOutputService3ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService3ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService3ProtocolTest {
-	svc := &OutputService3ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice3protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService3TestCaseOperation1 = "OperationName"
-
-// OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *request.Request, output *OutputService3TestShapeOutputService3TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService3TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService3TestShapeOutputService3TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputService3TestCaseOperation1Output, error) {
-	req, out := c.OutputService3TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService3TestShapeOutputService3TestCaseOperation1Output struct {
-	Blob []byte `type:"blob"`
-
-	metadataOutputService3TestShapeOutputService3TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService3TestShapeOutputService3TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService4ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService4ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService4ProtocolTest client from just a session.
-//     svc := outputservice4protocoltest.New(mySession)
-//
-//     // Create a OutputService4ProtocolTest client with additional configuration
-//     svc := outputservice4protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService4ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService4ProtocolTest {
-	c := p.ClientConfig("outputservice4protocoltest", cfgs...)
-	return newOutputService4ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService4ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService4ProtocolTest {
-	svc := &OutputService4ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice4protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService4TestCaseOperation1 = "OperationName"
-
-// OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *request.Request, output *OutputService4TestShapeOutputService4TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService4TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService4TestShapeOutputService4TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputService4TestCaseOperation1Output, error) {
-	req, out := c.OutputService4TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService4TestShapeOutputService4TestCaseOperation1Output struct {
-	ListMember []*string `type:"list"`
-
-	metadataOutputService4TestShapeOutputService4TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService4TestShapeOutputService4TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService5ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService5ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService5ProtocolTest client from just a session.
-//     svc := outputservice5protocoltest.New(mySession)
-//
-//     // Create a OutputService5ProtocolTest client with additional configuration
-//     svc := outputservice5protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService5ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService5ProtocolTest {
-	c := p.ClientConfig("outputservice5protocoltest", cfgs...)
-	return newOutputService5ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService5ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService5ProtocolTest {
-	svc := &OutputService5ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice5protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService5TestCaseOperation1 = "OperationName"
-
-// OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *request.Request, output *OutputService5TestShapeOutputService5TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService5TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService5TestShapeOutputService5TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputService5TestCaseOperation1Output, error) {
-	req, out := c.OutputService5TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService5TestShapeOutputService5TestCaseOperation1Output struct {
-	ListMember []*string `locationNameList:"item" type:"list"`
-
-	metadataOutputService5TestShapeOutputService5TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService5TestShapeOutputService5TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService6ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService6ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService6ProtocolTest client from just a session.
-//     svc := outputservice6protocoltest.New(mySession)
-//
-//     // Create a OutputService6ProtocolTest client with additional configuration
-//     svc := outputservice6protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService6ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService6ProtocolTest {
-	c := p.ClientConfig("outputservice6protocoltest", cfgs...)
-	return newOutputService6ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService6ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService6ProtocolTest {
-	svc := &OutputService6ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice6protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService6TestCaseOperation1 = "OperationName"
-
-// OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *request.Request, output *OutputService6TestShapeOutputService6TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService6TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService6TestShapeOutputService6TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputService6TestCaseOperation1Output, error) {
-	req, out := c.OutputService6TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService6TestShapeOutputService6TestCaseOperation1Output struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService6TestShapeOutputService6TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService6TestShapeOutputService6TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService7ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService7ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService7ProtocolTest client from just a session.
-//     svc := outputservice7protocoltest.New(mySession)
-//
-//     // Create a OutputService7ProtocolTest client with additional configuration
-//     svc := outputservice7protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService7ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService7ProtocolTest {
-	c := p.ClientConfig("outputservice7protocoltest", cfgs...)
-	return newOutputService7ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService7ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService7ProtocolTest {
-	svc := &OutputService7ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice7protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService7TestCaseOperation1 = "OperationName"
-
-// OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *request.Request, output *OutputService7TestShapeOutputService7TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService7TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService7TestShapeOutputService7TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputService7TestCaseOperation1Output, error) {
-	req, out := c.OutputService7TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService7TestShapeOutputService7TestCaseOperation1Output struct {
-	ListMember []*string `type:"list" flattened:"true"`
-
-	metadataOutputService7TestShapeOutputService7TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService7TestShapeOutputService7TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService8ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService8ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService8ProtocolTest client from just a session.
-//     svc := outputservice8protocoltest.New(mySession)
-//
-//     // Create a OutputService8ProtocolTest client with additional configuration
-//     svc := outputservice8protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService8ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService8ProtocolTest {
-	c := p.ClientConfig("outputservice8protocoltest", cfgs...)
-	return newOutputService8ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService8ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService8ProtocolTest {
-	svc := &OutputService8ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice8protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService8ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService8ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService8TestCaseOperation1 = "OperationName"
-
-// OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation.
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *request.Request, output *OutputService8TestShapeOutputService8TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService8TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService8TestShapeOutputService8TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputService8TestCaseOperation1Output, error) {
-	req, out := c.OutputService8TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeOutputService8TestCaseOperation1Output struct {
-	List []*OutputService8TestShapeStructureShape `type:"list"`
-
-	metadataOutputService8TestShapeOutputService8TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeOutputService8TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService8TestShapeStructureShape struct {
-	Bar *string `type:"string"`
-
-	Baz *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataOutputService8TestShapeStructureShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService8TestShapeStructureShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService9ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService9ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService9ProtocolTest client from just a session.
-//     svc := outputservice9protocoltest.New(mySession)
-//
-//     // Create a OutputService9ProtocolTest client with additional configuration
-//     svc := outputservice9protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService9ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService9ProtocolTest {
-	c := p.ClientConfig("outputservice9protocoltest", cfgs...)
-	return newOutputService9ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService9ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService9ProtocolTest {
-	svc := &OutputService9ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice9protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService9ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService9ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService9TestCaseOperation1 = "OperationName"
-
-// OutputService9TestCaseOperation1Request generates a request for the OutputService9TestCaseOperation1 operation.
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1Request(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (req *request.Request, output *OutputService9TestShapeOutputService9TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService9TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService9TestShapeOutputService9TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService9TestShapeOutputService9TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService9ProtocolTest) OutputService9TestCaseOperation1(input *OutputService9TestShapeOutputService9TestCaseOperation1Input) (*OutputService9TestShapeOutputService9TestCaseOperation1Output, error) {
-	req, out := c.OutputService9TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	metadataOutputService9TestShapeOutputService9TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputService9TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9TestShapeOutputService9TestCaseOperation1Output struct {
-	List []*OutputService9TestShapeStructureShape `type:"list" flattened:"true"`
-
-	metadataOutputService9TestShapeOutputService9TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeOutputService9TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService9TestShapeStructureShape struct {
-	Bar *string `type:"string"`
-
-	Baz *string `type:"string"`
-
-	Foo *string `type:"string"`
-
-	metadataOutputService9TestShapeStructureShape `json:"-" xml:"-"`
-}
-
-type metadataOutputService9TestShapeStructureShape struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService10ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService10ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService10ProtocolTest client from just a session.
-//     svc := outputservice10protocoltest.New(mySession)
-//
-//     // Create a OutputService10ProtocolTest client with additional configuration
-//     svc := outputservice10protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService10ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService10ProtocolTest {
-	c := p.ClientConfig("outputservice10protocoltest", cfgs...)
-	return newOutputService10ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService10ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService10ProtocolTest {
-	svc := &OutputService10ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice10protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService10ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService10ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService10TestCaseOperation1 = "OperationName"
-
-// OutputService10TestCaseOperation1Request generates a request for the OutputService10TestCaseOperation1 operation.
-func (c *OutputService10ProtocolTest) OutputService10TestCaseOperation1Request(input *OutputService10TestShapeOutputService10TestCaseOperation1Input) (req *request.Request, output *OutputService10TestShapeOutputService10TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService10TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService10TestShapeOutputService10TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService10TestShapeOutputService10TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService10ProtocolTest) OutputService10TestCaseOperation1(input *OutputService10TestShapeOutputService10TestCaseOperation1Input) (*OutputService10TestShapeOutputService10TestCaseOperation1Output, error) {
-	req, out := c.OutputService10TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService10TestShapeOutputService10TestCaseOperation1Input struct {
-	metadataOutputService10TestShapeOutputService10TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService10TestShapeOutputService10TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService10TestShapeOutputService10TestCaseOperation1Output struct {
-	List []*string `locationNameList:"NamedList" type:"list" flattened:"true"`
-
-	metadataOutputService10TestShapeOutputService10TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService10TestShapeOutputService10TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService11ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService11ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService11ProtocolTest client from just a session.
-//     svc := outputservice11protocoltest.New(mySession)
-//
-//     // Create a OutputService11ProtocolTest client with additional configuration
-//     svc := outputservice11protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService11ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService11ProtocolTest {
-	c := p.ClientConfig("outputservice11protocoltest", cfgs...)
-	return newOutputService11ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService11ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService11ProtocolTest {
-	svc := &OutputService11ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice11protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService11ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService11ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService11TestCaseOperation1 = "OperationName"
-
-// OutputService11TestCaseOperation1Request generates a request for the OutputService11TestCaseOperation1 operation.
-func (c *OutputService11ProtocolTest) OutputService11TestCaseOperation1Request(input *OutputService11TestShapeOutputService11TestCaseOperation1Input) (req *request.Request, output *OutputService11TestShapeOutputService11TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService11TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService11TestShapeOutputService11TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService11TestShapeOutputService11TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService11ProtocolTest) OutputService11TestCaseOperation1(input *OutputService11TestShapeOutputService11TestCaseOperation1Input) (*OutputService11TestShapeOutputService11TestCaseOperation1Output, error) {
-	req, out := c.OutputService11TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService11TestShapeOutputService11TestCaseOperation1Input struct {
-	metadataOutputService11TestShapeOutputService11TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeOutputService11TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService11TestShapeOutputService11TestCaseOperation1Output struct {
-	Map map[string]*OutputService11TestShapeStructType `type:"map"`
-
-	metadataOutputService11TestShapeOutputService11TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeOutputService11TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService11TestShapeStructType struct {
-	Foo *string `locationName:"foo" type:"string"`
-
-	metadataOutputService11TestShapeStructType `json:"-" xml:"-"`
-}
-
-type metadataOutputService11TestShapeStructType struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService12ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService12ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService12ProtocolTest client from just a session.
-//     svc := outputservice12protocoltest.New(mySession)
-//
-//     // Create a OutputService12ProtocolTest client with additional configuration
-//     svc := outputservice12protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService12ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService12ProtocolTest {
-	c := p.ClientConfig("outputservice12protocoltest", cfgs...)
-	return newOutputService12ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService12ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService12ProtocolTest {
-	svc := &OutputService12ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice12protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService12ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService12ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService12TestCaseOperation1 = "OperationName"
-
-// OutputService12TestCaseOperation1Request generates a request for the OutputService12TestCaseOperation1 operation.
-func (c *OutputService12ProtocolTest) OutputService12TestCaseOperation1Request(input *OutputService12TestShapeOutputService12TestCaseOperation1Input) (req *request.Request, output *OutputService12TestShapeOutputService12TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService12TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService12TestShapeOutputService12TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService12TestShapeOutputService12TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService12ProtocolTest) OutputService12TestCaseOperation1(input *OutputService12TestShapeOutputService12TestCaseOperation1Input) (*OutputService12TestShapeOutputService12TestCaseOperation1Output, error) {
-	req, out := c.OutputService12TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService12TestShapeOutputService12TestCaseOperation1Input struct {
-	metadataOutputService12TestShapeOutputService12TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService12TestShapeOutputService12TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService12TestShapeOutputService12TestCaseOperation1Output struct {
-	Map map[string]*string `type:"map" flattened:"true"`
-
-	metadataOutputService12TestShapeOutputService12TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService12TestShapeOutputService12TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService13ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService13ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService13ProtocolTest client from just a session.
-//     svc := outputservice13protocoltest.New(mySession)
-//
-//     // Create a OutputService13ProtocolTest client with additional configuration
-//     svc := outputservice13protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService13ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService13ProtocolTest {
-	c := p.ClientConfig("outputservice13protocoltest", cfgs...)
-	return newOutputService13ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService13ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService13ProtocolTest {
-	svc := &OutputService13ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice13protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService13ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService13ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService13TestCaseOperation1 = "OperationName"
-
-// OutputService13TestCaseOperation1Request generates a request for the OutputService13TestCaseOperation1 operation.
-func (c *OutputService13ProtocolTest) OutputService13TestCaseOperation1Request(input *OutputService13TestShapeOutputService13TestCaseOperation1Input) (req *request.Request, output *OutputService13TestShapeOutputService13TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService13TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService13TestShapeOutputService13TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService13TestShapeOutputService13TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService13ProtocolTest) OutputService13TestCaseOperation1(input *OutputService13TestShapeOutputService13TestCaseOperation1Input) (*OutputService13TestShapeOutputService13TestCaseOperation1Output, error) {
-	req, out := c.OutputService13TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService13TestShapeOutputService13TestCaseOperation1Input struct {
-	metadataOutputService13TestShapeOutputService13TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService13TestShapeOutputService13TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService13TestShapeOutputService13TestCaseOperation1Output struct {
-	Map map[string]*string `locationName:"Attribute" locationNameKey:"Name" locationNameValue:"Value" type:"map" flattened:"true"`
-
-	metadataOutputService13TestShapeOutputService13TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService13TestShapeOutputService13TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService14ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService14ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService14ProtocolTest client from just a session.
-//     svc := outputservice14protocoltest.New(mySession)
-//
-//     // Create a OutputService14ProtocolTest client with additional configuration
-//     svc := outputservice14protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService14ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService14ProtocolTest {
-	c := p.ClientConfig("outputservice14protocoltest", cfgs...)
-	return newOutputService14ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService14ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService14ProtocolTest {
-	svc := &OutputService14ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice14protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService14ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService14ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService14TestCaseOperation1 = "OperationName"
-
-// OutputService14TestCaseOperation1Request generates a request for the OutputService14TestCaseOperation1 operation.
-func (c *OutputService14ProtocolTest) OutputService14TestCaseOperation1Request(input *OutputService14TestShapeOutputService14TestCaseOperation1Input) (req *request.Request, output *OutputService14TestShapeOutputService14TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService14TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService14TestShapeOutputService14TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService14TestShapeOutputService14TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService14ProtocolTest) OutputService14TestCaseOperation1(input *OutputService14TestShapeOutputService14TestCaseOperation1Input) (*OutputService14TestShapeOutputService14TestCaseOperation1Output, error) {
-	req, out := c.OutputService14TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService14TestShapeOutputService14TestCaseOperation1Input struct {
-	metadataOutputService14TestShapeOutputService14TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService14TestShapeOutputService14TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService14TestShapeOutputService14TestCaseOperation1Output struct {
-	Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"`
-
-	metadataOutputService14TestShapeOutputService14TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService14TestShapeOutputService14TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type OutputService15ProtocolTest struct {
-	*client.Client
-}
-
-// New creates a new instance of the OutputService15ProtocolTest client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a OutputService15ProtocolTest client from just a session.
-//     svc := outputservice15protocoltest.New(mySession)
-//
-//     // Create a OutputService15ProtocolTest client with additional configuration
-//     svc := outputservice15protocoltest.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func NewOutputService15ProtocolTest(p client.ConfigProvider, cfgs ...*aws.Config) *OutputService15ProtocolTest {
-	c := p.ClientConfig("outputservice15protocoltest", cfgs...)
-	return newOutputService15ProtocolTestClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newOutputService15ProtocolTestClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *OutputService15ProtocolTest {
-	svc := &OutputService15ProtocolTest{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   "outputservice15protocoltest",
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	return svc
-}
-
-// newRequest creates a new request for a OutputService15ProtocolTest operation and runs any
-// custom request initialization.
-func (c *OutputService15ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	return req
-}
-
-const opOutputService15TestCaseOperation1 = "OperationName"
-
-// OutputService15TestCaseOperation1Request generates a request for the OutputService15TestCaseOperation1 operation.
-func (c *OutputService15ProtocolTest) OutputService15TestCaseOperation1Request(input *OutputService15TestShapeOutputService15TestCaseOperation1Input) (req *request.Request, output *OutputService15TestShapeOutputService15TestCaseOperation1Output) {
-	op := &request.Operation{
-		Name: opOutputService15TestCaseOperation1,
-	}
-
-	if input == nil {
-		input = &OutputService15TestShapeOutputService15TestCaseOperation1Input{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &OutputService15TestShapeOutputService15TestCaseOperation1Output{}
-	req.Data = output
-	return
-}
-
-func (c *OutputService15ProtocolTest) OutputService15TestCaseOperation1(input *OutputService15TestShapeOutputService15TestCaseOperation1Input) (*OutputService15TestShapeOutputService15TestCaseOperation1Output, error) {
-	req, out := c.OutputService15TestCaseOperation1Request(input)
-	err := req.Send()
-	return out, err
-}
-
-type OutputService15TestShapeOutputService15TestCaseOperation1Input struct {
-	metadataOutputService15TestShapeOutputService15TestCaseOperation1Input `json:"-" xml:"-"`
-}
-
-type metadataOutputService15TestShapeOutputService15TestCaseOperation1Input struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-type OutputService15TestShapeOutputService15TestCaseOperation1Output struct {
-	Foo *string `type:"string"`
-
-	metadataOutputService15TestShapeOutputService15TestCaseOperation1Output `json:"-" xml:"-"`
-}
-
-type metadataOutputService15TestShapeOutputService15TestCaseOperation1Output struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-//
-// Tests begin here
-//
-
-func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService1ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><Timestamp>2015-01-25T08:00:00Z</Timestamp></OperationNameResult><ResponseMetadata><RequestId>request-id</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService1TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.Char)
-	assert.Equal(t, 1.3, *out.Double)
-	assert.Equal(t, false, *out.FalseBool)
-	assert.Equal(t, 1.2, *out.Float)
-	assert.Equal(t, int64(200), *out.Long)
-	assert.Equal(t, int64(123), *out.Num)
-	assert.Equal(t, "myname", *out.Str)
-	assert.Equal(t, time.Unix(1.4221728e+09, 0).UTC().String(), out.Timestamp.String())
-	assert.Equal(t, true, *out.TrueBool)
-
-}
-
-func TestOutputService2ProtocolTestNotAllMembersInResponseCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService2ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Str>myname</Str></OperationNameResult><ResponseMetadata><RequestId>request-id</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService2TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "myname", *out.Str)
-
-}
-
-func TestOutputService3ProtocolTestBlobCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService3ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Blob>dmFsdWU=</Blob></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService3TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "value", string(out.Blob))
-
-}
-
-func TestOutputService4ProtocolTestListsCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService4ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember><member>abc</member><member>123</member></ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService4TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService5ProtocolTestListWithCustomMemberNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService5ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember><item>abc</item><item>123</item></ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService5TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService6ProtocolTestFlattenedListCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService6ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember>abc</ListMember><ListMember>123</ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService6TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-	assert.Equal(t, "123", *out.ListMember[1])
-
-}
-
-func TestOutputService7ProtocolTestFlattenedSingleElementListCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService7ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><ListMember>abc</ListMember></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService7TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "abc", *out.ListMember[0])
-
-}
-
-func TestOutputService8ProtocolTestListOfStructuresCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService8ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><List><member><Foo>firstfoo</Foo><Bar>firstbar</Bar><Baz>firstbaz</Baz></member><member><Foo>secondfoo</Foo><Bar>secondbar</Bar><Baz>secondbaz</Baz></member></List></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService8TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "firstbar", *out.List[0].Bar)
-	assert.Equal(t, "firstbaz", *out.List[0].Baz)
-	assert.Equal(t, "firstfoo", *out.List[0].Foo)
-	assert.Equal(t, "secondbar", *out.List[1].Bar)
-	assert.Equal(t, "secondbaz", *out.List[1].Baz)
-	assert.Equal(t, "secondfoo", *out.List[1].Foo)
-
-}
-
-func TestOutputService9ProtocolTestFlattenedListOfStructuresCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService9ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><List><Foo>firstfoo</Foo><Bar>firstbar</Bar><Baz>firstbaz</Baz></List><List><Foo>secondfoo</Foo><Bar>secondbar</Bar><Baz>secondbaz</Baz></List></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService9TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "firstbar", *out.List[0].Bar)
-	assert.Equal(t, "firstbaz", *out.List[0].Baz)
-	assert.Equal(t, "firstfoo", *out.List[0].Foo)
-	assert.Equal(t, "secondbar", *out.List[1].Bar)
-	assert.Equal(t, "secondbaz", *out.List[1].Baz)
-	assert.Equal(t, "secondfoo", *out.List[1].Foo)
-
-}
-
-func TestOutputService10ProtocolTestFlattenedListWithLocationNameCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService10ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08/\"><OperationNameResult><NamedList>a</NamedList><NamedList>b</NamedList></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService10TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "a", *out.List[0])
-	assert.Equal(t, "b", *out.List[1])
-
-}
-
-func TestOutputService11ProtocolTestNormalMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService11ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse xmlns=\"https://service.amazonaws.com/doc/2010-05-08\"><OperationNameResult><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService11TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"].Foo)
-	assert.Equal(t, "bar", *out.Map["qux"].Foo)
-
-}
-
-func TestOutputService12ProtocolTestFlattenedMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService12ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService12TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService13ProtocolTestFlattenedMapInShapeDefinitionCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService13ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Attribute><Name>qux</Name><Value>bar</Value></Attribute></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService13TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService14ProtocolTestNamedMapCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService14ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><OperationNameResult><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map></OperationNameResult><ResponseMetadata><RequestId>requestid</RequestId></ResponseMetadata></OperationNameResponse>"))
-	req, out := svc.OutputService14TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "bam", *out.Map["baz"])
-	assert.Equal(t, "bar", *out.Map["qux"])
-
-}
-
-func TestOutputService15ProtocolTestEmptyStringCase1(t *testing.T) {
-	sess := session.New()
-	svc := NewOutputService15ProtocolTest(sess, &aws.Config{Endpoint: aws.String("https://test")})
-
-	buf := bytes.NewReader([]byte("<OperationNameResponse><Foo/><RequestId>requestid</RequestId></OperationNameResponse>"))
-	req, out := svc.OutputService15TestCaseOperation1Request(nil)
-	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
-
-	// set headers
-
-	// unmarshal response
-	query.UnmarshalMeta(req)
-	query.Unmarshal(req)
-	assert.NoError(t, req.Error)
-
-	// assert response
-	assert.NotNil(t, out) // ensure out variable is used
-	assert.Equal(t, "", *out.Foo)
-
-}

+ 0 - 254
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/build.go

@@ -1,254 +0,0 @@
-// Package rest provides RESTful serialization of AWS requests and responses.
-package rest
-
-import (
-	"bytes"
-	"encoding/base64"
-	"fmt"
-	"io"
-	"net/http"
-	"net/url"
-	"path"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// RFC822 returns an RFC822 formatted timestamp for AWS protocols
-const RFC822 = "Mon, 2 Jan 2006 15:04:05 GMT"
-
-// Whether the byte value can be sent without escaping in AWS URLs
-var noEscape [256]bool
-
-var errValueNotSet = fmt.Errorf("value not set")
-
-func init() {
-	for i := 0; i < len(noEscape); i++ {
-		// AWS expects every character except these to be escaped
-		noEscape[i] = (i >= 'A' && i <= 'Z') ||
-			(i >= 'a' && i <= 'z') ||
-			(i >= '0' && i <= '9') ||
-			i == '-' ||
-			i == '.' ||
-			i == '_' ||
-			i == '~'
-	}
-}
-
-// Build builds the REST component of a service request.
-func Build(r *request.Request) {
-	if r.ParamsFilled() {
-		v := reflect.ValueOf(r.Params).Elem()
-		buildLocationElements(r, v)
-		buildBody(r, v)
-	}
-}
-
-func buildLocationElements(r *request.Request, v reflect.Value) {
-	query := r.HTTPRequest.URL.Query()
-
-	for i := 0; i < v.NumField(); i++ {
-		m := v.Field(i)
-		if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) {
-			continue
-		}
-
-		if m.IsValid() {
-			field := v.Type().Field(i)
-			name := field.Tag.Get("locationName")
-			if name == "" {
-				name = field.Name
-			}
-			if m.Kind() == reflect.Ptr {
-				m = m.Elem()
-			}
-			if !m.IsValid() {
-				continue
-			}
-
-			var err error
-			switch field.Tag.Get("location") {
-			case "headers": // header maps
-				err = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag.Get("locationName"))
-			case "header":
-				err = buildHeader(&r.HTTPRequest.Header, m, name)
-			case "uri":
-				err = buildURI(r.HTTPRequest.URL, m, name)
-			case "querystring":
-				err = buildQueryString(query, m, name)
-			}
-			r.Error = err
-		}
-		if r.Error != nil {
-			return
-		}
-	}
-
-	r.HTTPRequest.URL.RawQuery = query.Encode()
-	updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path)
-}
-
-func buildBody(r *request.Request, v reflect.Value) {
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			pfield, _ := v.Type().FieldByName(payloadName)
-			if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
-				payload := reflect.Indirect(v.FieldByName(payloadName))
-				if payload.IsValid() && payload.Interface() != nil {
-					switch reader := payload.Interface().(type) {
-					case io.ReadSeeker:
-						r.SetReaderBody(reader)
-					case []byte:
-						r.SetBufferBody(reader)
-					case string:
-						r.SetStringBody(reader)
-					default:
-						r.Error = awserr.New("SerializationError",
-							"failed to encode REST request",
-							fmt.Errorf("unknown payload type %s", payload.Type()))
-					}
-				}
-			}
-		}
-	}
-}
-
-func buildHeader(header *http.Header, v reflect.Value, name string) error {
-	str, err := convertType(v)
-	if err == errValueNotSet {
-		return nil
-	} else if err != nil {
-		return awserr.New("SerializationError", "failed to encode REST request", err)
-	}
-
-	header.Add(name, str)
-
-	return nil
-}
-
-func buildHeaderMap(header *http.Header, v reflect.Value, prefix string) error {
-	for _, key := range v.MapKeys() {
-		str, err := convertType(v.MapIndex(key))
-		if err == errValueNotSet {
-			continue
-		} else if err != nil {
-			return awserr.New("SerializationError", "failed to encode REST request", err)
-
-		}
-
-		header.Add(prefix+key.String(), str)
-	}
-	return nil
-}
-
-func buildURI(u *url.URL, v reflect.Value, name string) error {
-	value, err := convertType(v)
-	if err == errValueNotSet {
-		return nil
-	} else if err != nil {
-		return awserr.New("SerializationError", "failed to encode REST request", err)
-	}
-
-	uri := u.Path
-	uri = strings.Replace(uri, "{"+name+"}", EscapePath(value, true), -1)
-	uri = strings.Replace(uri, "{"+name+"+}", EscapePath(value, false), -1)
-	u.Path = uri
-
-	return nil
-}
-
-func buildQueryString(query url.Values, v reflect.Value, name string) error {
-	switch value := v.Interface().(type) {
-	case []*string:
-		for _, item := range value {
-			query.Add(name, *item)
-		}
-	case map[string]*string:
-		for key, item := range value {
-			query.Add(key, *item)
-		}
-	case map[string][]*string:
-		for key, items := range value {
-			for _, item := range items {
-				query.Add(key, *item)
-			}
-		}
-	default:
-		str, err := convertType(v)
-		if err == errValueNotSet {
-			return nil
-		} else if err != nil {
-			return awserr.New("SerializationError", "failed to encode REST request", err)
-		}
-		query.Set(name, str)
-	}
-
-	return nil
-}
-
-func updatePath(url *url.URL, urlPath string) {
-	scheme, query := url.Scheme, url.RawQuery
-
-	hasSlash := strings.HasSuffix(urlPath, "/")
-
-	// clean up path
-	urlPath = path.Clean(urlPath)
-	if hasSlash && !strings.HasSuffix(urlPath, "/") {
-		urlPath += "/"
-	}
-
-	// get formatted URL minus scheme so we can build this into Opaque
-	url.Scheme, url.Path, url.RawQuery = "", "", ""
-	s := url.String()
-	url.Scheme = scheme
-	url.RawQuery = query
-
-	// build opaque URI
-	url.Opaque = s + urlPath
-}
-
-// EscapePath escapes part of a URL path in Amazon style
-func EscapePath(path string, encodeSep bool) string {
-	var buf bytes.Buffer
-	for i := 0; i < len(path); i++ {
-		c := path[i]
-		if noEscape[c] || (c == '/' && !encodeSep) {
-			buf.WriteByte(c)
-		} else {
-			buf.WriteByte('%')
-			buf.WriteString(strings.ToUpper(strconv.FormatUint(uint64(c), 16)))
-		}
-	}
-	return buf.String()
-}
-
-func convertType(v reflect.Value) (string, error) {
-	v = reflect.Indirect(v)
-	if !v.IsValid() {
-		return "", errValueNotSet
-	}
-
-	var str string
-	switch value := v.Interface().(type) {
-	case string:
-		str = value
-	case []byte:
-		str = base64.StdEncoding.EncodeToString(value)
-	case bool:
-		str = strconv.FormatBool(value)
-	case int64:
-		str = strconv.FormatInt(value, 10)
-	case float64:
-		str = strconv.FormatFloat(value, 'f', -1, 64)
-	case time.Time:
-		str = value.UTC().Format(RFC822)
-	default:
-		err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
-		return "", err
-	}
-	return str, nil
-}

+ 0 - 45
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go

@@ -1,45 +0,0 @@
-package rest
-
-import "reflect"
-
-// PayloadMember returns the payload field member of i if there is one, or nil.
-func PayloadMember(i interface{}) interface{} {
-	if i == nil {
-		return nil
-	}
-
-	v := reflect.ValueOf(i).Elem()
-	if !v.IsValid() {
-		return nil
-	}
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			field, _ := v.Type().FieldByName(payloadName)
-			if field.Tag.Get("type") != "structure" {
-				return nil
-			}
-
-			payload := v.FieldByName(payloadName)
-			if payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) {
-				return payload.Interface()
-			}
-		}
-	}
-	return nil
-}
-
-// PayloadType returns the type of a payload field member of i if there is one, or "".
-func PayloadType(i interface{}) string {
-	v := reflect.Indirect(reflect.ValueOf(i))
-	if !v.IsValid() {
-		return ""
-	}
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			if member, ok := v.Type().FieldByName(payloadName); ok {
-				return member.Tag.Get("type")
-			}
-		}
-	}
-	return ""
-}

+ 0 - 183
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go

@@ -1,183 +0,0 @@
-package rest
-
-import (
-	"encoding/base64"
-	"fmt"
-	"io/ioutil"
-	"net/http"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// Unmarshal unmarshals the REST component of a response in a REST service.
-func Unmarshal(r *request.Request) {
-	if r.DataFilled() {
-		v := reflect.Indirect(reflect.ValueOf(r.Data))
-		unmarshalBody(r, v)
-	}
-}
-
-// UnmarshalMeta unmarshals the REST metadata of a response in a REST service
-func UnmarshalMeta(r *request.Request) {
-	r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid")
-	if r.DataFilled() {
-		v := reflect.Indirect(reflect.ValueOf(r.Data))
-		unmarshalLocationElements(r, v)
-	}
-}
-
-func unmarshalBody(r *request.Request, v reflect.Value) {
-	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok {
-		if payloadName := field.Tag.Get("payload"); payloadName != "" {
-			pfield, _ := v.Type().FieldByName(payloadName)
-			if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
-				payload := v.FieldByName(payloadName)
-				if payload.IsValid() {
-					switch payload.Interface().(type) {
-					case []byte:
-						b, err := ioutil.ReadAll(r.HTTPResponse.Body)
-						if err != nil {
-							r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-						} else {
-							payload.Set(reflect.ValueOf(b))
-						}
-					case *string:
-						b, err := ioutil.ReadAll(r.HTTPResponse.Body)
-						if err != nil {
-							r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-						} else {
-							str := string(b)
-							payload.Set(reflect.ValueOf(&str))
-						}
-					default:
-						switch payload.Type().String() {
-						case "io.ReadSeeker":
-							payload.Set(reflect.ValueOf(aws.ReadSeekCloser(r.HTTPResponse.Body)))
-						case "aws.ReadSeekCloser", "io.ReadCloser":
-							payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
-						default:
-							r.Error = awserr.New("SerializationError",
-								"failed to decode REST response",
-								fmt.Errorf("unknown payload type %s", payload.Type()))
-						}
-					}
-				}
-			}
-		}
-	}
-}
-
-func unmarshalLocationElements(r *request.Request, v reflect.Value) {
-	for i := 0; i < v.NumField(); i++ {
-		m, field := v.Field(i), v.Type().Field(i)
-		if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {
-			continue
-		}
-
-		if m.IsValid() {
-			name := field.Tag.Get("locationName")
-			if name == "" {
-				name = field.Name
-			}
-
-			switch field.Tag.Get("location") {
-			case "statusCode":
-				unmarshalStatusCode(m, r.HTTPResponse.StatusCode)
-			case "header":
-				err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name))
-				if err != nil {
-					r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-					break
-				}
-			case "headers":
-				prefix := field.Tag.Get("locationName")
-				err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix)
-				if err != nil {
-					r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
-					break
-				}
-			}
-		}
-		if r.Error != nil {
-			return
-		}
-	}
-}
-
-func unmarshalStatusCode(v reflect.Value, statusCode int) {
-	if !v.IsValid() {
-		return
-	}
-
-	switch v.Interface().(type) {
-	case *int64:
-		s := int64(statusCode)
-		v.Set(reflect.ValueOf(&s))
-	}
-}
-
-func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error {
-	switch r.Interface().(type) {
-	case map[string]*string: // we only support string map value types
-		out := map[string]*string{}
-		for k, v := range headers {
-			k = http.CanonicalHeaderKey(k)
-			if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) {
-				out[k[len(prefix):]] = &v[0]
-			}
-		}
-		r.Set(reflect.ValueOf(out))
-	}
-	return nil
-}
-
-func unmarshalHeader(v reflect.Value, header string) error {
-	if !v.IsValid() || (header == "" && v.Elem().Kind() != reflect.String) {
-		return nil
-	}
-
-	switch v.Interface().(type) {
-	case *string:
-		v.Set(reflect.ValueOf(&header))
-	case []byte:
-		b, err := base64.StdEncoding.DecodeString(header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&b))
-	case *bool:
-		b, err := strconv.ParseBool(header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&b))
-	case *int64:
-		i, err := strconv.ParseInt(header, 10, 64)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&i))
-	case *float64:
-		f, err := strconv.ParseFloat(header, 64)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&f))
-	case *time.Time:
-		t, err := time.Parse(RFC822, header)
-		if err != nil {
-			return err
-		}
-		v.Set(reflect.ValueOf(&t))
-	default:
-		err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
-		return err
-	}
-	return nil
-}

+ 0 - 287
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go

@@ -1,287 +0,0 @@
-// Package xmlutil provides XML serialisation of AWS requests and responses.
-package xmlutil
-
-import (
-	"encoding/base64"
-	"encoding/xml"
-	"fmt"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// BuildXML will serialize params into an xml.Encoder.
-// Error will be returned if the serialization of any of the params or nested values fails.
-func BuildXML(params interface{}, e *xml.Encoder) error {
-	b := xmlBuilder{encoder: e, namespaces: map[string]string{}}
-	root := NewXMLElement(xml.Name{})
-	if err := b.buildValue(reflect.ValueOf(params), root, ""); err != nil {
-		return err
-	}
-	for _, c := range root.Children {
-		for _, v := range c {
-			return StructToXML(e, v, false)
-		}
-	}
-	return nil
-}
-
-// Returns the reflection element of a value, if it is a pointer.
-func elemOf(value reflect.Value) reflect.Value {
-	for value.Kind() == reflect.Ptr {
-		value = value.Elem()
-	}
-	return value
-}
-
-// A xmlBuilder serializes values from Go code to XML
-type xmlBuilder struct {
-	encoder    *xml.Encoder
-	namespaces map[string]string
-}
-
-// buildValue generic XMLNode builder for any type. Will build value for their specific type
-// struct, list, map, scalar.
-//
-// Also takes a "type" tag value to set what type a value should be converted to XMLNode as. If
-// type is not provided reflect will be used to determine the value's type.
-func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	value = elemOf(value)
-	if !value.IsValid() { // no need to handle zero values
-		return nil
-	} else if tag.Get("location") != "" { // don't handle non-body location values
-		return nil
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch value.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		if field, ok := value.Type().FieldByName("SDKShapeTraits"); ok {
-			tag = tag + reflect.StructTag(" ") + field.Tag
-		}
-		return b.buildStruct(value, current, tag)
-	case "list":
-		return b.buildList(value, current, tag)
-	case "map":
-		return b.buildMap(value, current, tag)
-	default:
-		return b.buildScalar(value, current, tag)
-	}
-}
-
-// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested
-// types are converted to XMLNodes also.
-func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if !value.IsValid() {
-		return nil
-	}
-
-	fieldAdded := false
-
-	// unwrap payloads
-	if payload := tag.Get("payload"); payload != "" {
-		field, _ := value.Type().FieldByName(payload)
-		tag = field.Tag
-		value = elemOf(value.FieldByName(payload))
-
-		if !value.IsValid() {
-			return nil
-		}
-	}
-
-	child := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
-
-	// there is an xmlNamespace associated with this struct
-	if prefix, uri := tag.Get("xmlPrefix"), tag.Get("xmlURI"); uri != "" {
-		ns := xml.Attr{
-			Name:  xml.Name{Local: "xmlns"},
-			Value: uri,
-		}
-		if prefix != "" {
-			b.namespaces[prefix] = uri // register the namespace
-			ns.Name.Local = "xmlns:" + prefix
-		}
-
-		child.Attr = append(child.Attr, ns)
-	}
-
-	t := value.Type()
-	for i := 0; i < value.NumField(); i++ {
-		if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		member := elemOf(value.Field(i))
-		field := t.Field(i)
-		mTag := field.Tag
-
-		if mTag.Get("location") != "" { // skip non-body members
-			continue
-		}
-
-		memberName := mTag.Get("locationName")
-		if memberName == "" {
-			memberName = field.Name
-			mTag = reflect.StructTag(string(mTag) + ` locationName:"` + memberName + `"`)
-		}
-		if err := b.buildValue(member, child, mTag); err != nil {
-			return err
-		}
-
-		fieldAdded = true
-	}
-
-	if fieldAdded { // only append this child if we have one ore more valid members
-		current.AddChild(child)
-	}
-
-	return nil
-}
-
-// buildList adds the value's list items to the current XMLNode as children nodes. All
-// nested values in the list are converted to XMLNodes also.
-func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if value.IsNil() { // don't build omitted lists
-		return nil
-	}
-
-	// check for unflattened list member
-	flattened := tag.Get("flattened") != ""
-
-	xname := xml.Name{Local: tag.Get("locationName")}
-	if flattened {
-		for i := 0; i < value.Len(); i++ {
-			child := NewXMLElement(xname)
-			current.AddChild(child)
-			if err := b.buildValue(value.Index(i), child, ""); err != nil {
-				return err
-			}
-		}
-	} else {
-		list := NewXMLElement(xname)
-		current.AddChild(list)
-
-		for i := 0; i < value.Len(); i++ {
-			iname := tag.Get("locationNameList")
-			if iname == "" {
-				iname = "member"
-			}
-
-			child := NewXMLElement(xml.Name{Local: iname})
-			list.AddChild(child)
-			if err := b.buildValue(value.Index(i), child, ""); err != nil {
-				return err
-			}
-		}
-	}
-
-	return nil
-}
-
-// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All
-// nested values in the map are converted to XMLNodes also.
-//
-// Error will be returned if it is unable to build the map's values into XMLNodes
-func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	if value.IsNil() { // don't build omitted maps
-		return nil
-	}
-
-	maproot := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
-	current.AddChild(maproot)
-	current = maproot
-
-	kname, vname := "key", "value"
-	if n := tag.Get("locationNameKey"); n != "" {
-		kname = n
-	}
-	if n := tag.Get("locationNameValue"); n != "" {
-		vname = n
-	}
-
-	// sorting is not required for compliance, but it makes testing easier
-	keys := make([]string, value.Len())
-	for i, k := range value.MapKeys() {
-		keys[i] = k.String()
-	}
-	sort.Strings(keys)
-
-	for _, k := range keys {
-		v := value.MapIndex(reflect.ValueOf(k))
-
-		mapcur := current
-		if tag.Get("flattened") == "" { // add "entry" tag to non-flat maps
-			child := NewXMLElement(xml.Name{Local: "entry"})
-			mapcur.AddChild(child)
-			mapcur = child
-		}
-
-		kchild := NewXMLElement(xml.Name{Local: kname})
-		kchild.Text = k
-		vchild := NewXMLElement(xml.Name{Local: vname})
-		mapcur.AddChild(kchild)
-		mapcur.AddChild(vchild)
-
-		if err := b.buildValue(v, vchild, ""); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// buildScalar will convert the value into a string and append it as a attribute or child
-// of the current XMLNode.
-//
-// The value will be added as an attribute if tag contains a "xmlAttribute" attribute value.
-//
-// Error will be returned if the value type is unsupported.
-func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
-	var str string
-	switch converted := value.Interface().(type) {
-	case string:
-		str = converted
-	case []byte:
-		if !value.IsNil() {
-			str = base64.StdEncoding.EncodeToString(converted)
-		}
-	case bool:
-		str = strconv.FormatBool(converted)
-	case int64:
-		str = strconv.FormatInt(converted, 10)
-	case int:
-		str = strconv.Itoa(converted)
-	case float64:
-		str = strconv.FormatFloat(converted, 'f', -1, 64)
-	case float32:
-		str = strconv.FormatFloat(float64(converted), 'f', -1, 32)
-	case time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		str = converted.UTC().Format(ISO8601UTC)
-	default:
-		return fmt.Errorf("unsupported value for param %s: %v (%s)",
-			tag.Get("locationName"), value.Interface(), value.Type().Name())
-	}
-
-	xname := xml.Name{Local: tag.Get("locationName")}
-	if tag.Get("xmlAttribute") != "" { // put into current node's attribute list
-		attr := xml.Attr{Name: xname, Value: str}
-		current.Attr = append(current.Attr, attr)
-	} else { // regular text node
-		current.AddChild(&XMLNode{Name: xname, Text: str})
-	}
-	return nil
-}

+ 0 - 260
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go

@@ -1,260 +0,0 @@
-package xmlutil
-
-import (
-	"encoding/base64"
-	"encoding/xml"
-	"fmt"
-	"io"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// UnmarshalXML deserializes an xml.Decoder into the container v. V
-// needs to match the shape of the XML expected to be decoded.
-// If the shape doesn't match unmarshaling will fail.
-func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
-	n, _ := XMLToStruct(d, nil)
-	if n.Children != nil {
-		for _, root := range n.Children {
-			for _, c := range root {
-				if wrappedChild, ok := c.Children[wrapper]; ok {
-					c = wrappedChild[0] // pull out wrapped element
-				}
-
-				err := parse(reflect.ValueOf(v), c, "")
-				if err != nil {
-					if err == io.EOF {
-						return nil
-					}
-					return err
-				}
-			}
-		}
-		return nil
-	}
-	return nil
-}
-
-// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect
-// will be used to determine the type from r.
-func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	rtype := r.Type()
-	if rtype.Kind() == reflect.Ptr {
-		rtype = rtype.Elem() // check kind of actual element type
-	}
-
-	t := tag.Get("type")
-	if t == "" {
-		switch rtype.Kind() {
-		case reflect.Struct:
-			t = "structure"
-		case reflect.Slice:
-			t = "list"
-		case reflect.Map:
-			t = "map"
-		}
-	}
-
-	switch t {
-	case "structure":
-		if field, ok := rtype.FieldByName("SDKShapeTraits"); ok {
-			tag = field.Tag
-		}
-		return parseStruct(r, node, tag)
-	case "list":
-		return parseList(r, node, tag)
-	case "map":
-		return parseMap(r, node, tag)
-	default:
-		return parseScalar(r, node, tag)
-	}
-}
-
-// parseStruct deserializes a structure and its fields from an XMLNode. Any nested
-// types in the structure will also be deserialized.
-func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	t := r.Type()
-	if r.Kind() == reflect.Ptr {
-		if r.IsNil() { // create the structure if it's nil
-			s := reflect.New(r.Type().Elem())
-			r.Set(s)
-			r = s
-		}
-
-		r = r.Elem()
-		t = t.Elem()
-	}
-
-	// unwrap any payloads
-	if payload := tag.Get("payload"); payload != "" {
-		field, _ := t.FieldByName(payload)
-		return parseStruct(r.FieldByName(payload), node, field.Tag)
-	}
-
-	for i := 0; i < t.NumField(); i++ {
-		field := t.Field(i)
-		if c := field.Name[0:1]; strings.ToLower(c) == c {
-			continue // ignore unexported fields
-		}
-
-		// figure out what this field is called
-		name := field.Name
-		if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
-			name = field.Tag.Get("locationNameList")
-		} else if locName := field.Tag.Get("locationName"); locName != "" {
-			name = locName
-		}
-
-		// try to find the field by name in elements
-		elems := node.Children[name]
-
-		if elems == nil { // try to find the field in attributes
-			for _, a := range node.Attr {
-				if name == a.Name.Local {
-					// turn this into a text node for de-serializing
-					elems = []*XMLNode{{Text: a.Value}}
-				}
-			}
-		}
-
-		member := r.FieldByName(field.Name)
-		for _, elem := range elems {
-			err := parse(member, elem, field.Tag)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-// parseList deserializes a list of values from an XML node. Each list entry
-// will also be deserialized.
-func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	t := r.Type()
-
-	if tag.Get("flattened") == "" { // look at all item entries
-		mname := "member"
-		if name := tag.Get("locationNameList"); name != "" {
-			mname = name
-		}
-
-		if Children, ok := node.Children[mname]; ok {
-			if r.IsNil() {
-				r.Set(reflect.MakeSlice(t, len(Children), len(Children)))
-			}
-
-			for i, c := range Children {
-				err := parse(r.Index(i), c, "")
-				if err != nil {
-					return err
-				}
-			}
-		}
-	} else { // flattened list means this is a single element
-		if r.IsNil() {
-			r.Set(reflect.MakeSlice(t, 0, 0))
-		}
-
-		childR := reflect.Zero(t.Elem())
-		r.Set(reflect.Append(r, childR))
-		err := parse(r.Index(r.Len()-1), node, "")
-		if err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode
-// will also be deserialized as map entries.
-func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	if r.IsNil() {
-		r.Set(reflect.MakeMap(r.Type()))
-	}
-
-	if tag.Get("flattened") == "" { // look at all child entries
-		for _, entry := range node.Children["entry"] {
-			parseMapEntry(r, entry, tag)
-		}
-	} else { // this element is itself an entry
-		parseMapEntry(r, node, tag)
-	}
-
-	return nil
-}
-
-// parseMapEntry deserializes a map entry from a XML node.
-func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	kname, vname := "key", "value"
-	if n := tag.Get("locationNameKey"); n != "" {
-		kname = n
-	}
-	if n := tag.Get("locationNameValue"); n != "" {
-		vname = n
-	}
-
-	keys, ok := node.Children[kname]
-	values := node.Children[vname]
-	if ok {
-		for i, key := range keys {
-			keyR := reflect.ValueOf(key.Text)
-			value := values[i]
-			valueR := reflect.New(r.Type().Elem()).Elem()
-
-			parse(valueR, value, "")
-			r.SetMapIndex(keyR, valueR)
-		}
-	}
-	return nil
-}
-
-// parseScaller deserializes an XMLNode value into a concrete type based on the
-// interface type of r.
-//
-// Error is returned if the deserialization fails due to invalid type conversion,
-// or unsupported interface type.
-func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
-	switch r.Interface().(type) {
-	case *string:
-		r.Set(reflect.ValueOf(&node.Text))
-		return nil
-	case []byte:
-		b, err := base64.StdEncoding.DecodeString(node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(b))
-	case *bool:
-		v, err := strconv.ParseBool(node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *int64:
-		v, err := strconv.ParseInt(node.Text, 10, 64)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *float64:
-		v, err := strconv.ParseFloat(node.Text, 64)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&v))
-	case *time.Time:
-		const ISO8601UTC = "2006-01-02T15:04:05Z"
-		t, err := time.Parse(ISO8601UTC, node.Text)
-		if err != nil {
-			return err
-		}
-		r.Set(reflect.ValueOf(&t))
-	default:
-		return fmt.Errorf("unsupported value: %v (%s)", r.Interface(), r.Type())
-	}
-	return nil
-}

+ 0 - 105
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go

@@ -1,105 +0,0 @@
-package xmlutil
-
-import (
-	"encoding/xml"
-	"io"
-	"sort"
-)
-
-// A XMLNode contains the values to be encoded or decoded.
-type XMLNode struct {
-	Name     xml.Name              `json:",omitempty"`
-	Children map[string][]*XMLNode `json:",omitempty"`
-	Text     string                `json:",omitempty"`
-	Attr     []xml.Attr            `json:",omitempty"`
-}
-
-// NewXMLElement returns a pointer to a new XMLNode initialized to default values.
-func NewXMLElement(name xml.Name) *XMLNode {
-	return &XMLNode{
-		Name:     name,
-		Children: map[string][]*XMLNode{},
-		Attr:     []xml.Attr{},
-	}
-}
-
-// AddChild adds child to the XMLNode.
-func (n *XMLNode) AddChild(child *XMLNode) {
-	if _, ok := n.Children[child.Name.Local]; !ok {
-		n.Children[child.Name.Local] = []*XMLNode{}
-	}
-	n.Children[child.Name.Local] = append(n.Children[child.Name.Local], child)
-}
-
-// XMLToStruct converts a xml.Decoder stream to XMLNode with nested values.
-func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) {
-	out := &XMLNode{}
-	for {
-		tok, err := d.Token()
-		if tok == nil || err == io.EOF {
-			break
-		}
-		if err != nil {
-			return out, err
-		}
-
-		switch typed := tok.(type) {
-		case xml.CharData:
-			out.Text = string(typed.Copy())
-		case xml.StartElement:
-			el := typed.Copy()
-			out.Attr = el.Attr
-			if out.Children == nil {
-				out.Children = map[string][]*XMLNode{}
-			}
-
-			name := typed.Name.Local
-			slice := out.Children[name]
-			if slice == nil {
-				slice = []*XMLNode{}
-			}
-			node, e := XMLToStruct(d, &el)
-			if e != nil {
-				return out, e
-			}
-			node.Name = typed.Name
-			slice = append(slice, node)
-			out.Children[name] = slice
-		case xml.EndElement:
-			if s != nil && s.Name.Local == typed.Name.Local { // matching end token
-				return out, nil
-			}
-		}
-	}
-	return out, nil
-}
-
-// StructToXML writes an XMLNode to a xml.Encoder as tokens.
-func StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error {
-	e.EncodeToken(xml.StartElement{Name: node.Name, Attr: node.Attr})
-
-	if node.Text != "" {
-		e.EncodeToken(xml.CharData([]byte(node.Text)))
-	} else if sorted {
-		sortedNames := []string{}
-		for k := range node.Children {
-			sortedNames = append(sortedNames, k)
-		}
-		sort.Strings(sortedNames)
-
-		for _, k := range sortedNames {
-			for _, v := range node.Children[k] {
-				StructToXML(e, v, sorted)
-			}
-		}
-	} else {
-		for _, c := range node.Children {
-			for _, v := range c {
-				StructToXML(e, v, sorted)
-			}
-		}
-	}
-
-	e.EncodeToken(xml.EndElement{Name: node.Name})
-	return e.Flush()
-}

+ 0 - 42
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/functional_test.go

@@ -1,42 +0,0 @@
-package v4_test
-
-import (
-	"net/url"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/awstesting/unit"
-	"github.com/aws/aws-sdk-go/service/s3"
-)
-
-func TestPresignHandler(t *testing.T) {
-	svc := s3.New(unit.Session)
-	req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
-		Bucket:             aws.String("bucket"),
-		Key:                aws.String("key"),
-		ContentDisposition: aws.String("a+b c$d"),
-		ACL:                aws.String("public-read"),
-	})
-	req.Time = time.Unix(0, 0)
-	urlstr, err := req.Presign(5 * time.Minute)
-
-	assert.NoError(t, err)
-
-	expectedDate := "19700101T000000Z"
-	expectedHeaders := "host;x-amz-acl"
-	expectedSig := "7edcb4e3a1bf12f4989018d75acbe3a7f03df24bd6f3112602d59fc551f0e4e2"
-	expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
-
-	u, _ := url.Parse(urlstr)
-	urlQ := u.Query()
-	assert.Equal(t, expectedSig, urlQ.Get("X-Amz-Signature"))
-	assert.Equal(t, expectedCred, urlQ.Get("X-Amz-Credential"))
-	assert.Equal(t, expectedHeaders, urlQ.Get("X-Amz-SignedHeaders"))
-	assert.Equal(t, expectedDate, urlQ.Get("X-Amz-Date"))
-	assert.Equal(t, "300", urlQ.Get("X-Amz-Expires"))
-
-	assert.NotContains(t, urlstr, "+") // + encoded as %20
-}

+ 0 - 365
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/v4.go

@@ -1,365 +0,0 @@
-// Package v4 implements signing for AWS V4 signer
-package v4
-
-import (
-	"crypto/hmac"
-	"crypto/sha256"
-	"encoding/hex"
-	"fmt"
-	"io"
-	"net/http"
-	"net/url"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/rest"
-)
-
-const (
-	authHeaderPrefix = "AWS4-HMAC-SHA256"
-	timeFormat       = "20060102T150405Z"
-	shortTimeFormat  = "20060102"
-)
-
-var ignoredHeaders = map[string]bool{
-	"Authorization":  true,
-	"Content-Type":   true,
-	"Content-Length": true,
-	"User-Agent":     true,
-}
-
-type signer struct {
-	Request     *http.Request
-	Time        time.Time
-	ExpireTime  time.Duration
-	ServiceName string
-	Region      string
-	CredValues  credentials.Value
-	Credentials *credentials.Credentials
-	Query       url.Values
-	Body        io.ReadSeeker
-	Debug       aws.LogLevelType
-	Logger      aws.Logger
-
-	isPresign          bool
-	formattedTime      string
-	formattedShortTime string
-
-	signedHeaders    string
-	canonicalHeaders string
-	canonicalString  string
-	credentialString string
-	stringToSign     string
-	signature        string
-	authorization    string
-}
-
-// Sign requests with signature version 4.
-//
-// Will sign the requests with the service config's Credentials object
-// Signing is skipped if the credentials is the credentials.AnonymousCredentials
-// object.
-func Sign(req *request.Request) {
-	// If the request does not need to be signed ignore the signing of the
-	// request if the AnonymousCredentials object is used.
-	if req.Config.Credentials == credentials.AnonymousCredentials {
-		return
-	}
-
-	region := req.ClientInfo.SigningRegion
-	if region == "" {
-		region = aws.StringValue(req.Config.Region)
-	}
-
-	name := req.ClientInfo.SigningName
-	if name == "" {
-		name = req.ClientInfo.ServiceName
-	}
-
-	s := signer{
-		Request:     req.HTTPRequest,
-		Time:        req.Time,
-		ExpireTime:  req.ExpireTime,
-		Query:       req.HTTPRequest.URL.Query(),
-		Body:        req.Body,
-		ServiceName: name,
-		Region:      region,
-		Credentials: req.Config.Credentials,
-		Debug:       req.Config.LogLevel.Value(),
-		Logger:      req.Config.Logger,
-	}
-
-	req.Error = s.sign()
-}
-
-func (v4 *signer) sign() error {
-	if v4.ExpireTime != 0 {
-		v4.isPresign = true
-	}
-
-	if v4.isRequestSigned() {
-		if !v4.Credentials.IsExpired() {
-			// If the request is already signed, and the credentials have not
-			// expired yet ignore the signing request.
-			return nil
-		}
-
-		// The credentials have expired for this request. The current signing
-		// is invalid, and needs to be request because the request will fail.
-		if v4.isPresign {
-			v4.removePresign()
-			// Update the request's query string to ensure the values stays in
-			// sync in the case retrieving the new credentials fails.
-			v4.Request.URL.RawQuery = v4.Query.Encode()
-		}
-	}
-
-	var err error
-	v4.CredValues, err = v4.Credentials.Get()
-	if err != nil {
-		return err
-	}
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-Algorithm", authHeaderPrefix)
-		if v4.CredValues.SessionToken != "" {
-			v4.Query.Set("X-Amz-Security-Token", v4.CredValues.SessionToken)
-		} else {
-			v4.Query.Del("X-Amz-Security-Token")
-		}
-	} else if v4.CredValues.SessionToken != "" {
-		v4.Request.Header.Set("X-Amz-Security-Token", v4.CredValues.SessionToken)
-	}
-
-	v4.build()
-
-	if v4.Debug.Matches(aws.LogDebugWithSigning) {
-		v4.logSigningInfo()
-	}
-
-	return nil
-}
-
-const logSignInfoMsg = `DEBUG: Request Signiture:
----[ CANONICAL STRING  ]-----------------------------
-%s
----[ STRING TO SIGN ]--------------------------------
-%s%s
------------------------------------------------------`
-const logSignedURLMsg = `
----[ SIGNED URL ]------------------------------------
-%s`
-
-func (v4 *signer) logSigningInfo() {
-	signedURLMsg := ""
-	if v4.isPresign {
-		signedURLMsg = fmt.Sprintf(logSignedURLMsg, v4.Request.URL.String())
-	}
-	msg := fmt.Sprintf(logSignInfoMsg, v4.canonicalString, v4.stringToSign, signedURLMsg)
-	v4.Logger.Log(msg)
-}
-
-func (v4 *signer) build() {
-	v4.buildTime()             // no depends
-	v4.buildCredentialString() // no depends
-	if v4.isPresign {
-		v4.buildQuery() // no depends
-	}
-	v4.buildCanonicalHeaders() // depends on cred string
-	v4.buildCanonicalString()  // depends on canon headers / signed headers
-	v4.buildStringToSign()     // depends on canon string
-	v4.buildSignature()        // depends on string to sign
-
-	if v4.isPresign {
-		v4.Request.URL.RawQuery += "&X-Amz-Signature=" + v4.signature
-	} else {
-		parts := []string{
-			authHeaderPrefix + " Credential=" + v4.CredValues.AccessKeyID + "/" + v4.credentialString,
-			"SignedHeaders=" + v4.signedHeaders,
-			"Signature=" + v4.signature,
-		}
-		v4.Request.Header.Set("Authorization", strings.Join(parts, ", "))
-	}
-}
-
-func (v4 *signer) buildTime() {
-	v4.formattedTime = v4.Time.UTC().Format(timeFormat)
-	v4.formattedShortTime = v4.Time.UTC().Format(shortTimeFormat)
-
-	if v4.isPresign {
-		duration := int64(v4.ExpireTime / time.Second)
-		v4.Query.Set("X-Amz-Date", v4.formattedTime)
-		v4.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10))
-	} else {
-		v4.Request.Header.Set("X-Amz-Date", v4.formattedTime)
-	}
-}
-
-func (v4 *signer) buildCredentialString() {
-	v4.credentialString = strings.Join([]string{
-		v4.formattedShortTime,
-		v4.Region,
-		v4.ServiceName,
-		"aws4_request",
-	}, "/")
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-Credential", v4.CredValues.AccessKeyID+"/"+v4.credentialString)
-	}
-}
-
-func (v4 *signer) buildQuery() {
-	for k, h := range v4.Request.Header {
-		if strings.HasPrefix(http.CanonicalHeaderKey(k), "X-Amz-") {
-			continue // never hoist x-amz-* headers, they must be signed
-		}
-		if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok {
-			continue // never hoist ignored headers
-		}
-
-		v4.Request.Header.Del(k)
-		v4.Query.Del(k)
-		for _, v := range h {
-			v4.Query.Add(k, v)
-		}
-	}
-}
-
-func (v4 *signer) buildCanonicalHeaders() {
-	var headers []string
-	headers = append(headers, "host")
-	for k := range v4.Request.Header {
-		if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok {
-			continue // ignored header
-		}
-		headers = append(headers, strings.ToLower(k))
-	}
-	sort.Strings(headers)
-
-	v4.signedHeaders = strings.Join(headers, ";")
-
-	if v4.isPresign {
-		v4.Query.Set("X-Amz-SignedHeaders", v4.signedHeaders)
-	}
-
-	headerValues := make([]string, len(headers))
-	for i, k := range headers {
-		if k == "host" {
-			headerValues[i] = "host:" + v4.Request.URL.Host
-		} else {
-			headerValues[i] = k + ":" +
-				strings.Join(v4.Request.Header[http.CanonicalHeaderKey(k)], ",")
-		}
-	}
-
-	v4.canonicalHeaders = strings.Join(headerValues, "\n")
-}
-
-func (v4 *signer) buildCanonicalString() {
-	v4.Request.URL.RawQuery = strings.Replace(v4.Query.Encode(), "+", "%20", -1)
-	uri := v4.Request.URL.Opaque
-	if uri != "" {
-		uri = "/" + strings.Join(strings.Split(uri, "/")[3:], "/")
-	} else {
-		uri = v4.Request.URL.Path
-	}
-	if uri == "" {
-		uri = "/"
-	}
-
-	if v4.ServiceName != "s3" {
-		uri = rest.EscapePath(uri, false)
-	}
-
-	v4.canonicalString = strings.Join([]string{
-		v4.Request.Method,
-		uri,
-		v4.Request.URL.RawQuery,
-		v4.canonicalHeaders + "\n",
-		v4.signedHeaders,
-		v4.bodyDigest(),
-	}, "\n")
-}
-
-func (v4 *signer) buildStringToSign() {
-	v4.stringToSign = strings.Join([]string{
-		authHeaderPrefix,
-		v4.formattedTime,
-		v4.credentialString,
-		hex.EncodeToString(makeSha256([]byte(v4.canonicalString))),
-	}, "\n")
-}
-
-func (v4 *signer) buildSignature() {
-	secret := v4.CredValues.SecretAccessKey
-	date := makeHmac([]byte("AWS4"+secret), []byte(v4.formattedShortTime))
-	region := makeHmac(date, []byte(v4.Region))
-	service := makeHmac(region, []byte(v4.ServiceName))
-	credentials := makeHmac(service, []byte("aws4_request"))
-	signature := makeHmac(credentials, []byte(v4.stringToSign))
-	v4.signature = hex.EncodeToString(signature)
-}
-
-func (v4 *signer) bodyDigest() string {
-	hash := v4.Request.Header.Get("X-Amz-Content-Sha256")
-	if hash == "" {
-		if v4.isPresign && v4.ServiceName == "s3" {
-			hash = "UNSIGNED-PAYLOAD"
-		} else if v4.Body == nil {
-			hash = hex.EncodeToString(makeSha256([]byte{}))
-		} else {
-			hash = hex.EncodeToString(makeSha256Reader(v4.Body))
-		}
-		v4.Request.Header.Add("X-Amz-Content-Sha256", hash)
-	}
-	return hash
-}
-
-// isRequestSigned returns if the request is currently signed or presigned
-func (v4 *signer) isRequestSigned() bool {
-	if v4.isPresign && v4.Query.Get("X-Amz-Signature") != "" {
-		return true
-	}
-	if v4.Request.Header.Get("Authorization") != "" {
-		return true
-	}
-
-	return false
-}
-
-// unsign removes signing flags for both signed and presigned requests.
-func (v4 *signer) removePresign() {
-	v4.Query.Del("X-Amz-Algorithm")
-	v4.Query.Del("X-Amz-Signature")
-	v4.Query.Del("X-Amz-Security-Token")
-	v4.Query.Del("X-Amz-Date")
-	v4.Query.Del("X-Amz-Expires")
-	v4.Query.Del("X-Amz-Credential")
-	v4.Query.Del("X-Amz-SignedHeaders")
-}
-
-func makeHmac(key []byte, data []byte) []byte {
-	hash := hmac.New(sha256.New, key)
-	hash.Write(data)
-	return hash.Sum(nil)
-}
-
-func makeSha256(data []byte) []byte {
-	hash := sha256.New()
-	hash.Write(data)
-	return hash.Sum(nil)
-}
-
-func makeSha256Reader(reader io.ReadSeeker) []byte {
-	hash := sha256.New()
-	start, _ := reader.Seek(0, 1)
-	defer reader.Seek(start, 0)
-
-	io.Copy(hash, reader)
-	return hash.Sum(nil)
-}

+ 0 - 252
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/signer/v4/v4_test.go

@@ -1,252 +0,0 @@
-package v4
-
-import (
-	"net/http"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/credentials"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/awstesting"
-)
-
-func buildSigner(serviceName string, region string, signTime time.Time, expireTime time.Duration, body string) signer {
-	endpoint := "https://" + serviceName + "." + region + ".amazonaws.com"
-	reader := strings.NewReader(body)
-	req, _ := http.NewRequest("POST", endpoint, reader)
-	req.URL.Opaque = "//example.org/bucket/key-._~,!@#$%^&*()"
-	req.Header.Add("X-Amz-Target", "prefix.Operation")
-	req.Header.Add("Content-Type", "application/x-amz-json-1.0")
-	req.Header.Add("Content-Length", string(len(body)))
-	req.Header.Add("X-Amz-Meta-Other-Header", "some-value=!@#$%^&* (+)")
-
-	return signer{
-		Request:     req,
-		Time:        signTime,
-		ExpireTime:  expireTime,
-		Query:       req.URL.Query(),
-		Body:        reader,
-		ServiceName: serviceName,
-		Region:      region,
-		Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-	}
-}
-
-func removeWS(text string) string {
-	text = strings.Replace(text, " ", "", -1)
-	text = strings.Replace(text, "\n", "", -1)
-	text = strings.Replace(text, "\t", "", -1)
-	return text
-}
-
-func assertEqual(t *testing.T, expected, given string) {
-	if removeWS(expected) != removeWS(given) {
-		t.Errorf("\nExpected: %s\nGiven:    %s", expected, given)
-	}
-}
-
-func TestPresignRequest(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 300*time.Second, "{}")
-	signer.sign()
-
-	expectedDate := "19700101T000000Z"
-	expectedHeaders := "host;x-amz-meta-other-header;x-amz-target"
-	expectedSig := "5eeedebf6f995145ce56daa02902d10485246d3defb34f97b973c1f40ab82d36"
-	expectedCred := "AKID/19700101/us-east-1/dynamodb/aws4_request"
-
-	q := signer.Request.URL.Query()
-	assert.Equal(t, expectedSig, q.Get("X-Amz-Signature"))
-	assert.Equal(t, expectedCred, q.Get("X-Amz-Credential"))
-	assert.Equal(t, expectedHeaders, q.Get("X-Amz-SignedHeaders"))
-	assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
-}
-
-func TestSignRequest(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 0, "{}")
-	signer.sign()
-
-	expectedDate := "19700101T000000Z"
-	expectedSig := "AWS4-HMAC-SHA256 Credential=AKID/19700101/us-east-1/dynamodb/aws4_request, SignedHeaders=host;x-amz-date;x-amz-meta-other-header;x-amz-security-token;x-amz-target, Signature=69ada33fec48180dab153576e4dd80c4e04124f80dda3eccfed8a67c2b91ed5e"
-
-	q := signer.Request.Header
-	assert.Equal(t, expectedSig, q.Get("Authorization"))
-	assert.Equal(t, expectedDate, q.Get("X-Amz-Date"))
-}
-
-func TestSignEmptyBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "")
-	signer.Body = nil
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", hash)
-}
-
-func TestSignBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
-}
-
-func TestSignSeekedBody(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "   hello")
-	signer.Body.Read(make([]byte, 3)) // consume first 3 bytes so body is now "hello"
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash)
-
-	start, _ := signer.Body.Seek(0, 1)
-	assert.Equal(t, int64(3), start)
-}
-
-func TestPresignEmptyBodyS3(t *testing.T) {
-	signer := buildSigner("s3", "us-east-1", time.Now(), 5*time.Minute, "hello")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "UNSIGNED-PAYLOAD", hash)
-}
-
-func TestSignPrecomputedBodyChecksum(t *testing.T) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello")
-	signer.Request.Header.Set("X-Amz-Content-Sha256", "PRECOMPUTED")
-	signer.sign()
-	hash := signer.Request.Header.Get("X-Amz-Content-Sha256")
-	assert.Equal(t, "PRECOMPUTED", hash)
-}
-
-func TestAnonymousCredentials(t *testing.T) {
-	svc := awstesting.NewClient(&aws.Config{Credentials: credentials.AnonymousCredentials})
-	r := svc.NewRequest(
-		&request.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	Sign(r)
-
-	urlQ := r.HTTPRequest.URL.Query()
-	assert.Empty(t, urlQ.Get("X-Amz-Signature"))
-	assert.Empty(t, urlQ.Get("X-Amz-Credential"))
-	assert.Empty(t, urlQ.Get("X-Amz-SignedHeaders"))
-	assert.Empty(t, urlQ.Get("X-Amz-Date"))
-
-	hQ := r.HTTPRequest.Header
-	assert.Empty(t, hQ.Get("Authorization"))
-	assert.Empty(t, hQ.Get("X-Amz-Date"))
-}
-
-func TestIgnoreResignRequestWithValidCreds(t *testing.T) {
-	svc := awstesting.NewClient(&aws.Config{
-		Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-		Region:      aws.String("us-west-2"),
-	})
-	r := svc.NewRequest(
-		&request.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-
-	Sign(r)
-	sig := r.HTTPRequest.Header.Get("Authorization")
-
-	Sign(r)
-	assert.Equal(t, sig, r.HTTPRequest.Header.Get("Authorization"))
-}
-
-func TestIgnorePreResignRequestWithValidCreds(t *testing.T) {
-	svc := awstesting.NewClient(&aws.Config{
-		Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"),
-		Region:      aws.String("us-west-2"),
-	})
-	r := svc.NewRequest(
-		&request.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	r.ExpireTime = time.Minute * 10
-
-	Sign(r)
-	sig := r.HTTPRequest.Header.Get("X-Amz-Signature")
-
-	Sign(r)
-	assert.Equal(t, sig, r.HTTPRequest.Header.Get("X-Amz-Signature"))
-}
-
-func TestResignRequestExpiredCreds(t *testing.T) {
-	creds := credentials.NewStaticCredentials("AKID", "SECRET", "SESSION")
-	svc := awstesting.NewClient(&aws.Config{Credentials: creds})
-	r := svc.NewRequest(
-		&request.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	Sign(r)
-	querySig := r.HTTPRequest.Header.Get("Authorization")
-
-	creds.Expire()
-
-	Sign(r)
-	assert.NotEqual(t, querySig, r.HTTPRequest.Header.Get("Authorization"))
-}
-
-func TestPreResignRequestExpiredCreds(t *testing.T) {
-	provider := &credentials.StaticProvider{Value: credentials.Value{
-		AccessKeyID:     "AKID",
-		SecretAccessKey: "SECRET",
-		SessionToken:    "SESSION",
-	}}
-	creds := credentials.NewCredentials(provider)
-	svc := awstesting.NewClient(&aws.Config{Credentials: creds})
-	r := svc.NewRequest(
-		&request.Operation{
-			Name:       "BatchGetItem",
-			HTTPMethod: "POST",
-			HTTPPath:   "/",
-		},
-		nil,
-		nil,
-	)
-	r.ExpireTime = time.Minute * 10
-
-	Sign(r)
-	querySig := r.HTTPRequest.URL.Query().Get("X-Amz-Signature")
-
-	creds.Expire()
-	r.Time = time.Now().Add(time.Hour * 48)
-
-	Sign(r)
-	assert.NotEqual(t, querySig, r.HTTPRequest.URL.Query().Get("X-Amz-Signature"))
-}
-
-func BenchmarkPresignRequest(b *testing.B) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 300*time.Second, "{}")
-	for i := 0; i < b.N; i++ {
-		signer.sign()
-	}
-}
-
-func BenchmarkSignRequest(b *testing.B) {
-	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "{}")
-	for i := 0; i < b.N; i++ {
-		signer.sign()
-	}
-}

+ 0 - 136
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/waiter/waiter.go

@@ -1,136 +0,0 @@
-package waiter
-
-import (
-	"fmt"
-	"reflect"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/awsutil"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-// A Config provides a collection of configuration values to setup a generated
-// waiter code with.
-type Config struct {
-	Name        string
-	Delay       int
-	MaxAttempts int
-	Operation   string
-	Acceptors   []WaitAcceptor
-}
-
-// A WaitAcceptor provides the information needed to wait for an API operation
-// to complete.
-type WaitAcceptor struct {
-	Expected interface{}
-	Matcher  string
-	State    string
-	Argument string
-}
-
-// A Waiter provides waiting for an operation to complete.
-type Waiter struct {
-	Config
-	Client interface{}
-	Input  interface{}
-}
-
-// Wait waits for an operation to complete, expire max attempts, or fail. Error
-// is returned if the operation fails.
-func (w *Waiter) Wait() error {
-	client := reflect.ValueOf(w.Client)
-	in := reflect.ValueOf(w.Input)
-	method := client.MethodByName(w.Config.Operation + "Request")
-
-	for i := 0; i < w.MaxAttempts; i++ {
-		res := method.Call([]reflect.Value{in})
-		req := res[0].Interface().(*request.Request)
-		req.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Waiter"))
-
-		err := req.Send()
-		for _, a := range w.Acceptors {
-			if err != nil && a.Matcher != "error" {
-				// Only matcher error is valid if there is a request error
-				continue
-			}
-
-			result := false
-			var vals []interface{}
-			switch a.Matcher {
-			case "pathAll", "path":
-				// Require all matches to be equal for result to match
-				vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument)
-				result = true
-				for _, val := range vals {
-					if !awsutil.DeepEqual(val, a.Expected) {
-						result = false
-						break
-					}
-				}
-			case "pathAny":
-				// Only a single match needs to equal for the result to match
-				vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument)
-				for _, val := range vals {
-					if awsutil.DeepEqual(val, a.Expected) {
-						result = true
-						break
-					}
-				}
-			case "status":
-				s := a.Expected.(int)
-				result = s == req.HTTPResponse.StatusCode
-			case "error":
-				if aerr, ok := err.(awserr.Error); ok {
-					result = aerr.Code() == a.Expected.(string)
-				}
-			case "pathList":
-				// ignored matcher
-			default:
-				logf(client, "WARNING: Waiter for %s encountered unexpected matcher: %s",
-					w.Config.Operation, a.Matcher)
-			}
-
-			if !result {
-				// If there was no matching result found there is nothing more to do
-				// for this response, retry the request.
-				continue
-			}
-
-			switch a.State {
-			case "success":
-				// waiter completed
-				return nil
-			case "failure":
-				// Waiter failure state triggered
-				return awserr.New("ResourceNotReady",
-					fmt.Sprintf("failed waiting for successful resource state"), err)
-			case "retry":
-				// clear the error and retry the operation
-				err = nil
-			default:
-				logf(client, "WARNING: Waiter for %s encountered unexpected state: %s",
-					w.Config.Operation, a.State)
-			}
-		}
-		if err != nil {
-			return err
-		}
-
-		time.Sleep(time.Second * time.Duration(w.Delay))
-	}
-
-	return awserr.New("ResourceNotReady",
-		fmt.Sprintf("exceeded %d wait attempts", w.MaxAttempts), nil)
-}
-
-func logf(client reflect.Value, msg string, args ...interface{}) {
-	cfgVal := client.FieldByName("Config")
-	if !cfgVal.IsValid() {
-		return
-	}
-	if cfg, ok := cfgVal.Interface().(*aws.Config); ok && cfg.Logger != nil {
-		cfg.Logger.Log(fmt.Sprintf(msg, args...))
-	}
-}

+ 0 - 391
Godeps/_workspace/src/github.com/aws/aws-sdk-go/private/waiter/waiter_test.go

@@ -1,391 +0,0 @@
-package waiter_test
-
-import (
-	"bytes"
-	"io/ioutil"
-	"net/http"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/awserr"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/awstesting"
-	"github.com/aws/aws-sdk-go/private/waiter"
-)
-
-type mockClient struct {
-	*client.Client
-}
-type MockInput struct{}
-type MockOutput struct {
-	States []*MockState
-}
-type MockState struct {
-	State *string
-}
-
-func (c *mockClient) MockRequest(input *MockInput) (*request.Request, *MockOutput) {
-	op := &request.Operation{
-		Name:       "Mock",
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &MockInput{}
-	}
-
-	output := &MockOutput{}
-	req := c.NewRequest(op, input, output)
-	req.Data = output
-	return req, output
-}
-
-func TestWaiterPathAll(t *testing.T) {
-	svc := &mockClient{Client: awstesting.NewClient(&aws.Config{
-		Region: aws.String("mock-region"),
-	})}
-	svc.Handlers.Send.Clear() // mock sending
-	svc.Handlers.Unmarshal.Clear()
-	svc.Handlers.UnmarshalMeta.Clear()
-	svc.Handlers.ValidateResponse.Clear()
-
-	reqNum := 0
-	resps := []*MockOutput{
-		{ // Request 1
-			States: []*MockState{
-				{State: aws.String("pending")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 2
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 3
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("running")},
-			},
-		},
-	}
-
-	numBuiltReq := 0
-	svc.Handlers.Build.PushBack(func(r *request.Request) {
-		numBuiltReq++
-	})
-	svc.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		if reqNum >= len(resps) {
-			assert.Fail(t, "too many polling requests made")
-			return
-		}
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	waiterCfg := waiter.Config{
-		Operation:   "Mock",
-		Delay:       0,
-		MaxAttempts: 10,
-		Acceptors: []waiter.WaitAcceptor{
-			{
-				State:    "success",
-				Matcher:  "pathAll",
-				Argument: "States[].State",
-				Expected: "running",
-			},
-		},
-	}
-	w := waiter.Waiter{
-		Client: svc,
-		Input:  &MockInput{},
-		Config: waiterCfg,
-	}
-
-	err := w.Wait()
-	assert.NoError(t, err)
-	assert.Equal(t, 3, numBuiltReq)
-	assert.Equal(t, 3, reqNum)
-}
-
-func TestWaiterPath(t *testing.T) {
-	svc := &mockClient{Client: awstesting.NewClient(&aws.Config{
-		Region: aws.String("mock-region"),
-	})}
-	svc.Handlers.Send.Clear() // mock sending
-	svc.Handlers.Unmarshal.Clear()
-	svc.Handlers.UnmarshalMeta.Clear()
-	svc.Handlers.ValidateResponse.Clear()
-
-	reqNum := 0
-	resps := []*MockOutput{
-		{ // Request 1
-			States: []*MockState{
-				{State: aws.String("pending")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 2
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 3
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("running")},
-			},
-		},
-	}
-
-	numBuiltReq := 0
-	svc.Handlers.Build.PushBack(func(r *request.Request) {
-		numBuiltReq++
-	})
-	svc.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		if reqNum >= len(resps) {
-			assert.Fail(t, "too many polling requests made")
-			return
-		}
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	waiterCfg := waiter.Config{
-		Operation:   "Mock",
-		Delay:       0,
-		MaxAttempts: 10,
-		Acceptors: []waiter.WaitAcceptor{
-			{
-				State:    "success",
-				Matcher:  "path",
-				Argument: "States[].State",
-				Expected: "running",
-			},
-		},
-	}
-	w := waiter.Waiter{
-		Client: svc,
-		Input:  &MockInput{},
-		Config: waiterCfg,
-	}
-
-	err := w.Wait()
-	assert.NoError(t, err)
-	assert.Equal(t, 3, numBuiltReq)
-	assert.Equal(t, 3, reqNum)
-}
-
-func TestWaiterFailure(t *testing.T) {
-	svc := &mockClient{Client: awstesting.NewClient(&aws.Config{
-		Region: aws.String("mock-region"),
-	})}
-	svc.Handlers.Send.Clear() // mock sending
-	svc.Handlers.Unmarshal.Clear()
-	svc.Handlers.UnmarshalMeta.Clear()
-	svc.Handlers.ValidateResponse.Clear()
-
-	reqNum := 0
-	resps := []*MockOutput{
-		{ // Request 1
-			States: []*MockState{
-				{State: aws.String("pending")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 2
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 3
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("stopping")},
-			},
-		},
-	}
-
-	numBuiltReq := 0
-	svc.Handlers.Build.PushBack(func(r *request.Request) {
-		numBuiltReq++
-	})
-	svc.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		if reqNum >= len(resps) {
-			assert.Fail(t, "too many polling requests made")
-			return
-		}
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	waiterCfg := waiter.Config{
-		Operation:   "Mock",
-		Delay:       0,
-		MaxAttempts: 10,
-		Acceptors: []waiter.WaitAcceptor{
-			{
-				State:    "success",
-				Matcher:  "pathAll",
-				Argument: "States[].State",
-				Expected: "running",
-			},
-			{
-				State:    "failure",
-				Matcher:  "pathAny",
-				Argument: "States[].State",
-				Expected: "stopping",
-			},
-		},
-	}
-	w := waiter.Waiter{
-		Client: svc,
-		Input:  &MockInput{},
-		Config: waiterCfg,
-	}
-
-	err := w.Wait().(awserr.Error)
-	assert.Error(t, err)
-	assert.Equal(t, "ResourceNotReady", err.Code())
-	assert.Equal(t, "failed waiting for successful resource state", err.Message())
-	assert.Equal(t, 3, numBuiltReq)
-	assert.Equal(t, 3, reqNum)
-}
-
-func TestWaiterError(t *testing.T) {
-	svc := &mockClient{Client: awstesting.NewClient(&aws.Config{
-		Region: aws.String("mock-region"),
-	})}
-	svc.Handlers.Send.Clear() // mock sending
-	svc.Handlers.Unmarshal.Clear()
-	svc.Handlers.UnmarshalMeta.Clear()
-	svc.Handlers.ValidateResponse.Clear()
-
-	reqNum := 0
-	resps := []*MockOutput{
-		{ // Request 1
-			States: []*MockState{
-				{State: aws.String("pending")},
-				{State: aws.String("pending")},
-			},
-		},
-		{ // Request 2, error case
-		},
-		{ // Request 3
-			States: []*MockState{
-				{State: aws.String("running")},
-				{State: aws.String("running")},
-			},
-		},
-	}
-
-	numBuiltReq := 0
-	svc.Handlers.Build.PushBack(func(r *request.Request) {
-		numBuiltReq++
-	})
-	svc.Handlers.Send.PushBack(func(r *request.Request) {
-		if reqNum == 1 {
-			r.Error = awserr.New("MockException", "mock exception message", nil)
-			r.HTTPResponse = &http.Response{
-				StatusCode: 400,
-				Status:     http.StatusText(400),
-				Body:       ioutil.NopCloser(bytes.NewReader([]byte{})),
-			}
-			reqNum++
-		}
-	})
-	svc.Handlers.Unmarshal.PushBack(func(r *request.Request) {
-		if reqNum >= len(resps) {
-			assert.Fail(t, "too many polling requests made")
-			return
-		}
-		r.Data = resps[reqNum]
-		reqNum++
-	})
-
-	waiterCfg := waiter.Config{
-		Operation:   "Mock",
-		Delay:       0,
-		MaxAttempts: 10,
-		Acceptors: []waiter.WaitAcceptor{
-			{
-				State:    "success",
-				Matcher:  "pathAll",
-				Argument: "States[].State",
-				Expected: "running",
-			},
-			{
-				State:    "retry",
-				Matcher:  "error",
-				Argument: "",
-				Expected: "MockException",
-			},
-		},
-	}
-	w := waiter.Waiter{
-		Client: svc,
-		Input:  &MockInput{},
-		Config: waiterCfg,
-	}
-
-	err := w.Wait()
-	assert.NoError(t, err)
-	assert.Equal(t, 3, numBuiltReq)
-	assert.Equal(t, 3, reqNum)
-}
-
-func TestWaiterStatus(t *testing.T) {
-	svc := &mockClient{Client: awstesting.NewClient(&aws.Config{
-		Region: aws.String("mock-region"),
-	})}
-	svc.Handlers.Send.Clear() // mock sending
-	svc.Handlers.Unmarshal.Clear()
-	svc.Handlers.UnmarshalMeta.Clear()
-	svc.Handlers.ValidateResponse.Clear()
-
-	reqNum := 0
-	svc.Handlers.Build.PushBack(func(r *request.Request) {
-		reqNum++
-	})
-	svc.Handlers.Send.PushBack(func(r *request.Request) {
-		code := 200
-		if reqNum == 3 {
-			code = 404
-		}
-		r.HTTPResponse = &http.Response{
-			StatusCode: code,
-			Status:     http.StatusText(code),
-			Body:       ioutil.NopCloser(bytes.NewReader([]byte{})),
-		}
-	})
-
-	waiterCfg := waiter.Config{
-		Operation:   "Mock",
-		Delay:       0,
-		MaxAttempts: 10,
-		Acceptors: []waiter.WaitAcceptor{
-			{
-				State:    "success",
-				Matcher:  "status",
-				Argument: "",
-				Expected: 404,
-			},
-		},
-	}
-	w := waiter.Waiter{
-		Client: svc,
-		Input:  &MockInput{},
-		Config: waiterCfg,
-	}
-
-	err := w.Wait()
-	assert.NoError(t, err)
-	assert.Equal(t, 3, reqNum)
-}

+ 0 - 1481
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/api.go

@@ -1,1481 +0,0 @@
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-// Package cloudwatch provides a client for Amazon CloudWatch.
-package cloudwatch
-
-import (
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/awsutil"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-const opDeleteAlarms = "DeleteAlarms"
-
-// DeleteAlarmsRequest generates a request for the DeleteAlarms operation.
-func (c *CloudWatch) DeleteAlarmsRequest(input *DeleteAlarmsInput) (req *request.Request, output *DeleteAlarmsOutput) {
-	op := &request.Operation{
-		Name:       opDeleteAlarms,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteAlarmsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteAlarmsOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes all specified alarms. In the event of an error, no alarms are deleted.
-func (c *CloudWatch) DeleteAlarms(input *DeleteAlarmsInput) (*DeleteAlarmsOutput, error) {
-	req, out := c.DeleteAlarmsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeAlarmHistory = "DescribeAlarmHistory"
-
-// DescribeAlarmHistoryRequest generates a request for the DescribeAlarmHistory operation.
-func (c *CloudWatch) DescribeAlarmHistoryRequest(input *DescribeAlarmHistoryInput) (req *request.Request, output *DescribeAlarmHistoryOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAlarmHistory,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxRecords",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeAlarmHistoryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAlarmHistoryOutput{}
-	req.Data = output
-	return
-}
-
-// Retrieves history for the specified alarm. Filter alarms by date range or
-// item type. If an alarm name is not specified, Amazon CloudWatch returns histories
-// for all of the owner's alarms.
-func (c *CloudWatch) DescribeAlarmHistory(input *DescribeAlarmHistoryInput) (*DescribeAlarmHistoryOutput, error) {
-	req, out := c.DescribeAlarmHistoryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *CloudWatch) DescribeAlarmHistoryPages(input *DescribeAlarmHistoryInput, fn func(p *DescribeAlarmHistoryOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeAlarmHistoryRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeAlarmHistoryOutput), lastPage)
-	})
-}
-
-const opDescribeAlarms = "DescribeAlarms"
-
-// DescribeAlarmsRequest generates a request for the DescribeAlarms operation.
-func (c *CloudWatch) DescribeAlarmsRequest(input *DescribeAlarmsInput) (req *request.Request, output *DescribeAlarmsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAlarms,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxRecords",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeAlarmsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAlarmsOutput{}
-	req.Data = output
-	return
-}
-
-// Retrieves alarms with the specified names. If no name is specified, all alarms
-// for the user are returned. Alarms can be retrieved by using only a prefix
-// for the alarm name, the alarm state, or a prefix for any action.
-func (c *CloudWatch) DescribeAlarms(input *DescribeAlarmsInput) (*DescribeAlarmsOutput, error) {
-	req, out := c.DescribeAlarmsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *CloudWatch) DescribeAlarmsPages(input *DescribeAlarmsInput, fn func(p *DescribeAlarmsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeAlarmsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeAlarmsOutput), lastPage)
-	})
-}
-
-const opDescribeAlarmsForMetric = "DescribeAlarmsForMetric"
-
-// DescribeAlarmsForMetricRequest generates a request for the DescribeAlarmsForMetric operation.
-func (c *CloudWatch) DescribeAlarmsForMetricRequest(input *DescribeAlarmsForMetricInput) (req *request.Request, output *DescribeAlarmsForMetricOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAlarmsForMetric,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeAlarmsForMetricInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAlarmsForMetricOutput{}
-	req.Data = output
-	return
-}
-
-// Retrieves all alarms for a single metric. Specify a statistic, period, or
-// unit to filter the set of alarms further.
-func (c *CloudWatch) DescribeAlarmsForMetric(input *DescribeAlarmsForMetricInput) (*DescribeAlarmsForMetricOutput, error) {
-	req, out := c.DescribeAlarmsForMetricRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDisableAlarmActions = "DisableAlarmActions"
-
-// DisableAlarmActionsRequest generates a request for the DisableAlarmActions operation.
-func (c *CloudWatch) DisableAlarmActionsRequest(input *DisableAlarmActionsInput) (req *request.Request, output *DisableAlarmActionsOutput) {
-	op := &request.Operation{
-		Name:       opDisableAlarmActions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DisableAlarmActionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DisableAlarmActionsOutput{}
-	req.Data = output
-	return
-}
-
-// Disables actions for the specified alarms. When an alarm's actions are disabled
-// the alarm's state may change, but none of the alarm's actions will execute.
-func (c *CloudWatch) DisableAlarmActions(input *DisableAlarmActionsInput) (*DisableAlarmActionsOutput, error) {
-	req, out := c.DisableAlarmActionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opEnableAlarmActions = "EnableAlarmActions"
-
-// EnableAlarmActionsRequest generates a request for the EnableAlarmActions operation.
-func (c *CloudWatch) EnableAlarmActionsRequest(input *EnableAlarmActionsInput) (req *request.Request, output *EnableAlarmActionsOutput) {
-	op := &request.Operation{
-		Name:       opEnableAlarmActions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &EnableAlarmActionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &EnableAlarmActionsOutput{}
-	req.Data = output
-	return
-}
-
-// Enables actions for the specified alarms.
-func (c *CloudWatch) EnableAlarmActions(input *EnableAlarmActionsInput) (*EnableAlarmActionsOutput, error) {
-	req, out := c.EnableAlarmActionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opGetMetricStatistics = "GetMetricStatistics"
-
-// GetMetricStatisticsRequest generates a request for the GetMetricStatistics operation.
-func (c *CloudWatch) GetMetricStatisticsRequest(input *GetMetricStatisticsInput) (req *request.Request, output *GetMetricStatisticsOutput) {
-	op := &request.Operation{
-		Name:       opGetMetricStatistics,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &GetMetricStatisticsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &GetMetricStatisticsOutput{}
-	req.Data = output
-	return
-}
-
-// Gets statistics for the specified metric.
-//
-//  The maximum number of data points returned from a single GetMetricStatistics
-// request is 1,440, wereas the maximum number of data points that can be queried
-// is 50,850. If you make a request that generates more than 1,440 data points,
-// Amazon CloudWatch returns an error. In such a case, you can alter the request
-// by narrowing the specified time range or increasing the specified period.
-// Alternatively, you can make multiple requests across adjacent time ranges.
-//
-//  Amazon CloudWatch aggregates data points based on the length of the period
-// that you specify. For example, if you request statistics with a one-minute
-// granularity, Amazon CloudWatch aggregates data points with time stamps that
-// fall within the same one-minute period. In such a case, the data points queried
-// can greatly outnumber the data points returned.
-//
-//  The following examples show various statistics allowed by the data point
-// query maximum of 50,850 when you call GetMetricStatistics on Amazon EC2 instances
-// with detailed (one-minute) monitoring enabled:
-//
-//  Statistics for up to 400 instances for a span of one hour Statistics for
-// up to 35 instances over a span of 24 hours Statistics for up to 2 instances
-// over a span of 2 weeks   For information about the namespace, metric names,
-// and dimensions that other Amazon Web Services products use to send metrics
-// to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions
-// Reference (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html)
-// in the Amazon CloudWatch Developer Guide.
-func (c *CloudWatch) GetMetricStatistics(input *GetMetricStatisticsInput) (*GetMetricStatisticsOutput, error) {
-	req, out := c.GetMetricStatisticsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opListMetrics = "ListMetrics"
-
-// ListMetricsRequest generates a request for the ListMetrics operation.
-func (c *CloudWatch) ListMetricsRequest(input *ListMetricsInput) (req *request.Request, output *ListMetricsOutput) {
-	op := &request.Operation{
-		Name:       opListMetrics,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &ListMetricsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ListMetricsOutput{}
-	req.Data = output
-	return
-}
-
-// Returns a list of valid metrics stored for the AWS account owner. Returned
-// metrics can be used with GetMetricStatistics to obtain statistical data for
-// a given metric.
-func (c *CloudWatch) ListMetrics(input *ListMetricsInput) (*ListMetricsOutput, error) {
-	req, out := c.ListMetricsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *CloudWatch) ListMetricsPages(input *ListMetricsInput, fn func(p *ListMetricsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.ListMetricsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*ListMetricsOutput), lastPage)
-	})
-}
-
-const opPutMetricAlarm = "PutMetricAlarm"
-
-// PutMetricAlarmRequest generates a request for the PutMetricAlarm operation.
-func (c *CloudWatch) PutMetricAlarmRequest(input *PutMetricAlarmInput) (req *request.Request, output *PutMetricAlarmOutput) {
-	op := &request.Operation{
-		Name:       opPutMetricAlarm,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &PutMetricAlarmInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &PutMetricAlarmOutput{}
-	req.Data = output
-	return
-}
-
-// Creates or updates an alarm and associates it with the specified Amazon CloudWatch
-// metric. Optionally, this operation can associate one or more Amazon Simple
-// Notification Service resources with the alarm.
-//
-//  When this operation creates an alarm, the alarm state is immediately set
-// to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is set appropriately.
-// Any actions associated with the StateValue is then executed.
-func (c *CloudWatch) PutMetricAlarm(input *PutMetricAlarmInput) (*PutMetricAlarmOutput, error) {
-	req, out := c.PutMetricAlarmRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opPutMetricData = "PutMetricData"
-
-// PutMetricDataRequest generates a request for the PutMetricData operation.
-func (c *CloudWatch) PutMetricDataRequest(input *PutMetricDataInput) (req *request.Request, output *PutMetricDataOutput) {
-	op := &request.Operation{
-		Name:       opPutMetricData,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &PutMetricDataInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &PutMetricDataOutput{}
-	req.Data = output
-	return
-}
-
-// Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch associates
-// the data points with the specified metric. If the specified metric does not
-// exist, Amazon CloudWatch creates the metric. It can take up to fifteen minutes
-// for a new metric to appear in calls to the ListMetrics action.
-//
-//  The size of a PutMetricData request is limited to 8 KB for HTTP GET requests
-// and 40 KB for HTTP POST requests.
-//
-//  Although the Value parameter accepts numbers of type Double, Amazon CloudWatch
-// truncates values with very large exponents. Values with base-10 exponents
-// greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10
-// exponents less than -130 (1 x 10^-130) are also truncated.  Data that is
-// timestamped 24 hours or more in the past may take in excess of 48 hours to
-// become available from submission time using GetMetricStatistics.
-func (c *CloudWatch) PutMetricData(input *PutMetricDataInput) (*PutMetricDataOutput, error) {
-	req, out := c.PutMetricDataRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opSetAlarmState = "SetAlarmState"
-
-// SetAlarmStateRequest generates a request for the SetAlarmState operation.
-func (c *CloudWatch) SetAlarmStateRequest(input *SetAlarmStateInput) (req *request.Request, output *SetAlarmStateOutput) {
-	op := &request.Operation{
-		Name:       opSetAlarmState,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &SetAlarmStateInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &SetAlarmStateOutput{}
-	req.Data = output
-	return
-}
-
-// Temporarily sets the state of an alarm. When the updated StateValue differs
-// from the previous value, the action configured for the appropriate state
-// is invoked. This is not a permanent change. The next periodic alarm check
-// (in about a minute) will set the alarm to its actual state.
-func (c *CloudWatch) SetAlarmState(input *SetAlarmStateInput) (*SetAlarmStateOutput, error) {
-	req, out := c.SetAlarmStateRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-// The AlarmHistoryItem data type contains descriptive information about the
-// history of a specific alarm. If you call DescribeAlarmHistory, Amazon CloudWatch
-// returns this data type as part of the DescribeAlarmHistoryResult data type.
-type AlarmHistoryItem struct {
-	// The descriptive name for the alarm.
-	AlarmName *string `min:"1" type:"string"`
-
-	// Machine-readable data about the alarm in JSON format.
-	HistoryData *string `min:"1" type:"string"`
-
-	// The type of alarm history item.
-	HistoryItemType *string `type:"string" enum:"HistoryItemType"`
-
-	// A human-readable summary of the alarm history.
-	HistorySummary *string `min:"1" type:"string"`
-
-	// The time stamp for the alarm history item. Amazon CloudWatch uses Coordinated
-	// Universal Time (UTC) when returning time stamps, which do not accommodate
-	// seasonal adjustments such as daylight savings time. For more information,
-	// see Time stamps (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp)
-	// in the Amazon CloudWatch Developer Guide.
-	Timestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataAlarmHistoryItem `json:"-" xml:"-"`
-}
-
-type metadataAlarmHistoryItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AlarmHistoryItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AlarmHistoryItem) GoString() string {
-	return s.String()
-}
-
-// The Datapoint data type encapsulates the statistical data that Amazon CloudWatch
-// computes from metric data.
-type Datapoint struct {
-	// The average of metric values that correspond to the datapoint.
-	Average *float64 `type:"double"`
-
-	// The maximum of the metric value used for the datapoint.
-	Maximum *float64 `type:"double"`
-
-	// The minimum metric value used for the datapoint.
-	Minimum *float64 `type:"double"`
-
-	// The number of metric values that contributed to the aggregate value of this
-	// datapoint.
-	SampleCount *float64 `type:"double"`
-
-	// The sum of metric values used for the datapoint.
-	Sum *float64 `type:"double"`
-
-	// The time stamp used for the datapoint. Amazon CloudWatch uses Coordinated
-	// Universal Time (UTC) when returning time stamps, which do not accommodate
-	// seasonal adjustments such as daylight savings time. For more information,
-	// see Time stamps (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp)
-	// in the Amazon CloudWatch Developer Guide.
-	Timestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The standard unit used for the datapoint.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	metadataDatapoint `json:"-" xml:"-"`
-}
-
-type metadataDatapoint struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Datapoint) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Datapoint) GoString() string {
-	return s.String()
-}
-
-type DeleteAlarmsInput struct {
-	// A list of alarms to be deleted.
-	AlarmNames []*string `type:"list" required:"true"`
-
-	metadataDeleteAlarmsInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteAlarmsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteAlarmsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteAlarmsInput) GoString() string {
-	return s.String()
-}
-
-type DeleteAlarmsOutput struct {
-	metadataDeleteAlarmsOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteAlarmsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteAlarmsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteAlarmsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAlarmHistoryInput struct {
-	// The name of the alarm.
-	AlarmName *string `min:"1" type:"string"`
-
-	// The ending date to retrieve alarm history.
-	EndDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The type of alarm histories to retrieve.
-	HistoryItemType *string `type:"string" enum:"HistoryItemType"`
-
-	// The maximum number of alarm history records to retrieve.
-	MaxRecords *int64 `min:"1" type:"integer"`
-
-	// The token returned by a previous call to indicate that there is more data
-	// available.
-	NextToken *string `type:"string"`
-
-	// The starting date to retrieve alarm history.
-	StartDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataDescribeAlarmHistoryInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmHistoryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmHistoryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmHistoryInput) GoString() string {
-	return s.String()
-}
-
-// The output for the DescribeAlarmHistory action.
-type DescribeAlarmHistoryOutput struct {
-	// A list of alarm histories in JSON format.
-	AlarmHistoryItems []*AlarmHistoryItem `type:"list"`
-
-	// A string that marks the start of the next batch of returned results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeAlarmHistoryOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmHistoryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmHistoryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmHistoryOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAlarmsForMetricInput struct {
-	// The list of dimensions associated with the metric.
-	Dimensions []*Dimension `type:"list"`
-
-	// The name of the metric.
-	MetricName *string `min:"1" type:"string" required:"true"`
-
-	// The namespace of the metric.
-	Namespace *string `min:"1" type:"string" required:"true"`
-
-	// The period in seconds over which the statistic is applied.
-	Period *int64 `min:"60" type:"integer"`
-
-	// The statistic for the metric.
-	Statistic *string `type:"string" enum:"Statistic"`
-
-	// The unit for the metric.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	metadataDescribeAlarmsForMetricInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmsForMetricInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmsForMetricInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmsForMetricInput) GoString() string {
-	return s.String()
-}
-
-// The output for the DescribeAlarmsForMetric action.
-type DescribeAlarmsForMetricOutput struct {
-	// A list of information for each alarm with the specified metric.
-	MetricAlarms []*MetricAlarm `type:"list"`
-
-	metadataDescribeAlarmsForMetricOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmsForMetricOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmsForMetricOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmsForMetricOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAlarmsInput struct {
-	// The action name prefix.
-	ActionPrefix *string `min:"1" type:"string"`
-
-	// The alarm name prefix. AlarmNames cannot be specified if this parameter is
-	// specified.
-	AlarmNamePrefix *string `min:"1" type:"string"`
-
-	// A list of alarm names to retrieve information for.
-	AlarmNames []*string `type:"list"`
-
-	// The maximum number of alarm descriptions to retrieve.
-	MaxRecords *int64 `min:"1" type:"integer"`
-
-	// The token returned by a previous call to indicate that there is more data
-	// available.
-	NextToken *string `type:"string"`
-
-	// The state value to be used in matching alarms.
-	StateValue *string `type:"string" enum:"StateValue"`
-
-	metadataDescribeAlarmsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmsInput) GoString() string {
-	return s.String()
-}
-
-// The output for the DescribeAlarms action.
-type DescribeAlarmsOutput struct {
-	// A list of information for the specified alarms.
-	MetricAlarms []*MetricAlarm `type:"list"`
-
-	// A string that marks the start of the next batch of returned results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeAlarmsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAlarmsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAlarmsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAlarmsOutput) GoString() string {
-	return s.String()
-}
-
-// The Dimension data type further expands on the identity of a metric using
-// a Name, Value pair.
-//
-// For examples that use one or more dimensions, see PutMetricData.
-type Dimension struct {
-	// The name of the dimension.
-	Name *string `min:"1" type:"string" required:"true"`
-
-	// The value representing the dimension measurement
-	Value *string `min:"1" type:"string" required:"true"`
-
-	metadataDimension `json:"-" xml:"-"`
-}
-
-type metadataDimension struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Dimension) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Dimension) GoString() string {
-	return s.String()
-}
-
-// The DimensionFilter data type is used to filter ListMetrics results.
-type DimensionFilter struct {
-	// The dimension name to be matched.
-	Name *string `min:"1" type:"string" required:"true"`
-
-	// The value of the dimension to be matched.
-	Value *string `min:"1" type:"string"`
-
-	metadataDimensionFilter `json:"-" xml:"-"`
-}
-
-type metadataDimensionFilter struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DimensionFilter) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DimensionFilter) GoString() string {
-	return s.String()
-}
-
-type DisableAlarmActionsInput struct {
-	// The names of the alarms to disable actions for.
-	AlarmNames []*string `type:"list" required:"true"`
-
-	metadataDisableAlarmActionsInput `json:"-" xml:"-"`
-}
-
-type metadataDisableAlarmActionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableAlarmActionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableAlarmActionsInput) GoString() string {
-	return s.String()
-}
-
-type DisableAlarmActionsOutput struct {
-	metadataDisableAlarmActionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDisableAlarmActionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableAlarmActionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableAlarmActionsOutput) GoString() string {
-	return s.String()
-}
-
-type EnableAlarmActionsInput struct {
-	// The names of the alarms to enable actions for.
-	AlarmNames []*string `type:"list" required:"true"`
-
-	metadataEnableAlarmActionsInput `json:"-" xml:"-"`
-}
-
-type metadataEnableAlarmActionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableAlarmActionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableAlarmActionsInput) GoString() string {
-	return s.String()
-}
-
-type EnableAlarmActionsOutput struct {
-	metadataEnableAlarmActionsOutput `json:"-" xml:"-"`
-}
-
-type metadataEnableAlarmActionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableAlarmActionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableAlarmActionsOutput) GoString() string {
-	return s.String()
-}
-
-type GetMetricStatisticsInput struct {
-	// A list of dimensions describing qualities of the metric.
-	Dimensions []*Dimension `type:"list"`
-
-	// The time stamp to use for determining the last datapoint to return. The value
-	// specified is exclusive; results will include datapoints up to the time stamp
-	// specified.
-	EndTime *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	// The name of the metric, with or without spaces.
-	MetricName *string `min:"1" type:"string" required:"true"`
-
-	// The namespace of the metric, with or without spaces.
-	Namespace *string `min:"1" type:"string" required:"true"`
-
-	// The granularity, in seconds, of the returned datapoints. Period must be at
-	// least 60 seconds and must be a multiple of 60. The default value is 60.
-	Period *int64 `min:"60" type:"integer" required:"true"`
-
-	// The time stamp to use for determining the first datapoint to return. The
-	// value specified is inclusive; results include datapoints with the time stamp
-	// specified.
-	StartTime *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	// The metric statistics to return. For information about specific statistics
-	// returned by GetMetricStatistics, go to Statistics (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/index.html?CHAP_TerminologyandKeyConcepts.html#Statistic)
-	// in the Amazon CloudWatch Developer Guide.
-	//
-	//  Valid Values: Average | Sum | SampleCount | Maximum | Minimum
-	Statistics []*string `min:"1" type:"list" required:"true"`
-
-	// The unit for the metric.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	metadataGetMetricStatisticsInput `json:"-" xml:"-"`
-}
-
-type metadataGetMetricStatisticsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetMetricStatisticsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetMetricStatisticsInput) GoString() string {
-	return s.String()
-}
-
-// The output for the GetMetricStatistics action.
-type GetMetricStatisticsOutput struct {
-	// The datapoints for the specified metric.
-	Datapoints []*Datapoint `type:"list"`
-
-	// A label describing the specified metric.
-	Label *string `type:"string"`
-
-	metadataGetMetricStatisticsOutput `json:"-" xml:"-"`
-}
-
-type metadataGetMetricStatisticsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetMetricStatisticsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetMetricStatisticsOutput) GoString() string {
-	return s.String()
-}
-
-type ListMetricsInput struct {
-	// A list of dimensions to filter against.
-	Dimensions []*DimensionFilter `type:"list"`
-
-	// The name of the metric to filter against.
-	MetricName *string `min:"1" type:"string"`
-
-	// The namespace to filter against.
-	Namespace *string `min:"1" type:"string"`
-
-	// The token returned by a previous call to indicate that there is more data
-	// available.
-	NextToken *string `type:"string"`
-
-	metadataListMetricsInput `json:"-" xml:"-"`
-}
-
-type metadataListMetricsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ListMetricsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ListMetricsInput) GoString() string {
-	return s.String()
-}
-
-// The output for the ListMetrics action.
-type ListMetricsOutput struct {
-	// A list of metrics used to generate statistics for an AWS account.
-	Metrics []*Metric `type:"list"`
-
-	// A string that marks the start of the next batch of returned results.
-	NextToken *string `type:"string"`
-
-	metadataListMetricsOutput `json:"-" xml:"-"`
-}
-
-type metadataListMetricsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ListMetricsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ListMetricsOutput) GoString() string {
-	return s.String()
-}
-
-// The Metric data type contains information about a specific metric. If you
-// call ListMetrics, Amazon CloudWatch returns information contained by this
-// data type.
-//
-//  The example in the Examples section publishes two metrics named buffers
-// and latency. Both metrics are in the examples namespace. Both metrics have
-// two dimensions, InstanceID and InstanceType.
-type Metric struct {
-	// A list of dimensions associated with the metric.
-	Dimensions []*Dimension `type:"list"`
-
-	// The name of the metric.
-	MetricName *string `min:"1" type:"string"`
-
-	// The namespace of the metric.
-	Namespace *string `min:"1" type:"string"`
-
-	metadataMetric `json:"-" xml:"-"`
-}
-
-type metadataMetric struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Metric) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Metric) GoString() string {
-	return s.String()
-}
-
-// The MetricAlarm data type represents an alarm. You can use PutMetricAlarm
-// to create or update an alarm.
-type MetricAlarm struct {
-	// Indicates whether actions should be executed during any changes to the alarm's
-	// state.
-	ActionsEnabled *bool `type:"boolean"`
-
-	// The list of actions to execute when this alarm transitions into an ALARM
-	// state from any other state. Each action is specified as an Amazon Resource
-	// Number (ARN). Currently the only actions supported are publishing to an Amazon
-	// SNS topic and triggering an Auto Scaling policy.
-	AlarmActions []*string `type:"list"`
-
-	// The Amazon Resource Name (ARN) of the alarm.
-	AlarmArn *string `min:"1" type:"string"`
-
-	// The time stamp of the last update to the alarm configuration. Amazon CloudWatch
-	// uses Coordinated Universal Time (UTC) when returning time stamps, which do
-	// not accommodate seasonal adjustments such as daylight savings time. For more
-	// information, see Time stamps (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp)
-	// in the Amazon CloudWatch Developer Guide.
-	AlarmConfigurationUpdatedTimestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The description for the alarm.
-	AlarmDescription *string `type:"string"`
-
-	// The name of the alarm.
-	AlarmName *string `min:"1" type:"string"`
-
-	// The arithmetic operation to use when comparing the specified Statistic and
-	// Threshold. The specified Statistic value is used as the first operand.
-	ComparisonOperator *string `type:"string" enum:"ComparisonOperator"`
-
-	// The list of dimensions associated with the alarm's associated metric.
-	Dimensions []*Dimension `type:"list"`
-
-	// The number of periods over which data is compared to the specified threshold.
-	EvaluationPeriods *int64 `min:"1" type:"integer"`
-
-	// The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA
-	// state from any other state. Each action is specified as an Amazon Resource
-	// Number (ARN). Currently the only actions supported are publishing to an Amazon
-	// SNS topic or triggering an Auto Scaling policy.
-	//
-	// The current WSDL lists this attribute as UnknownActions.
-	InsufficientDataActions []*string `type:"list"`
-
-	// The name of the alarm's metric.
-	MetricName *string `min:"1" type:"string"`
-
-	// The namespace of alarm's associated metric.
-	Namespace *string `min:"1" type:"string"`
-
-	// The list of actions to execute when this alarm transitions into an OK state
-	// from any other state. Each action is specified as an Amazon Resource Number
-	// (ARN). Currently the only actions supported are publishing to an Amazon SNS
-	// topic and triggering an Auto Scaling policy.
-	OKActions []*string `type:"list"`
-
-	// The period in seconds over which the statistic is applied.
-	Period *int64 `min:"60" type:"integer"`
-
-	// A human-readable explanation for the alarm's state.
-	StateReason *string `type:"string"`
-
-	// An explanation for the alarm's state in machine-readable JSON format
-	StateReasonData *string `type:"string"`
-
-	// The time stamp of the last update to the alarm's state. Amazon CloudWatch
-	// uses Coordinated Universal Time (UTC) when returning time stamps, which do
-	// not accommodate seasonal adjustments such as daylight savings time. For more
-	// information, see Time stamps (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp)
-	// in the Amazon CloudWatch Developer Guide.
-	StateUpdatedTimestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The state value for the alarm.
-	StateValue *string `type:"string" enum:"StateValue"`
-
-	// The statistic to apply to the alarm's associated metric.
-	Statistic *string `type:"string" enum:"Statistic"`
-
-	// The value against which the specified statistic is compared.
-	Threshold *float64 `type:"double"`
-
-	// The unit of the alarm's associated metric.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	metadataMetricAlarm `json:"-" xml:"-"`
-}
-
-type metadataMetricAlarm struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MetricAlarm) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MetricAlarm) GoString() string {
-	return s.String()
-}
-
-// The MetricDatum data type encapsulates the information sent with PutMetricData
-// to either create a new metric or add new values to be aggregated into an
-// existing metric.
-type MetricDatum struct {
-	// A list of dimensions associated with the metric. Note, when using the Dimensions
-	// value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).
-	Dimensions []*Dimension `type:"list"`
-
-	// The name of the metric.
-	MetricName *string `min:"1" type:"string" required:"true"`
-
-	// A set of statistical values describing the metric.
-	StatisticValues *StatisticSet `type:"structure"`
-
-	// The time stamp used for the metric. If not specified, the default value is
-	// set to the time the metric data was received. Amazon CloudWatch uses Coordinated
-	// Universal Time (UTC) when returning time stamps, which do not accommodate
-	// seasonal adjustments such as daylight savings time. For more information,
-	// see Time stamps (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp)
-	// in the Amazon CloudWatch Developer Guide.
-	Timestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The unit of the metric.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	// The value for the metric.
-	//
-	// Although the Value parameter accepts numbers of type Double, Amazon CloudWatch
-	// truncates values with very large exponents. Values with base-10 exponents
-	// greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10
-	// exponents less than -130 (1 x 10^-130) are also truncated.
-	Value *float64 `type:"double"`
-
-	metadataMetricDatum `json:"-" xml:"-"`
-}
-
-type metadataMetricDatum struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MetricDatum) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MetricDatum) GoString() string {
-	return s.String()
-}
-
-type PutMetricAlarmInput struct {
-	// Indicates whether or not actions should be executed during any changes to
-	// the alarm's state.
-	ActionsEnabled *bool `type:"boolean"`
-
-	// The list of actions to execute when this alarm transitions into an ALARM
-	// state from any other state. Each action is specified as an Amazon Resource
-	// Number (ARN). Currently the only action supported is publishing to an Amazon
-	// SNS topic or an Amazon Auto Scaling policy.
-	AlarmActions []*string `type:"list"`
-
-	// The description for the alarm.
-	AlarmDescription *string `type:"string"`
-
-	// The descriptive name for the alarm. This name must be unique within the user's
-	// AWS account
-	AlarmName *string `min:"1" type:"string" required:"true"`
-
-	// The arithmetic operation to use when comparing the specified Statistic and
-	// Threshold. The specified Statistic value is used as the first operand.
-	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
-
-	// The dimensions for the alarm's associated metric.
-	Dimensions []*Dimension `type:"list"`
-
-	// The number of periods over which data is compared to the specified threshold.
-	EvaluationPeriods *int64 `min:"1" type:"integer" required:"true"`
-
-	// The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA
-	// state from any other state. Each action is specified as an Amazon Resource
-	// Number (ARN). Currently the only action supported is publishing to an Amazon
-	// SNS topic or an Amazon Auto Scaling policy.
-	InsufficientDataActions []*string `type:"list"`
-
-	// The name for the alarm's associated metric.
-	MetricName *string `min:"1" type:"string" required:"true"`
-
-	// The namespace for the alarm's associated metric.
-	Namespace *string `min:"1" type:"string" required:"true"`
-
-	// The list of actions to execute when this alarm transitions into an OK state
-	// from any other state. Each action is specified as an Amazon Resource Number
-	// (ARN). Currently the only action supported is publishing to an Amazon SNS
-	// topic or an Amazon Auto Scaling policy.
-	OKActions []*string `type:"list"`
-
-	// The period in seconds over which the specified statistic is applied.
-	Period *int64 `min:"60" type:"integer" required:"true"`
-
-	// The statistic to apply to the alarm's associated metric.
-	Statistic *string `type:"string" required:"true" enum:"Statistic"`
-
-	// The value against which the specified statistic is compared.
-	Threshold *float64 `type:"double" required:"true"`
-
-	// The unit for the alarm's associated metric.
-	Unit *string `type:"string" enum:"StandardUnit"`
-
-	metadataPutMetricAlarmInput `json:"-" xml:"-"`
-}
-
-type metadataPutMetricAlarmInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PutMetricAlarmInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PutMetricAlarmInput) GoString() string {
-	return s.String()
-}
-
-type PutMetricAlarmOutput struct {
-	metadataPutMetricAlarmOutput `json:"-" xml:"-"`
-}
-
-type metadataPutMetricAlarmOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PutMetricAlarmOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PutMetricAlarmOutput) GoString() string {
-	return s.String()
-}
-
-type PutMetricDataInput struct {
-	// A list of data describing the metric.
-	MetricData []*MetricDatum `type:"list" required:"true"`
-
-	// The namespace for the metric data.
-	Namespace *string `min:"1" type:"string" required:"true"`
-
-	metadataPutMetricDataInput `json:"-" xml:"-"`
-}
-
-type metadataPutMetricDataInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PutMetricDataInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PutMetricDataInput) GoString() string {
-	return s.String()
-}
-
-type PutMetricDataOutput struct {
-	metadataPutMetricDataOutput `json:"-" xml:"-"`
-}
-
-type metadataPutMetricDataOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PutMetricDataOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PutMetricDataOutput) GoString() string {
-	return s.String()
-}
-
-type SetAlarmStateInput struct {
-	// The descriptive name for the alarm. This name must be unique within the user's
-	// AWS account. The maximum length is 255 characters.
-	AlarmName *string `min:"1" type:"string" required:"true"`
-
-	// The reason that this alarm is set to this specific state (in human-readable
-	// text format)
-	StateReason *string `type:"string" required:"true"`
-
-	// The reason that this alarm is set to this specific state (in machine-readable
-	// JSON format)
-	StateReasonData *string `type:"string"`
-
-	// The value of the state.
-	StateValue *string `type:"string" required:"true" enum:"StateValue"`
-
-	metadataSetAlarmStateInput `json:"-" xml:"-"`
-}
-
-type metadataSetAlarmStateInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SetAlarmStateInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SetAlarmStateInput) GoString() string {
-	return s.String()
-}
-
-type SetAlarmStateOutput struct {
-	metadataSetAlarmStateOutput `json:"-" xml:"-"`
-}
-
-type metadataSetAlarmStateOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SetAlarmStateOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SetAlarmStateOutput) GoString() string {
-	return s.String()
-}
-
-// The StatisticSet data type describes the StatisticValues component of MetricDatum,
-// and represents a set of statistics that describes a specific metric.
-type StatisticSet struct {
-	// The maximum value of the sample set.
-	Maximum *float64 `type:"double" required:"true"`
-
-	// The minimum value of the sample set.
-	Minimum *float64 `type:"double" required:"true"`
-
-	// The number of samples used for the statistic set.
-	SampleCount *float64 `type:"double" required:"true"`
-
-	// The sum of values for the sample set.
-	Sum *float64 `type:"double" required:"true"`
-
-	metadataStatisticSet `json:"-" xml:"-"`
-}
-
-type metadataStatisticSet struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StatisticSet) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StatisticSet) GoString() string {
-	return s.String()
-}
-
-const (
-	// @enum ComparisonOperator
-	ComparisonOperatorGreaterThanOrEqualToThreshold = "GreaterThanOrEqualToThreshold"
-	// @enum ComparisonOperator
-	ComparisonOperatorGreaterThanThreshold = "GreaterThanThreshold"
-	// @enum ComparisonOperator
-	ComparisonOperatorLessThanThreshold = "LessThanThreshold"
-	// @enum ComparisonOperator
-	ComparisonOperatorLessThanOrEqualToThreshold = "LessThanOrEqualToThreshold"
-)
-
-const (
-	// @enum HistoryItemType
-	HistoryItemTypeConfigurationUpdate = "ConfigurationUpdate"
-	// @enum HistoryItemType
-	HistoryItemTypeStateUpdate = "StateUpdate"
-	// @enum HistoryItemType
-	HistoryItemTypeAction = "Action"
-)
-
-const (
-	// @enum StandardUnit
-	StandardUnitSeconds = "Seconds"
-	// @enum StandardUnit
-	StandardUnitMicroseconds = "Microseconds"
-	// @enum StandardUnit
-	StandardUnitMilliseconds = "Milliseconds"
-	// @enum StandardUnit
-	StandardUnitBytes = "Bytes"
-	// @enum StandardUnit
-	StandardUnitKilobytes = "Kilobytes"
-	// @enum StandardUnit
-	StandardUnitMegabytes = "Megabytes"
-	// @enum StandardUnit
-	StandardUnitGigabytes = "Gigabytes"
-	// @enum StandardUnit
-	StandardUnitTerabytes = "Terabytes"
-	// @enum StandardUnit
-	StandardUnitBits = "Bits"
-	// @enum StandardUnit
-	StandardUnitKilobits = "Kilobits"
-	// @enum StandardUnit
-	StandardUnitMegabits = "Megabits"
-	// @enum StandardUnit
-	StandardUnitGigabits = "Gigabits"
-	// @enum StandardUnit
-	StandardUnitTerabits = "Terabits"
-	// @enum StandardUnit
-	StandardUnitPercent = "Percent"
-	// @enum StandardUnit
-	StandardUnitCount = "Count"
-	// @enum StandardUnit
-	StandardUnitBytesSecond = "Bytes/Second"
-	// @enum StandardUnit
-	StandardUnitKilobytesSecond = "Kilobytes/Second"
-	// @enum StandardUnit
-	StandardUnitMegabytesSecond = "Megabytes/Second"
-	// @enum StandardUnit
-	StandardUnitGigabytesSecond = "Gigabytes/Second"
-	// @enum StandardUnit
-	StandardUnitTerabytesSecond = "Terabytes/Second"
-	// @enum StandardUnit
-	StandardUnitBitsSecond = "Bits/Second"
-	// @enum StandardUnit
-	StandardUnitKilobitsSecond = "Kilobits/Second"
-	// @enum StandardUnit
-	StandardUnitMegabitsSecond = "Megabits/Second"
-	// @enum StandardUnit
-	StandardUnitGigabitsSecond = "Gigabits/Second"
-	// @enum StandardUnit
-	StandardUnitTerabitsSecond = "Terabits/Second"
-	// @enum StandardUnit
-	StandardUnitCountSecond = "Count/Second"
-	// @enum StandardUnit
-	StandardUnitNone = "None"
-)
-
-const (
-	// @enum StateValue
-	StateValueOk = "OK"
-	// @enum StateValue
-	StateValueAlarm = "ALARM"
-	// @enum StateValue
-	StateValueInsufficientData = "INSUFFICIENT_DATA"
-)
-
-const (
-	// @enum Statistic
-	StatisticSampleCount = "SampleCount"
-	// @enum Statistic
-	StatisticAverage = "Average"
-	// @enum Statistic
-	StatisticSum = "Sum"
-	// @enum Statistic
-	StatisticMinimum = "Minimum"
-	// @enum Statistic
-	StatisticMaximum = "Maximum"
-)

+ 0 - 337
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/examples_test.go

@@ -1,337 +0,0 @@
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-package cloudwatch_test
-
-import (
-	"bytes"
-	"fmt"
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/session"
-	"github.com/aws/aws-sdk-go/service/cloudwatch"
-)
-
-var _ time.Duration
-var _ bytes.Buffer
-
-func ExampleCloudWatch_DeleteAlarms() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.DeleteAlarmsInput{
-		AlarmNames: []*string{ // Required
-			aws.String("AlarmName"), // Required
-			// More values...
-		},
-	}
-	resp, err := svc.DeleteAlarms(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_DescribeAlarmHistory() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.DescribeAlarmHistoryInput{
-		AlarmName:       aws.String("AlarmName"),
-		EndDate:         aws.Time(time.Now()),
-		HistoryItemType: aws.String("HistoryItemType"),
-		MaxRecords:      aws.Int64(1),
-		NextToken:       aws.String("NextToken"),
-		StartDate:       aws.Time(time.Now()),
-	}
-	resp, err := svc.DescribeAlarmHistory(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_DescribeAlarms() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.DescribeAlarmsInput{
-		ActionPrefix:    aws.String("ActionPrefix"),
-		AlarmNamePrefix: aws.String("AlarmNamePrefix"),
-		AlarmNames: []*string{
-			aws.String("AlarmName"), // Required
-			// More values...
-		},
-		MaxRecords: aws.Int64(1),
-		NextToken:  aws.String("NextToken"),
-		StateValue: aws.String("StateValue"),
-	}
-	resp, err := svc.DescribeAlarms(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_DescribeAlarmsForMetric() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.DescribeAlarmsForMetricInput{
-		MetricName: aws.String("MetricName"), // Required
-		Namespace:  aws.String("Namespace"),  // Required
-		Dimensions: []*cloudwatch.Dimension{
-			{ // Required
-				Name:  aws.String("DimensionName"),  // Required
-				Value: aws.String("DimensionValue"), // Required
-			},
-			// More values...
-		},
-		Period:    aws.Int64(1),
-		Statistic: aws.String("Statistic"),
-		Unit:      aws.String("StandardUnit"),
-	}
-	resp, err := svc.DescribeAlarmsForMetric(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_DisableAlarmActions() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.DisableAlarmActionsInput{
-		AlarmNames: []*string{ // Required
-			aws.String("AlarmName"), // Required
-			// More values...
-		},
-	}
-	resp, err := svc.DisableAlarmActions(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_EnableAlarmActions() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.EnableAlarmActionsInput{
-		AlarmNames: []*string{ // Required
-			aws.String("AlarmName"), // Required
-			// More values...
-		},
-	}
-	resp, err := svc.EnableAlarmActions(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_GetMetricStatistics() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.GetMetricStatisticsInput{
-		EndTime:    aws.Time(time.Now()),     // Required
-		MetricName: aws.String("MetricName"), // Required
-		Namespace:  aws.String("Namespace"),  // Required
-		Period:     aws.Int64(1),             // Required
-		StartTime:  aws.Time(time.Now()),     // Required
-		Statistics: []*string{ // Required
-			aws.String("Statistic"), // Required
-			// More values...
-		},
-		Dimensions: []*cloudwatch.Dimension{
-			{ // Required
-				Name:  aws.String("DimensionName"),  // Required
-				Value: aws.String("DimensionValue"), // Required
-			},
-			// More values...
-		},
-		Unit: aws.String("StandardUnit"),
-	}
-	resp, err := svc.GetMetricStatistics(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_ListMetrics() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.ListMetricsInput{
-		Dimensions: []*cloudwatch.DimensionFilter{
-			{ // Required
-				Name:  aws.String("DimensionName"), // Required
-				Value: aws.String("DimensionValue"),
-			},
-			// More values...
-		},
-		MetricName: aws.String("MetricName"),
-		Namespace:  aws.String("Namespace"),
-		NextToken:  aws.String("NextToken"),
-	}
-	resp, err := svc.ListMetrics(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_PutMetricAlarm() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.PutMetricAlarmInput{
-		AlarmName:          aws.String("AlarmName"),          // Required
-		ComparisonOperator: aws.String("ComparisonOperator"), // Required
-		EvaluationPeriods:  aws.Int64(1),                     // Required
-		MetricName:         aws.String("MetricName"),         // Required
-		Namespace:          aws.String("Namespace"),          // Required
-		Period:             aws.Int64(1),                     // Required
-		Statistic:          aws.String("Statistic"),          // Required
-		Threshold:          aws.Float64(1.0),                 // Required
-		ActionsEnabled:     aws.Bool(true),
-		AlarmActions: []*string{
-			aws.String("ResourceName"), // Required
-			// More values...
-		},
-		AlarmDescription: aws.String("AlarmDescription"),
-		Dimensions: []*cloudwatch.Dimension{
-			{ // Required
-				Name:  aws.String("DimensionName"),  // Required
-				Value: aws.String("DimensionValue"), // Required
-			},
-			// More values...
-		},
-		InsufficientDataActions: []*string{
-			aws.String("ResourceName"), // Required
-			// More values...
-		},
-		OKActions: []*string{
-			aws.String("ResourceName"), // Required
-			// More values...
-		},
-		Unit: aws.String("StandardUnit"),
-	}
-	resp, err := svc.PutMetricAlarm(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_PutMetricData() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.PutMetricDataInput{
-		MetricData: []*cloudwatch.MetricDatum{ // Required
-			{ // Required
-				MetricName: aws.String("MetricName"), // Required
-				Dimensions: []*cloudwatch.Dimension{
-					{ // Required
-						Name:  aws.String("DimensionName"),  // Required
-						Value: aws.String("DimensionValue"), // Required
-					},
-					// More values...
-				},
-				StatisticValues: &cloudwatch.StatisticSet{
-					Maximum:     aws.Float64(1.0), // Required
-					Minimum:     aws.Float64(1.0), // Required
-					SampleCount: aws.Float64(1.0), // Required
-					Sum:         aws.Float64(1.0), // Required
-				},
-				Timestamp: aws.Time(time.Now()),
-				Unit:      aws.String("StandardUnit"),
-				Value:     aws.Float64(1.0),
-			},
-			// More values...
-		},
-		Namespace: aws.String("Namespace"), // Required
-	}
-	resp, err := svc.PutMetricData(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}
-
-func ExampleCloudWatch_SetAlarmState() {
-	svc := cloudwatch.New(session.New())
-
-	params := &cloudwatch.SetAlarmStateInput{
-		AlarmName:       aws.String("AlarmName"),   // Required
-		StateReason:     aws.String("StateReason"), // Required
-		StateValue:      aws.String("StateValue"),  // Required
-		StateReasonData: aws.String("StateReasonData"),
-	}
-	resp, err := svc.SetAlarmState(params)
-
-	if err != nil {
-		// Print the error, cast err to awserr.Error to get the Code and
-		// Message from an error.
-		fmt.Println(err.Error())
-		return
-	}
-
-	// Pretty-print the response data.
-	fmt.Println(resp)
-}

+ 0 - 125
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/cloudwatch/service.go

@@ -1,125 +0,0 @@
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-package cloudwatch
-
-import (
-	"github.com/aws/aws-sdk-go/aws"
-	"github.com/aws/aws-sdk-go/aws/client"
-	"github.com/aws/aws-sdk-go/aws/client/metadata"
-	"github.com/aws/aws-sdk-go/aws/request"
-	"github.com/aws/aws-sdk-go/private/protocol/query"
-	"github.com/aws/aws-sdk-go/private/signer/v4"
-)
-
-// This is the Amazon CloudWatch API Reference. This guide provides detailed
-// information about Amazon CloudWatch actions, data types, parameters, and
-// errors. For detailed information about Amazon CloudWatch features and their
-// associated API calls, go to the Amazon CloudWatch Developer Guide (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide).
-//
-// Amazon CloudWatch is a web service that enables you to publish, monitor,
-// and manage various metrics, as well as configure alarm actions based on data
-// from metrics. For more information about this product go to http://aws.amazon.com/cloudwatch
-// (http://aws.amazon.com/cloudwatch).
-//
-//  For information about the namespace, metric names, and dimensions that
-// other Amazon Web Services products use to send metrics to Cloudwatch, go
-// to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html)
-// in the Amazon CloudWatch Developer Guide.
-//
-// Use the following links to get started using the Amazon CloudWatch API Reference:
-//
-//   Actions (http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Operations.html):
-// An alphabetical list of all Amazon CloudWatch actions.  Data Types (http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Types.html):
-// An alphabetical list of all Amazon CloudWatch data types.  Common Parameters
-// (http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CommonParameters.html):
-// Parameters that all Query actions can use.  Common Errors (http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CommonErrors.html):
-// Client and server errors that all actions can return.  Regions and Endpoints
-// (http://docs.aws.amazon.com/general/latest/gr/index.html?rande.html): Itemized
-// regions and endpoints for all AWS products.  WSDL Location (http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl):
-// http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl  In addition
-// to using the Amazon CloudWatch API, you can also use the following SDKs and
-// third-party libraries to access Amazon CloudWatch programmatically.
-//
-//  AWS SDK for Java Documentation (http://aws.amazon.com/documentation/sdkforjava/)
-// AWS SDK for .NET Documentation (http://aws.amazon.com/documentation/sdkfornet/)
-// AWS SDK for PHP Documentation (http://aws.amazon.com/documentation/sdkforphp/)
-// AWS SDK for Ruby Documentation (http://aws.amazon.com/documentation/sdkforruby/)
-//  Developers in the AWS developer community also provide their own libraries,
-// which you can find at the following AWS developer centers:
-//
-//  AWS Java Developer Center (http://aws.amazon.com/java/) AWS PHP Developer
-// Center (http://aws.amazon.com/php/) AWS Python Developer Center (http://aws.amazon.com/python/)
-// AWS Ruby Developer Center (http://aws.amazon.com/ruby/) AWS Windows and .NET
-// Developer Center (http://aws.amazon.com/net/)
-//The service client's operations are safe to be used concurrently.
-// It is not safe to mutate any of the client's properties though.
-type CloudWatch struct {
-	*client.Client
-}
-
-// Used for custom client initialization logic
-var initClient func(*client.Client)
-
-// Used for custom request initialization logic
-var initRequest func(*request.Request)
-
-// A ServiceName is the name of the service the client will make API calls to.
-const ServiceName = "monitoring"
-
-// New creates a new instance of the CloudWatch client with a session.
-// If additional configuration is needed for the client instance use the optional
-// aws.Config parameter to add your extra config.
-//
-// Example:
-//     // Create a CloudWatch client from just a session.
-//     svc := cloudwatch.New(mySession)
-//
-//     // Create a CloudWatch client with additional configuration
-//     svc := cloudwatch.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
-func New(p client.ConfigProvider, cfgs ...*aws.Config) *CloudWatch {
-	c := p.ClientConfig(ServiceName, cfgs...)
-	return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
-}
-
-// newClient creates, initializes and returns a new service client instance.
-func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *CloudWatch {
-	svc := &CloudWatch{
-		Client: client.New(
-			cfg,
-			metadata.ClientInfo{
-				ServiceName:   ServiceName,
-				SigningRegion: signingRegion,
-				Endpoint:      endpoint,
-				APIVersion:    "2010-08-01",
-			},
-			handlers,
-		),
-	}
-
-	// Handlers
-	svc.Handlers.Sign.PushBack(v4.Sign)
-	svc.Handlers.Build.PushBack(query.Build)
-	svc.Handlers.Unmarshal.PushBack(query.Unmarshal)
-	svc.Handlers.UnmarshalMeta.PushBack(query.UnmarshalMeta)
-	svc.Handlers.UnmarshalError.PushBack(query.UnmarshalError)
-
-	// Run custom client initialization if present
-	if initClient != nil {
-		initClient(svc.Client)
-	}
-
-	return svc
-}
-
-// newRequest creates a new request for a CloudWatch operation and runs any
-// custom request initialization.
-func (c *CloudWatch) newRequest(op *request.Operation, params, data interface{}) *request.Request {
-	req := c.NewRequest(op, params, data)
-
-	// Run custom request initialization if present
-	if initRequest != nil {
-		initRequest(req)
-	}
-
-	return req
-}

+ 0 - 24756
Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/api.go

@@ -1,24756 +0,0 @@
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
-
-// Package ec2 provides a client for Amazon Elastic Compute Cloud.
-package ec2
-
-import (
-	"time"
-
-	"github.com/aws/aws-sdk-go/aws/awsutil"
-	"github.com/aws/aws-sdk-go/aws/request"
-)
-
-const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection"
-
-// AcceptVpcPeeringConnectionRequest generates a request for the AcceptVpcPeeringConnection operation.
-func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectionInput) (req *request.Request, output *AcceptVpcPeeringConnectionOutput) {
-	op := &request.Operation{
-		Name:       opAcceptVpcPeeringConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AcceptVpcPeeringConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AcceptVpcPeeringConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Accept a VPC peering connection request. To accept a request, the VPC peering
-// connection must be in the pending-acceptance state, and you must be the owner
-// of the peer VPC. Use the DescribeVpcPeeringConnections request to view your
-// outstanding VPC peering connection requests.
-func (c *EC2) AcceptVpcPeeringConnection(input *AcceptVpcPeeringConnectionInput) (*AcceptVpcPeeringConnectionOutput, error) {
-	req, out := c.AcceptVpcPeeringConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAllocateAddress = "AllocateAddress"
-
-// AllocateAddressRequest generates a request for the AllocateAddress operation.
-func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.Request, output *AllocateAddressOutput) {
-	op := &request.Operation{
-		Name:       opAllocateAddress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AllocateAddressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AllocateAddressOutput{}
-	req.Data = output
-	return
-}
-
-// Acquires an Elastic IP address.
-//
-// An Elastic IP address is for use either in the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) AllocateAddress(input *AllocateAddressInput) (*AllocateAddressOutput, error) {
-	req, out := c.AllocateAddressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses"
-
-// AssignPrivateIpAddressesRequest generates a request for the AssignPrivateIpAddresses operation.
-func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInput) (req *request.Request, output *AssignPrivateIpAddressesOutput) {
-	op := &request.Operation{
-		Name:       opAssignPrivateIpAddresses,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AssignPrivateIpAddressesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AssignPrivateIpAddressesOutput{}
-	req.Data = output
-	return
-}
-
-// Assigns one or more secondary private IP addresses to the specified network
-// interface. You can specify one or more specific secondary IP addresses, or
-// you can specify the number of secondary IP addresses to be automatically
-// assigned within the subnet's CIDR block range. The number of secondary IP
-// addresses that you can assign to an instance varies by instance type. For
-// information about instance types, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
-// in the Amazon Elastic Compute Cloud User Guide. For more information about
-// Elastic IP addresses, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// AssignPrivateIpAddresses is available only in EC2-VPC.
-func (c *EC2) AssignPrivateIpAddresses(input *AssignPrivateIpAddressesInput) (*AssignPrivateIpAddressesOutput, error) {
-	req, out := c.AssignPrivateIpAddressesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAssociateAddress = "AssociateAddress"
-
-// AssociateAddressRequest generates a request for the AssociateAddress operation.
-func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *request.Request, output *AssociateAddressOutput) {
-	op := &request.Operation{
-		Name:       opAssociateAddress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AssociateAddressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AssociateAddressOutput{}
-	req.Data = output
-	return
-}
-
-// Associates an Elastic IP address with an instance or a network interface.
-//
-// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address
-// is already associated with a different instance, it is disassociated from
-// that instance and associated with the specified instance.
-//
-// [VPC in an EC2-Classic account] If you don't specify a private IP address,
-// the Elastic IP address is associated with the primary IP address. If the
-// Elastic IP address is already associated with a different instance or a network
-// interface, you get an error unless you allow reassociation.
-//
-// This is an idempotent operation. If you perform the operation more than
-// once, Amazon EC2 doesn't return an error.
-func (c *EC2) AssociateAddress(input *AssociateAddressInput) (*AssociateAddressOutput, error) {
-	req, out := c.AssociateAddressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAssociateDhcpOptions = "AssociateDhcpOptions"
-
-// AssociateDhcpOptionsRequest generates a request for the AssociateDhcpOptions operation.
-func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req *request.Request, output *AssociateDhcpOptionsOutput) {
-	op := &request.Operation{
-		Name:       opAssociateDhcpOptions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AssociateDhcpOptionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AssociateDhcpOptionsOutput{}
-	req.Data = output
-	return
-}
-
-// Associates a set of DHCP options (that you've previously created) with the
-// specified VPC, or associates no DHCP options with the VPC.
-//
-// After you associate the options with the VPC, any existing instances and
-// all new instances that you launch in that VPC use the options. You don't
-// need to restart or relaunch the instances. They automatically pick up the
-// changes within a few hours, depending on how frequently the instance renews
-// its DHCP lease. You can explicitly renew the lease using the operating system
-// on the instance.
-//
-// For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) AssociateDhcpOptions(input *AssociateDhcpOptionsInput) (*AssociateDhcpOptionsOutput, error) {
-	req, out := c.AssociateDhcpOptionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAssociateRouteTable = "AssociateRouteTable"
-
-// AssociateRouteTableRequest generates a request for the AssociateRouteTable operation.
-func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req *request.Request, output *AssociateRouteTableOutput) {
-	op := &request.Operation{
-		Name:       opAssociateRouteTable,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AssociateRouteTableInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AssociateRouteTableOutput{}
-	req.Data = output
-	return
-}
-
-// Associates a subnet with a route table. The subnet and route table must be
-// in the same VPC. This association causes traffic originating from the subnet
-// to be routed according to the routes in the route table. The action returns
-// an association ID, which you need in order to disassociate the route table
-// from the subnet later. A route table can be associated with multiple subnets.
-//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) AssociateRouteTable(input *AssociateRouteTableInput) (*AssociateRouteTableOutput, error) {
-	req, out := c.AssociateRouteTableRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAttachClassicLinkVpc = "AttachClassicLinkVpc"
-
-// AttachClassicLinkVpcRequest generates a request for the AttachClassicLinkVpc operation.
-func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req *request.Request, output *AttachClassicLinkVpcOutput) {
-	op := &request.Operation{
-		Name:       opAttachClassicLinkVpc,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AttachClassicLinkVpcInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AttachClassicLinkVpcOutput{}
-	req.Data = output
-	return
-}
-
-// Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or
-// more of the VPC's security groups. You cannot link an EC2-Classic instance
-// to more than one VPC at a time. You can only link an instance that's in the
-// running state. An instance is automatically unlinked from a VPC when it's
-// stopped - you can link it to the VPC again when you restart it.
-//
-// After you've linked an instance, you cannot change the VPC security groups
-// that are associated with it. To change the security groups, you must first
-// unlink the instance, and then link it again.
-//
-// Linking your instance to a VPC is sometimes referred to as attaching your
-// instance.
-func (c *EC2) AttachClassicLinkVpc(input *AttachClassicLinkVpcInput) (*AttachClassicLinkVpcOutput, error) {
-	req, out := c.AttachClassicLinkVpcRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAttachInternetGateway = "AttachInternetGateway"
-
-// AttachInternetGatewayRequest generates a request for the AttachInternetGateway operation.
-func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (req *request.Request, output *AttachInternetGatewayOutput) {
-	op := &request.Operation{
-		Name:       opAttachInternetGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AttachInternetGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AttachInternetGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Attaches an Internet gateway to a VPC, enabling connectivity between the
-// Internet and the VPC. For more information about your VPC and Internet gateway,
-// see the Amazon Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
-func (c *EC2) AttachInternetGateway(input *AttachInternetGatewayInput) (*AttachInternetGatewayOutput, error) {
-	req, out := c.AttachInternetGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAttachNetworkInterface = "AttachNetworkInterface"
-
-// AttachNetworkInterfaceRequest generates a request for the AttachNetworkInterface operation.
-func (c *EC2) AttachNetworkInterfaceRequest(input *AttachNetworkInterfaceInput) (req *request.Request, output *AttachNetworkInterfaceOutput) {
-	op := &request.Operation{
-		Name:       opAttachNetworkInterface,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AttachNetworkInterfaceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AttachNetworkInterfaceOutput{}
-	req.Data = output
-	return
-}
-
-// Attaches a network interface to an instance.
-func (c *EC2) AttachNetworkInterface(input *AttachNetworkInterfaceInput) (*AttachNetworkInterfaceOutput, error) {
-	req, out := c.AttachNetworkInterfaceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAttachVolume = "AttachVolume"
-
-// AttachVolumeRequest generates a request for the AttachVolume operation.
-func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Request, output *VolumeAttachment) {
-	op := &request.Operation{
-		Name:       opAttachVolume,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AttachVolumeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &VolumeAttachment{}
-	req.Data = output
-	return
-}
-
-// Attaches an EBS volume to a running or stopped instance and exposes it to
-// the instance with the specified device name.
-//
-// Encrypted EBS volumes may only be attached to instances that support Amazon
-// EBS encryption. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// For a list of supported device names, see Attaching an EBS Volume to an
-// Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html).
-// Any device names that aren't reserved for instance store volumes can be used
-// for EBS volumes. For more information, see Amazon EC2 Instance Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// If a volume has an AWS Marketplace product code:
-//
-//  The volume can be attached only to a stopped instance. AWS Marketplace
-// product codes are copied from the volume to the instance. You must be subscribed
-// to the product. The instance type and operating system of the instance must
-// support the product. For example, you can't detach a volume from a Windows
-// instance and attach it to a Linux instance.  For an overview of the AWS Marketplace,
-// see Introducing AWS Marketplace (https://aws.amazon.com/marketplace/help/200900000).
-//
-// For more information about EBS volumes, see Attaching Amazon EBS Volumes
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) AttachVolume(input *AttachVolumeInput) (*VolumeAttachment, error) {
-	req, out := c.AttachVolumeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAttachVpnGateway = "AttachVpnGateway"
-
-// AttachVpnGatewayRequest generates a request for the AttachVpnGateway operation.
-func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *request.Request, output *AttachVpnGatewayOutput) {
-	op := &request.Operation{
-		Name:       opAttachVpnGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AttachVpnGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AttachVpnGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Attaches a virtual private gateway to a VPC. For more information, see Adding
-// a Hardware Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) AttachVpnGateway(input *AttachVpnGatewayInput) (*AttachVpnGatewayOutput, error) {
-	req, out := c.AttachVpnGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress"
-
-// AuthorizeSecurityGroupEgressRequest generates a request for the AuthorizeSecurityGroupEgress operation.
-func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupEgressInput) (req *request.Request, output *AuthorizeSecurityGroupEgressOutput) {
-	op := &request.Operation{
-		Name:       opAuthorizeSecurityGroupEgress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AuthorizeSecurityGroupEgressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AuthorizeSecurityGroupEgressOutput{}
-	req.Data = output
-	return
-}
-
-// Adds one or more egress rules to a security group for use with a VPC. Specifically,
-// this action permits instances to send traffic to one or more destination
-// CIDR IP address ranges, or to one or more destination security groups for
-// the same VPC.
-//
-//  You can have up to 50 rules per security group (covering both ingress and
-// egress rules).
-//
-//  A security group is for use with instances either in the EC2-Classic platform
-// or in a specific VPC. This action doesn't apply to security groups for use
-// in EC2-Classic. For more information, see Security Groups for Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
-// in the Amazon Virtual Private Cloud User Guide.
-//
-// Each rule consists of the protocol (for example, TCP), plus either a CIDR
-// range or a source group. For the TCP and UDP protocols, you must also specify
-// the destination port or port range. For the ICMP protocol, you must also
-// specify the ICMP type and code. You can use -1 for the type or code to mean
-// all types or all codes.
-//
-// Rule changes are propagated to affected instances as quickly as possible.
-// However, a small delay might occur.
-func (c *EC2) AuthorizeSecurityGroupEgress(input *AuthorizeSecurityGroupEgressInput) (*AuthorizeSecurityGroupEgressOutput, error) {
-	req, out := c.AuthorizeSecurityGroupEgressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress"
-
-// AuthorizeSecurityGroupIngressRequest generates a request for the AuthorizeSecurityGroupIngress operation.
-func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroupIngressInput) (req *request.Request, output *AuthorizeSecurityGroupIngressOutput) {
-	op := &request.Operation{
-		Name:       opAuthorizeSecurityGroupIngress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &AuthorizeSecurityGroupIngressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &AuthorizeSecurityGroupIngressOutput{}
-	req.Data = output
-	return
-}
-
-// Adds one or more ingress rules to a security group.
-//
-//  EC2-Classic: You can have up to 100 rules per group.
-//
-// EC2-VPC: You can have up to 50 rules per group (covering both ingress and
-// egress rules).
-//
-//  Rule changes are propagated to instances within the security group as quickly
-// as possible. However, a small delay might occur.
-//
-// [EC2-Classic] This action gives one or more CIDR IP address ranges permission
-// to access a security group in your account, or gives one or more security
-// groups (called the source groups) permission to access a security group for
-// your account. A source group can be for your own AWS account, or another.
-//
-// [EC2-VPC] This action gives one or more CIDR IP address ranges permission
-// to access a security group in your VPC, or gives one or more other security
-// groups (called the source groups) permission to access a security group for
-// your VPC. The security groups must all be for the same VPC.
-func (c *EC2) AuthorizeSecurityGroupIngress(input *AuthorizeSecurityGroupIngressInput) (*AuthorizeSecurityGroupIngressOutput, error) {
-	req, out := c.AuthorizeSecurityGroupIngressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opBundleInstance = "BundleInstance"
-
-// BundleInstanceRequest generates a request for the BundleInstance operation.
-func (c *EC2) BundleInstanceRequest(input *BundleInstanceInput) (req *request.Request, output *BundleInstanceOutput) {
-	op := &request.Operation{
-		Name:       opBundleInstance,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &BundleInstanceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &BundleInstanceOutput{}
-	req.Data = output
-	return
-}
-
-// Bundles an Amazon instance store-backed Windows instance.
-//
-// During bundling, only the root device volume (C:\) is bundled. Data on other
-// instance store volumes is not preserved.
-//
-//  This action is not applicable for Linux/Unix instances or Windows instances
-// that are backed by Amazon EBS.
-//
-//  For more information, see Creating an Instance Store-Backed Windows AMI
-// (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_InstanceStoreBacked_WinAMI.html).
-func (c *EC2) BundleInstance(input *BundleInstanceInput) (*BundleInstanceOutput, error) {
-	req, out := c.BundleInstanceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelBundleTask = "CancelBundleTask"
-
-// CancelBundleTaskRequest generates a request for the CancelBundleTask operation.
-func (c *EC2) CancelBundleTaskRequest(input *CancelBundleTaskInput) (req *request.Request, output *CancelBundleTaskOutput) {
-	op := &request.Operation{
-		Name:       opCancelBundleTask,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelBundleTaskInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelBundleTaskOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels a bundling operation for an instance store-backed Windows instance.
-func (c *EC2) CancelBundleTask(input *CancelBundleTaskInput) (*CancelBundleTaskOutput, error) {
-	req, out := c.CancelBundleTaskRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelConversionTask = "CancelConversionTask"
-
-// CancelConversionTaskRequest generates a request for the CancelConversionTask operation.
-func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req *request.Request, output *CancelConversionTaskOutput) {
-	op := &request.Operation{
-		Name:       opCancelConversionTask,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelConversionTaskInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelConversionTaskOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels an active conversion task. The task can be the import of an instance
-// or volume. The action removes all artifacts of the conversion, including
-// a partially uploaded volume or instance. If the conversion is complete or
-// is in the process of transferring the final disk image, the command fails
-// and returns an exception.
-//
-// For more information, see Using the Command Line Tools to Import Your Virtual
-// Machine to Amazon EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CancelConversionTask(input *CancelConversionTaskInput) (*CancelConversionTaskOutput, error) {
-	req, out := c.CancelConversionTaskRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelExportTask = "CancelExportTask"
-
-// CancelExportTaskRequest generates a request for the CancelExportTask operation.
-func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *request.Request, output *CancelExportTaskOutput) {
-	op := &request.Operation{
-		Name:       opCancelExportTask,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelExportTaskInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelExportTaskOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels an active export task. The request removes all artifacts of the export,
-// including any partially-created Amazon S3 objects. If the export task is
-// complete or is in the process of transferring the final disk image, the command
-// fails and returns an error.
-func (c *EC2) CancelExportTask(input *CancelExportTaskInput) (*CancelExportTaskOutput, error) {
-	req, out := c.CancelExportTaskRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelImportTask = "CancelImportTask"
-
-// CancelImportTaskRequest generates a request for the CancelImportTask operation.
-func (c *EC2) CancelImportTaskRequest(input *CancelImportTaskInput) (req *request.Request, output *CancelImportTaskOutput) {
-	op := &request.Operation{
-		Name:       opCancelImportTask,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelImportTaskInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelImportTaskOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels an in-process import virtual machine or import snapshot task.
-func (c *EC2) CancelImportTask(input *CancelImportTaskInput) (*CancelImportTaskOutput, error) {
-	req, out := c.CancelImportTaskRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelReservedInstancesListing = "CancelReservedInstancesListing"
-
-// CancelReservedInstancesListingRequest generates a request for the CancelReservedInstancesListing operation.
-func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstancesListingInput) (req *request.Request, output *CancelReservedInstancesListingOutput) {
-	op := &request.Operation{
-		Name:       opCancelReservedInstancesListing,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelReservedInstancesListingInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelReservedInstancesListingOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels the specified Reserved Instance listing in the Reserved Instance
-// Marketplace.
-//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CancelReservedInstancesListing(input *CancelReservedInstancesListingInput) (*CancelReservedInstancesListingOutput, error) {
-	req, out := c.CancelReservedInstancesListingRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelSpotFleetRequests = "CancelSpotFleetRequests"
-
-// CancelSpotFleetRequestsRequest generates a request for the CancelSpotFleetRequests operation.
-func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput) (req *request.Request, output *CancelSpotFleetRequestsOutput) {
-	op := &request.Operation{
-		Name:       opCancelSpotFleetRequests,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelSpotFleetRequestsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelSpotFleetRequestsOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels the specified Spot fleet requests.
-//
-// After you cancel a Spot fleet request, the Spot fleet launches no new Spot
-// instances. You must specify whether the Spot fleet should also terminate
-// its Spot instances. If you terminate the instances, the Spot fleet request
-// enters the cancelled_terminating state. Otherwise, the Spot fleet request
-// enters the cancelled_running state and the instances continue to run until
-// they are interrupted or you terminate them manually.
-func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) {
-	req, out := c.CancelSpotFleetRequestsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests"
-
-// CancelSpotInstanceRequestsRequest generates a request for the CancelSpotInstanceRequests operation.
-func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequestsInput) (req *request.Request, output *CancelSpotInstanceRequestsOutput) {
-	op := &request.Operation{
-		Name:       opCancelSpotInstanceRequests,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CancelSpotInstanceRequestsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CancelSpotInstanceRequestsOutput{}
-	req.Data = output
-	return
-}
-
-// Cancels one or more Spot instance requests. Spot instances are instances
-// that Amazon EC2 starts on your behalf when the bid price that you specify
-// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price
-// based on available Spot instance capacity and current Spot instance requests.
-// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-//  Canceling a Spot instance request does not terminate running Spot instances
-// associated with the request.
-func (c *EC2) CancelSpotInstanceRequests(input *CancelSpotInstanceRequestsInput) (*CancelSpotInstanceRequestsOutput, error) {
-	req, out := c.CancelSpotInstanceRequestsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opConfirmProductInstance = "ConfirmProductInstance"
-
-// ConfirmProductInstanceRequest generates a request for the ConfirmProductInstance operation.
-func (c *EC2) ConfirmProductInstanceRequest(input *ConfirmProductInstanceInput) (req *request.Request, output *ConfirmProductInstanceOutput) {
-	op := &request.Operation{
-		Name:       opConfirmProductInstance,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ConfirmProductInstanceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ConfirmProductInstanceOutput{}
-	req.Data = output
-	return
-}
-
-// Determines whether a product code is associated with an instance. This action
-// can only be used by the owner of the product code. It is useful when a product
-// code owner needs to verify whether another user's instance is eligible for
-// support.
-func (c *EC2) ConfirmProductInstance(input *ConfirmProductInstanceInput) (*ConfirmProductInstanceOutput, error) {
-	req, out := c.ConfirmProductInstanceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCopyImage = "CopyImage"
-
-// CopyImageRequest generates a request for the CopyImage operation.
-func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, output *CopyImageOutput) {
-	op := &request.Operation{
-		Name:       opCopyImage,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CopyImageInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CopyImageOutput{}
-	req.Data = output
-	return
-}
-
-// Initiates the copy of an AMI from the specified source region to the current
-// region. You specify the destination region by using its endpoint when making
-// the request. AMIs that use encrypted EBS snapshots cannot be copied with
-// this method.
-//
-// For more information, see Copying AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CopyImage(input *CopyImageInput) (*CopyImageOutput, error) {
-	req, out := c.CopyImageRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCopySnapshot = "CopySnapshot"
-
-// CopySnapshotRequest generates a request for the CopySnapshot operation.
-func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) {
-	op := &request.Operation{
-		Name:       opCopySnapshot,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CopySnapshotInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CopySnapshotOutput{}
-	req.Data = output
-	return
-}
-
-// Copies a point-in-time snapshot of an EBS volume and stores it in Amazon
-// S3. You can copy the snapshot within the same region or from one region to
-// another. You can use the snapshot to create EBS volumes or Amazon Machine
-// Images (AMIs). The snapshot is copied to the regional endpoint that you send
-// the HTTP request to.
-//
-// Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted
-// snapshots remain unencrypted, unless the Encrypted flag is specified during
-// the snapshot copy operation. By default, encrypted snapshot copies use the
-// default AWS Key Management Service (AWS KMS) customer master key (CMK); however,
-// you can specify a non-default CMK with the KmsKeyId parameter.
-//
-// For more information, see Copying an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) {
-	req, out := c.CopySnapshotRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateCustomerGateway = "CreateCustomerGateway"
-
-// CreateCustomerGatewayRequest generates a request for the CreateCustomerGateway operation.
-func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (req *request.Request, output *CreateCustomerGatewayOutput) {
-	op := &request.Operation{
-		Name:       opCreateCustomerGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateCustomerGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateCustomerGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Provides information to AWS about your VPN customer gateway device. The customer
-// gateway is the appliance at your end of the VPN connection. (The device on
-// the AWS side of the VPN connection is the virtual private gateway.) You must
-// provide the Internet-routable IP address of the customer gateway's external
-// interface. The IP address must be static and may be behind a device performing
-// network address translation (NAT).
-//
-// For devices that use Border Gateway Protocol (BGP), you can also provide
-// the device's BGP Autonomous System Number (ASN). You can use an existing
-// ASN assigned to your network. If you don't have an ASN already, you can use
-// a private ASN (in the 64512 - 65534 range).
-//
-//  Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with
-// the exception of 7224, which is reserved in the us-east-1 region, and 9059,
-// which is reserved in the eu-west-1 region.
-//
-//  For more information about VPN customer gateways, see Adding a Hardware
-// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-//
-//  You cannot create more than one customer gateway with the same VPN type,
-// IP address, and BGP ASN parameter values. If you run an identical request
-// more than one time, the first request creates the customer gateway, and subsequent
-// requests return information about the existing customer gateway. The subsequent
-// requests do not create new customer gateway resources.
-func (c *EC2) CreateCustomerGateway(input *CreateCustomerGatewayInput) (*CreateCustomerGatewayOutput, error) {
-	req, out := c.CreateCustomerGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateDhcpOptions = "CreateDhcpOptions"
-
-// CreateDhcpOptionsRequest generates a request for the CreateDhcpOptions operation.
-func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *request.Request, output *CreateDhcpOptionsOutput) {
-	op := &request.Operation{
-		Name:       opCreateDhcpOptions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateDhcpOptionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateDhcpOptionsOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a set of DHCP options for your VPC. After creating the set, you must
-// associate it with the VPC, causing all existing and new instances that you
-// launch in the VPC to use this set of DHCP options. The following are the
-// individual DHCP options you can specify. For more information about the options,
-// see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt).
-//
-//   domain-name-servers - The IP addresses of up to four domain name servers,
-// or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS.
-// If specifying more than one domain name server, specify the IP addresses
-// in a single parameter, separated by commas.  domain-name - If you're using
-// AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS
-// in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal).
-// Otherwise, specify a domain name (for example, MyCompany.com). Important:
-// Some Linux operating systems accept multiple domain names separated by spaces.
-// However, Windows and other Linux operating systems treat the value as a single
-// domain, which results in unexpected behavior. If your DHCP options set is
-// associated with a VPC that has instances with multiple operating systems,
-// specify only one domain name.  ntp-servers - The IP addresses of up to four
-// Network Time Protocol (NTP) servers.  netbios-name-servers - The IP addresses
-// of up to four NetBIOS name servers.  netbios-node-type - The NetBIOS node
-// type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast
-// are not currently supported). For more information about these node types,
-// see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt).   Your VPC automatically
-// starts out with a set of DHCP options that includes only a DNS server that
-// we provide (AmazonProvidedDNS). If you create a set of options, and if your
-// VPC has an Internet gateway, make sure to set the domain-name-servers option
-// either to AmazonProvidedDNS or to a domain name server of your choice. For
-// more information about DHCP options, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateDhcpOptions(input *CreateDhcpOptionsInput) (*CreateDhcpOptionsOutput, error) {
-	req, out := c.CreateDhcpOptionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateFlowLogs = "CreateFlowLogs"
-
-// CreateFlowLogsRequest generates a request for the CreateFlowLogs operation.
-func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Request, output *CreateFlowLogsOutput) {
-	op := &request.Operation{
-		Name:       opCreateFlowLogs,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateFlowLogsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateFlowLogsOutput{}
-	req.Data = output
-	return
-}
-
-// Creates one or more flow logs to capture IP traffic for a specific network
-// interface, subnet, or VPC. Flow logs are delivered to a specified log group
-// in Amazon CloudWatch Logs. If you specify a VPC or subnet in the request,
-// a log stream is created in CloudWatch Logs for each network interface in
-// the subnet or VPC. Log streams can include information about accepted and
-// rejected traffic to a network interface. You can view the data in your log
-// streams using Amazon CloudWatch Logs.
-//
-// In your request, you must also specify an IAM role that has permission to
-// publish logs to CloudWatch Logs.
-func (c *EC2) CreateFlowLogs(input *CreateFlowLogsInput) (*CreateFlowLogsOutput, error) {
-	req, out := c.CreateFlowLogsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateImage = "CreateImage"
-
-// CreateImageRequest generates a request for the CreateImage operation.
-func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request, output *CreateImageOutput) {
-	op := &request.Operation{
-		Name:       opCreateImage,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateImageInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateImageOutput{}
-	req.Data = output
-	return
-}
-
-// Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that
-// is either running or stopped.
-//
-// If you customized your instance with instance store volumes or EBS volumes
-// in addition to the root device volume, the new AMI contains block device
-// mapping information for those volumes. When you launch an instance from this
-// new AMI, the instance automatically launches with those additional volumes.
-//
-// For more information, see Creating Amazon EBS-Backed Linux AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateImage(input *CreateImageInput) (*CreateImageOutput, error) {
-	req, out := c.CreateImageRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateInstanceExportTask = "CreateInstanceExportTask"
-
-// CreateInstanceExportTaskRequest generates a request for the CreateInstanceExportTask operation.
-func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInput) (req *request.Request, output *CreateInstanceExportTaskOutput) {
-	op := &request.Operation{
-		Name:       opCreateInstanceExportTask,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateInstanceExportTaskInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateInstanceExportTaskOutput{}
-	req.Data = output
-	return
-}
-
-// Exports a running or stopped instance to an S3 bucket.
-//
-// For information about the supported operating systems, image formats, and
-// known limitations for the types of instances you can export, see Exporting
-// EC2 Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExportingEC2Instances.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateInstanceExportTask(input *CreateInstanceExportTaskInput) (*CreateInstanceExportTaskOutput, error) {
-	req, out := c.CreateInstanceExportTaskRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateInternetGateway = "CreateInternetGateway"
-
-// CreateInternetGatewayRequest generates a request for the CreateInternetGateway operation.
-func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (req *request.Request, output *CreateInternetGatewayOutput) {
-	op := &request.Operation{
-		Name:       opCreateInternetGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateInternetGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateInternetGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Creates an Internet gateway for use with a VPC. After creating the Internet
-// gateway, you attach it to a VPC using AttachInternetGateway.
-//
-// For more information about your VPC and Internet gateway, see the Amazon
-// Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
-func (c *EC2) CreateInternetGateway(input *CreateInternetGatewayInput) (*CreateInternetGatewayOutput, error) {
-	req, out := c.CreateInternetGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateKeyPair = "CreateKeyPair"
-
-// CreateKeyPairRequest generates a request for the CreateKeyPair operation.
-func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Request, output *CreateKeyPairOutput) {
-	op := &request.Operation{
-		Name:       opCreateKeyPair,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateKeyPairInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateKeyPairOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores
-// the public key and displays the private key for you to save to a file. The
-// private key is returned as an unencrypted PEM encoded PKCS#8 private key.
-// If a key with the specified name already exists, Amazon EC2 returns an error.
-//
-// You can have up to five thousand key pairs per region.
-//
-// The key pair returned to you is available only in the region in which you
-// create it. To create a key pair that is available in all regions, use ImportKeyPair.
-//
-// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateKeyPair(input *CreateKeyPairInput) (*CreateKeyPairOutput, error) {
-	req, out := c.CreateKeyPairRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateNetworkAcl = "CreateNetworkAcl"
-
-// CreateNetworkAclRequest generates a request for the CreateNetworkAcl operation.
-func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *request.Request, output *CreateNetworkAclOutput) {
-	op := &request.Operation{
-		Name:       opCreateNetworkAcl,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateNetworkAclInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateNetworkAclOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a network ACL in a VPC. Network ACLs provide an optional layer of
-// security (in addition to security groups) for the instances in your VPC.
-//
-// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateNetworkAcl(input *CreateNetworkAclInput) (*CreateNetworkAclOutput, error) {
-	req, out := c.CreateNetworkAclRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateNetworkAclEntry = "CreateNetworkAclEntry"
-
-// CreateNetworkAclEntryRequest generates a request for the CreateNetworkAclEntry operation.
-func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (req *request.Request, output *CreateNetworkAclEntryOutput) {
-	op := &request.Operation{
-		Name:       opCreateNetworkAclEntry,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateNetworkAclEntryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateNetworkAclEntryOutput{}
-	req.Data = output
-	return
-}
-
-// Creates an entry (a rule) in a network ACL with the specified rule number.
-// Each network ACL has a set of numbered ingress rules and a separate set of
-// numbered egress rules. When determining whether a packet should be allowed
-// in or out of a subnet associated with the ACL, we process the entries in
-// the ACL according to the rule numbers, in ascending order. Each network ACL
-// has a set of ingress rules and a separate set of egress rules.
-//
-// We recommend that you leave room between the rule numbers (for example,
-// 100, 110, 120, ...), and not number them one right after the other (for example,
-// 101, 102, 103, ...). This makes it easier to add a rule between existing
-// ones without having to renumber the rules.
-//
-// After you add an entry, you can't modify it; you must either replace it,
-// or create an entry and delete the old one.
-//
-// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateNetworkAclEntry(input *CreateNetworkAclEntryInput) (*CreateNetworkAclEntryOutput, error) {
-	req, out := c.CreateNetworkAclEntryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateNetworkInterface = "CreateNetworkInterface"
-
-// CreateNetworkInterfaceRequest generates a request for the CreateNetworkInterface operation.
-func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput) (req *request.Request, output *CreateNetworkInterfaceOutput) {
-	op := &request.Operation{
-		Name:       opCreateNetworkInterface,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateNetworkInterfaceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateNetworkInterfaceOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a network interface in the specified subnet.
-//
-// For more information about network interfaces, see Elastic Network Interfaces
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) in the
-// Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateNetworkInterface(input *CreateNetworkInterfaceInput) (*CreateNetworkInterfaceOutput, error) {
-	req, out := c.CreateNetworkInterfaceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreatePlacementGroup = "CreatePlacementGroup"
-
-// CreatePlacementGroupRequest generates a request for the CreatePlacementGroup operation.
-func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req *request.Request, output *CreatePlacementGroupOutput) {
-	op := &request.Operation{
-		Name:       opCreatePlacementGroup,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreatePlacementGroupInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreatePlacementGroupOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a placement group that you launch cluster instances into. You must
-// give the group a name that's unique within the scope of your account.
-//
-// For more information about placement groups and cluster instances, see Cluster
-// Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreatePlacementGroup(input *CreatePlacementGroupInput) (*CreatePlacementGroupOutput, error) {
-	req, out := c.CreatePlacementGroupRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateReservedInstancesListing = "CreateReservedInstancesListing"
-
-// CreateReservedInstancesListingRequest generates a request for the CreateReservedInstancesListing operation.
-func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstancesListingInput) (req *request.Request, output *CreateReservedInstancesListingOutput) {
-	op := &request.Operation{
-		Name:       opCreateReservedInstancesListing,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateReservedInstancesListingInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateReservedInstancesListingOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved
-// Instance Marketplace. You can submit one Reserved Instance listing at a time.
-// To get a list of your Reserved Instances, you can use the DescribeReservedInstances
-// operation.
-//
-// The Reserved Instance Marketplace matches sellers who want to resell Reserved
-// Instance capacity that they no longer need with buyers who want to purchase
-// additional capacity. Reserved Instances bought and sold through the Reserved
-// Instance Marketplace work like any other Reserved Instances.
-//
-// To sell your Reserved Instances, you must first register as a seller in
-// the Reserved Instance Marketplace. After completing the registration process,
-// you can create a Reserved Instance Marketplace listing of some or all of
-// your Reserved Instances, and specify the upfront price to receive for them.
-// Your Reserved Instance listings then become available for purchase. To view
-// the details of your Reserved Instance listing, you can use the DescribeReservedInstancesListings
-// operation.
-//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateReservedInstancesListing(input *CreateReservedInstancesListingInput) (*CreateReservedInstancesListingOutput, error) {
-	req, out := c.CreateReservedInstancesListingRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateRoute = "CreateRoute"
-
-// CreateRouteRequest generates a request for the CreateRoute operation.
-func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) {
-	op := &request.Operation{
-		Name:       opCreateRoute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateRouteInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateRouteOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a route in a route table within a VPC.
-//
-// You must specify one of the following targets: Internet gateway or virtual
-// private gateway, NAT instance, VPC peering connection, or network interface.
-//
-// When determining how to route traffic, we use the route with the most specific
-// match. For example, let's say the traffic is destined for 192.0.2.3, and
-// the route table includes the following two routes:
-//
-//   192.0.2.0/24 (goes to some target A)
-//
-//   192.0.2.0/28 (goes to some target B)
-//
-//   Both routes apply to the traffic destined for 192.0.2.3. However, the
-// second route in the list covers a smaller number of IP addresses and is therefore
-// more specific, so we use that route to determine where to target the traffic.
-//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) {
-	req, out := c.CreateRouteRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateRouteTable = "CreateRouteTable"
-
-// CreateRouteTableRequest generates a request for the CreateRouteTable operation.
-func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *request.Request, output *CreateRouteTableOutput) {
-	op := &request.Operation{
-		Name:       opCreateRouteTable,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateRouteTableInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateRouteTableOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a route table for the specified VPC. After you create a route table,
-// you can add routes and associate the table with a subnet.
-//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateRouteTable(input *CreateRouteTableInput) (*CreateRouteTableOutput, error) {
-	req, out := c.CreateRouteTableRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateSecurityGroup = "CreateSecurityGroup"
-
-// CreateSecurityGroupRequest generates a request for the CreateSecurityGroup operation.
-func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req *request.Request, output *CreateSecurityGroupOutput) {
-	op := &request.Operation{
-		Name:       opCreateSecurityGroup,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateSecurityGroupInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateSecurityGroupOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a security group.
-//
-// A security group is for use with instances either in the EC2-Classic platform
-// or in a specific VPC. For more information, see Amazon EC2 Security Groups
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
-// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your
-// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
-// in the Amazon Virtual Private Cloud User Guide.
-//
-//  EC2-Classic: You can have up to 500 security groups.
-//
-// EC2-VPC: You can create up to 100 security groups per VPC.
-//
-//  When you create a security group, you specify a friendly name of your choice.
-// You can have a security group for use in EC2-Classic with the same name as
-// a security group for use in a VPC. However, you can't have two security groups
-// for use in EC2-Classic with the same name or two security groups for use
-// in a VPC with the same name.
-//
-// You have a default security group for use in EC2-Classic and a default security
-// group for use in your VPC. If you don't specify a security group when you
-// launch an instance, the instance is launched into the appropriate default
-// security group. A default security group includes a default rule that grants
-// instances unrestricted network access to each other.
-//
-// You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress,
-// AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.
-func (c *EC2) CreateSecurityGroup(input *CreateSecurityGroupInput) (*CreateSecurityGroupOutput, error) {
-	req, out := c.CreateSecurityGroupRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateSnapshot = "CreateSnapshot"
-
-// CreateSnapshotRequest generates a request for the CreateSnapshot operation.
-func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *Snapshot) {
-	op := &request.Operation{
-		Name:       opCreateSnapshot,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateSnapshotInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &Snapshot{}
-	req.Data = output
-	return
-}
-
-// Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use
-// snapshots for backups, to make copies of EBS volumes, and to save data before
-// shutting down an instance.
-//
-// When a snapshot is created, any AWS Marketplace product codes that are associated
-// with the source volume are propagated to the snapshot.
-//
-// You can take a snapshot of an attached volume that is in use. However, snapshots
-// only capture data that has been written to your EBS volume at the time the
-// snapshot command is issued; this may exclude any data that has been cached
-// by any applications or the operating system. If you can pause any file systems
-// on the volume long enough to take a snapshot, your snapshot should be complete.
-// However, if you cannot pause all file writes to the volume, you should unmount
-// the volume from within the instance, issue the snapshot command, and then
-// remount the volume to ensure a consistent and complete snapshot. You may
-// remount and use your volume while the snapshot status is pending.
-//
-// To create a snapshot for EBS volumes that serve as root devices, you should
-// stop the instance before taking the snapshot.
-//
-// Snapshots that are taken from encrypted volumes are automatically encrypted.
-// Volumes that are created from encrypted snapshots are also automatically
-// encrypted. Your encrypted volumes and any associated snapshots always remain
-// protected.
-//
-// For more information, see Amazon Elastic Block Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)
-// and Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateSnapshot(input *CreateSnapshotInput) (*Snapshot, error) {
-	req, out := c.CreateSnapshotRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription"
-
-// CreateSpotDatafeedSubscriptionRequest generates a request for the CreateSpotDatafeedSubscription operation.
-func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSubscriptionInput) (req *request.Request, output *CreateSpotDatafeedSubscriptionOutput) {
-	op := &request.Operation{
-		Name:       opCreateSpotDatafeedSubscription,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateSpotDatafeedSubscriptionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateSpotDatafeedSubscriptionOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a data feed for Spot instances, enabling you to view Spot instance
-// usage logs. You can create one data feed per AWS account. For more information,
-// see Spot Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateSpotDatafeedSubscription(input *CreateSpotDatafeedSubscriptionInput) (*CreateSpotDatafeedSubscriptionOutput, error) {
-	req, out := c.CreateSpotDatafeedSubscriptionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateSubnet = "CreateSubnet"
-
-// CreateSubnetRequest generates a request for the CreateSubnet operation.
-func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Request, output *CreateSubnetOutput) {
-	op := &request.Operation{
-		Name:       opCreateSubnet,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateSubnetInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateSubnetOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a subnet in an existing VPC.
-//
-// When you create each subnet, you provide the VPC ID and the CIDR block you
-// want for the subnet. After you create a subnet, you can't change its CIDR
-// block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming
-// you want only a single subnet in the VPC), or a subset of the VPC's CIDR
-// block. If you create more than one subnet in a VPC, the subnets' CIDR blocks
-// must not overlap. The smallest subnet (and VPC) you can create uses a /28
-// netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP
-// addresses).
-//
-//  AWS reserves both the first four and the last IP address in each subnet's
-// CIDR block. They're not available for use.
-//
-//  If you add more than one subnet to a VPC, they're set up in a star topology
-// with a logical router in the middle.
-//
-// If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP
-// address doesn't change if you stop and restart the instance (unlike a similar
-// instance launched outside a VPC, which gets a new IP address when restarted).
-// It's therefore possible to have a subnet with no running instances (they're
-// all stopped), but no remaining IP addresses available.
-//
-// For more information about subnets, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateSubnet(input *CreateSubnetInput) (*CreateSubnetOutput, error) {
-	req, out := c.CreateSubnetRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateTags = "CreateTags"
-
-// CreateTagsRequest generates a request for the CreateTags operation.
-func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, output *CreateTagsOutput) {
-	op := &request.Operation{
-		Name:       opCreateTags,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateTagsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateTagsOutput{}
-	req.Data = output
-	return
-}
-
-// Adds or overwrites one or more tags for the specified Amazon EC2 resource
-// or resources. Each resource can have a maximum of 10 tags. Each tag consists
-// of a key and optional value. Tag keys must be unique per resource.
-//
-// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
-// in the Amazon Elastic Compute Cloud User Guide. For more information about
-// creating IAM policies that control users' access to resources based on tags,
-// see Supported Resource-Level Permissions for Amazon EC2 API Actions (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateTags(input *CreateTagsInput) (*CreateTagsOutput, error) {
-	req, out := c.CreateTagsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVolume = "CreateVolume"
-
-// CreateVolumeRequest generates a request for the CreateVolume operation.
-func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Request, output *Volume) {
-	op := &request.Operation{
-		Name:       opCreateVolume,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVolumeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &Volume{}
-	req.Data = output
-	return
-}
-
-// Creates an EBS volume that can be attached to an instance in the same Availability
-// Zone. The volume is created in the regional endpoint that you send the HTTP
-// request to. For more information see Regions and Endpoints (http://docs.aws.amazon.com/general/latest/gr/rande.html).
-//
-// You can create a new empty volume or restore a volume from an EBS snapshot.
-// Any AWS Marketplace product codes from the snapshot are propagated to the
-// volume.
-//
-// You can create encrypted volumes with the Encrypted parameter. Encrypted
-// volumes may only be attached to instances that support Amazon EBS encryption.
-// Volumes that are created from encrypted snapshots are also automatically
-// encrypted. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// For more information, see Creating or Restoring an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) CreateVolume(input *CreateVolumeInput) (*Volume, error) {
-	req, out := c.CreateVolumeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpc = "CreateVpc"
-
-// CreateVpcRequest generates a request for the CreateVpc operation.
-func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, output *CreateVpcOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpc,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpcInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpcOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a VPC with the specified CIDR block.
-//
-// The smallest VPC you can create uses a /28 netmask (16 IP addresses), and
-// the largest uses a /16 netmask (65,536 IP addresses). To help you decide
-// how big to make your VPC, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
-// in the Amazon Virtual Private Cloud User Guide.
-//
-// By default, each instance you launch in the VPC has the default DHCP options,
-// which includes only a default DNS server that we provide (AmazonProvidedDNS).
-// For more information about DHCP options, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateVpc(input *CreateVpcInput) (*CreateVpcOutput, error) {
-	req, out := c.CreateVpcRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpcEndpoint = "CreateVpcEndpoint"
-
-// CreateVpcEndpointRequest generates a request for the CreateVpcEndpoint operation.
-func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *request.Request, output *CreateVpcEndpointOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpcEndpoint,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpcEndpointInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpcEndpointOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a VPC endpoint for a specified AWS service. An endpoint enables you
-// to create a private connection between your VPC and another AWS service in
-// your account. You can specify an endpoint policy to attach to the endpoint
-// that will control access to the service from your VPC. You can also specify
-// the VPC route tables that use the endpoint.
-//
-// Currently, only endpoints to Amazon S3 are supported.
-func (c *EC2) CreateVpcEndpoint(input *CreateVpcEndpointInput) (*CreateVpcEndpointOutput, error) {
-	req, out := c.CreateVpcEndpointRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection"
-
-// CreateVpcPeeringConnectionRequest generates a request for the CreateVpcPeeringConnection operation.
-func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectionInput) (req *request.Request, output *CreateVpcPeeringConnectionOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpcPeeringConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpcPeeringConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpcPeeringConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Requests a VPC peering connection between two VPCs: a requester VPC that
-// you own and a peer VPC with which to create the connection. The peer VPC
-// can belong to another AWS account. The requester VPC and peer VPC cannot
-// have overlapping CIDR blocks.
-//
-// The owner of the peer VPC must accept the peering request to activate the
-// peering connection. The VPC peering connection request expires after 7 days,
-// after which it cannot be accepted or rejected.
-//
-// A CreateVpcPeeringConnection request between VPCs with overlapping CIDR
-// blocks results in the VPC peering connection having a status of failed.
-func (c *EC2) CreateVpcPeeringConnection(input *CreateVpcPeeringConnectionInput) (*CreateVpcPeeringConnectionOutput, error) {
-	req, out := c.CreateVpcPeeringConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpnConnection = "CreateVpnConnection"
-
-// CreateVpnConnectionRequest generates a request for the CreateVpnConnection operation.
-func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req *request.Request, output *CreateVpnConnectionOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpnConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpnConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpnConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a VPN connection between an existing virtual private gateway and
-// a VPN customer gateway. The only supported connection type is ipsec.1.
-//
-// The response includes information that you need to give to your network
-// administrator to configure your customer gateway.
-//
-//  We strongly recommend that you use HTTPS when calling this operation because
-// the response contains sensitive cryptographic information for configuring
-// your customer gateway.
-//
-//  If you decide to shut down your VPN connection for any reason and later
-// create a new VPN connection, you must reconfigure your customer gateway with
-// the new information returned from this call.
-//
-// For more information about VPN connections, see Adding a Hardware Virtual
-// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateVpnConnection(input *CreateVpnConnectionInput) (*CreateVpnConnectionOutput, error) {
-	req, out := c.CreateVpnConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute"
-
-// CreateVpnConnectionRouteRequest generates a request for the CreateVpnConnectionRoute operation.
-func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInput) (req *request.Request, output *CreateVpnConnectionRouteOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpnConnectionRoute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpnConnectionRouteInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpnConnectionRouteOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a static route associated with a VPN connection between an existing
-// virtual private gateway and a VPN customer gateway. The static route allows
-// traffic to be routed from the virtual private gateway to the VPN customer
-// gateway.
-//
-// For more information about VPN connections, see Adding a Hardware Virtual
-// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateVpnConnectionRoute(input *CreateVpnConnectionRouteInput) (*CreateVpnConnectionRouteOutput, error) {
-	req, out := c.CreateVpnConnectionRouteRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opCreateVpnGateway = "CreateVpnGateway"
-
-// CreateVpnGatewayRequest generates a request for the CreateVpnGateway operation.
-func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *request.Request, output *CreateVpnGatewayOutput) {
-	op := &request.Operation{
-		Name:       opCreateVpnGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &CreateVpnGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &CreateVpnGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a virtual private gateway. A virtual private gateway is the endpoint
-// on the VPC side of your VPN connection. You can create a virtual private
-// gateway before creating the VPC itself.
-//
-// For more information about virtual private gateways, see Adding a Hardware
-// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) CreateVpnGateway(input *CreateVpnGatewayInput) (*CreateVpnGatewayOutput, error) {
-	req, out := c.CreateVpnGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteCustomerGateway = "DeleteCustomerGateway"
-
-// DeleteCustomerGatewayRequest generates a request for the DeleteCustomerGateway operation.
-func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (req *request.Request, output *DeleteCustomerGatewayOutput) {
-	op := &request.Operation{
-		Name:       opDeleteCustomerGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteCustomerGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteCustomerGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified customer gateway. You must delete the VPN connection
-// before you can delete the customer gateway.
-func (c *EC2) DeleteCustomerGateway(input *DeleteCustomerGatewayInput) (*DeleteCustomerGatewayOutput, error) {
-	req, out := c.DeleteCustomerGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteDhcpOptions = "DeleteDhcpOptions"
-
-// DeleteDhcpOptionsRequest generates a request for the DeleteDhcpOptions operation.
-func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *request.Request, output *DeleteDhcpOptionsOutput) {
-	op := &request.Operation{
-		Name:       opDeleteDhcpOptions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteDhcpOptionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteDhcpOptionsOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified set of DHCP options. You must disassociate the set
-// of DHCP options before you can delete it. You can disassociate the set of
-// DHCP options by associating either a new set of options or the default set
-// of options with the VPC.
-func (c *EC2) DeleteDhcpOptions(input *DeleteDhcpOptionsInput) (*DeleteDhcpOptionsOutput, error) {
-	req, out := c.DeleteDhcpOptionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteFlowLogs = "DeleteFlowLogs"
-
-// DeleteFlowLogsRequest generates a request for the DeleteFlowLogs operation.
-func (c *EC2) DeleteFlowLogsRequest(input *DeleteFlowLogsInput) (req *request.Request, output *DeleteFlowLogsOutput) {
-	op := &request.Operation{
-		Name:       opDeleteFlowLogs,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteFlowLogsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteFlowLogsOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes one or more flow logs.
-func (c *EC2) DeleteFlowLogs(input *DeleteFlowLogsInput) (*DeleteFlowLogsOutput, error) {
-	req, out := c.DeleteFlowLogsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteInternetGateway = "DeleteInternetGateway"
-
-// DeleteInternetGatewayRequest generates a request for the DeleteInternetGateway operation.
-func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (req *request.Request, output *DeleteInternetGatewayOutput) {
-	op := &request.Operation{
-		Name:       opDeleteInternetGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteInternetGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteInternetGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified Internet gateway. You must detach the Internet gateway
-// from the VPC before you can delete it.
-func (c *EC2) DeleteInternetGateway(input *DeleteInternetGatewayInput) (*DeleteInternetGatewayOutput, error) {
-	req, out := c.DeleteInternetGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteKeyPair = "DeleteKeyPair"
-
-// DeleteKeyPairRequest generates a request for the DeleteKeyPair operation.
-func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Request, output *DeleteKeyPairOutput) {
-	op := &request.Operation{
-		Name:       opDeleteKeyPair,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteKeyPairInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteKeyPairOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified key pair, by removing the public key from Amazon EC2.
-func (c *EC2) DeleteKeyPair(input *DeleteKeyPairInput) (*DeleteKeyPairOutput, error) {
-	req, out := c.DeleteKeyPairRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteNetworkAcl = "DeleteNetworkAcl"
-
-// DeleteNetworkAclRequest generates a request for the DeleteNetworkAcl operation.
-func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *request.Request, output *DeleteNetworkAclOutput) {
-	op := &request.Operation{
-		Name:       opDeleteNetworkAcl,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteNetworkAclInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteNetworkAclOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified network ACL. You can't delete the ACL if it's associated
-// with any subnets. You can't delete the default network ACL.
-func (c *EC2) DeleteNetworkAcl(input *DeleteNetworkAclInput) (*DeleteNetworkAclOutput, error) {
-	req, out := c.DeleteNetworkAclRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry"
-
-// DeleteNetworkAclEntryRequest generates a request for the DeleteNetworkAclEntry operation.
-func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (req *request.Request, output *DeleteNetworkAclEntryOutput) {
-	op := &request.Operation{
-		Name:       opDeleteNetworkAclEntry,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteNetworkAclEntryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteNetworkAclEntryOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified ingress or egress entry (rule) from the specified network
-// ACL.
-func (c *EC2) DeleteNetworkAclEntry(input *DeleteNetworkAclEntryInput) (*DeleteNetworkAclEntryOutput, error) {
-	req, out := c.DeleteNetworkAclEntryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteNetworkInterface = "DeleteNetworkInterface"
-
-// DeleteNetworkInterfaceRequest generates a request for the DeleteNetworkInterface operation.
-func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput) (req *request.Request, output *DeleteNetworkInterfaceOutput) {
-	op := &request.Operation{
-		Name:       opDeleteNetworkInterface,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteNetworkInterfaceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteNetworkInterfaceOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified network interface. You must detach the network interface
-// before you can delete it.
-func (c *EC2) DeleteNetworkInterface(input *DeleteNetworkInterfaceInput) (*DeleteNetworkInterfaceOutput, error) {
-	req, out := c.DeleteNetworkInterfaceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeletePlacementGroup = "DeletePlacementGroup"
-
-// DeletePlacementGroupRequest generates a request for the DeletePlacementGroup operation.
-func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req *request.Request, output *DeletePlacementGroupOutput) {
-	op := &request.Operation{
-		Name:       opDeletePlacementGroup,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeletePlacementGroupInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeletePlacementGroupOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified placement group. You must terminate all instances in
-// the placement group before you can delete the placement group. For more information
-// about placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DeletePlacementGroup(input *DeletePlacementGroupInput) (*DeletePlacementGroupOutput, error) {
-	req, out := c.DeletePlacementGroupRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteRoute = "DeleteRoute"
-
-// DeleteRouteRequest generates a request for the DeleteRoute operation.
-func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) {
-	op := &request.Operation{
-		Name:       opDeleteRoute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteRouteInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteRouteOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified route from the specified route table.
-func (c *EC2) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) {
-	req, out := c.DeleteRouteRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteRouteTable = "DeleteRouteTable"
-
-// DeleteRouteTableRequest generates a request for the DeleteRouteTable operation.
-func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *request.Request, output *DeleteRouteTableOutput) {
-	op := &request.Operation{
-		Name:       opDeleteRouteTable,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteRouteTableInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteRouteTableOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified route table. You must disassociate the route table
-// from any subnets before you can delete it. You can't delete the main route
-// table.
-func (c *EC2) DeleteRouteTable(input *DeleteRouteTableInput) (*DeleteRouteTableOutput, error) {
-	req, out := c.DeleteRouteTableRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteSecurityGroup = "DeleteSecurityGroup"
-
-// DeleteSecurityGroupRequest generates a request for the DeleteSecurityGroup operation.
-func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req *request.Request, output *DeleteSecurityGroupOutput) {
-	op := &request.Operation{
-		Name:       opDeleteSecurityGroup,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteSecurityGroupInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteSecurityGroupOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes a security group.
-//
-// If you attempt to delete a security group that is associated with an instance,
-// or is referenced by another security group, the operation fails with InvalidGroup.InUse
-// in EC2-Classic or DependencyViolation in EC2-VPC.
-func (c *EC2) DeleteSecurityGroup(input *DeleteSecurityGroupInput) (*DeleteSecurityGroupOutput, error) {
-	req, out := c.DeleteSecurityGroupRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteSnapshot = "DeleteSnapshot"
-
-// DeleteSnapshotRequest generates a request for the DeleteSnapshot operation.
-func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
-	op := &request.Operation{
-		Name:       opDeleteSnapshot,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteSnapshotInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteSnapshotOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified snapshot.
-//
-// When you make periodic snapshots of a volume, the snapshots are incremental,
-// and only the blocks on the device that have changed since your last snapshot
-// are saved in the new snapshot. When you delete a snapshot, only the data
-// not needed for any other snapshot is removed. So regardless of which prior
-// snapshots have been deleted, all active snapshots will have access to all
-// the information needed to restore the volume.
-//
-// You cannot delete a snapshot of the root device of an EBS volume used by
-// a registered AMI. You must first de-register the AMI before you can delete
-// the snapshot.
-//
-// For more information, see Deleting an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
-	req, out := c.DeleteSnapshotRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription"
-
-// DeleteSpotDatafeedSubscriptionRequest generates a request for the DeleteSpotDatafeedSubscription operation.
-func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSubscriptionInput) (req *request.Request, output *DeleteSpotDatafeedSubscriptionOutput) {
-	op := &request.Operation{
-		Name:       opDeleteSpotDatafeedSubscription,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteSpotDatafeedSubscriptionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteSpotDatafeedSubscriptionOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the data feed for Spot instances.
-func (c *EC2) DeleteSpotDatafeedSubscription(input *DeleteSpotDatafeedSubscriptionInput) (*DeleteSpotDatafeedSubscriptionOutput, error) {
-	req, out := c.DeleteSpotDatafeedSubscriptionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteSubnet = "DeleteSubnet"
-
-// DeleteSubnetRequest generates a request for the DeleteSubnet operation.
-func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Request, output *DeleteSubnetOutput) {
-	op := &request.Operation{
-		Name:       opDeleteSubnet,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteSubnetInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteSubnetOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified subnet. You must terminate all running instances in
-// the subnet before you can delete the subnet.
-func (c *EC2) DeleteSubnet(input *DeleteSubnetInput) (*DeleteSubnetOutput, error) {
-	req, out := c.DeleteSubnetRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteTags = "DeleteTags"
-
-// DeleteTagsRequest generates a request for the DeleteTags operation.
-func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) {
-	op := &request.Operation{
-		Name:       opDeleteTags,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteTagsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteTagsOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified set of tags from the specified set of resources. This
-// call is designed to follow a DescribeTags request.
-//
-// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) {
-	req, out := c.DeleteTagsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVolume = "DeleteVolume"
-
-// DeleteVolumeRequest generates a request for the DeleteVolume operation.
-func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Request, output *DeleteVolumeOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVolume,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVolumeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVolumeOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified EBS volume. The volume must be in the available state
-// (not attached to an instance).
-//
-//  The volume may remain in the deleting state for several minutes.
-//
-//  For more information, see Deleting an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DeleteVolume(input *DeleteVolumeInput) (*DeleteVolumeOutput, error) {
-	req, out := c.DeleteVolumeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpc = "DeleteVpc"
-
-// DeleteVpcRequest generates a request for the DeleteVpc operation.
-func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, output *DeleteVpcOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpc,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpcInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpcOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified VPC. You must detach or delete all gateways and resources
-// that are associated with the VPC before you can delete it. For example, you
-// must terminate all instances running in the VPC, delete all security groups
-// associated with the VPC (except the default one), delete all route tables
-// associated with the VPC (except the default one), and so on.
-func (c *EC2) DeleteVpc(input *DeleteVpcInput) (*DeleteVpcOutput, error) {
-	req, out := c.DeleteVpcRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpcEndpoints = "DeleteVpcEndpoints"
-
-// DeleteVpcEndpointsRequest generates a request for the DeleteVpcEndpoints operation.
-func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *request.Request, output *DeleteVpcEndpointsOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpcEndpoints,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpcEndpointsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpcEndpointsOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes one or more specified VPC endpoints. Deleting the endpoint also deletes
-// the endpoint routes in the route tables that were associated with the endpoint.
-func (c *EC2) DeleteVpcEndpoints(input *DeleteVpcEndpointsInput) (*DeleteVpcEndpointsOutput, error) {
-	req, out := c.DeleteVpcEndpointsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection"
-
-// DeleteVpcPeeringConnectionRequest generates a request for the DeleteVpcPeeringConnection operation.
-func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectionInput) (req *request.Request, output *DeleteVpcPeeringConnectionOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpcPeeringConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpcPeeringConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpcPeeringConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes a VPC peering connection. Either the owner of the requester VPC or
-// the owner of the peer VPC can delete the VPC peering connection if it's in
-// the active state. The owner of the requester VPC can delete a VPC peering
-// connection in the pending-acceptance state.
-func (c *EC2) DeleteVpcPeeringConnection(input *DeleteVpcPeeringConnectionInput) (*DeleteVpcPeeringConnectionOutput, error) {
-	req, out := c.DeleteVpcPeeringConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpnConnection = "DeleteVpnConnection"
-
-// DeleteVpnConnectionRequest generates a request for the DeleteVpnConnection operation.
-func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req *request.Request, output *DeleteVpnConnectionOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpnConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpnConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpnConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified VPN connection.
-//
-// If you're deleting the VPC and its associated components, we recommend that
-// you detach the virtual private gateway from the VPC and delete the VPC before
-// deleting the VPN connection. If you believe that the tunnel credentials for
-// your VPN connection have been compromised, you can delete the VPN connection
-// and create a new one that has new keys, without needing to delete the VPC
-// or virtual private gateway. If you create a new VPN connection, you must
-// reconfigure the customer gateway using the new configuration information
-// returned with the new VPN connection ID.
-func (c *EC2) DeleteVpnConnection(input *DeleteVpnConnectionInput) (*DeleteVpnConnectionOutput, error) {
-	req, out := c.DeleteVpnConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute"
-
-// DeleteVpnConnectionRouteRequest generates a request for the DeleteVpnConnectionRoute operation.
-func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInput) (req *request.Request, output *DeleteVpnConnectionRouteOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpnConnectionRoute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpnConnectionRouteInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpnConnectionRouteOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified static route associated with a VPN connection between
-// an existing virtual private gateway and a VPN customer gateway. The static
-// route allows traffic to be routed from the virtual private gateway to the
-// VPN customer gateway.
-func (c *EC2) DeleteVpnConnectionRoute(input *DeleteVpnConnectionRouteInput) (*DeleteVpnConnectionRouteOutput, error) {
-	req, out := c.DeleteVpnConnectionRouteRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeleteVpnGateway = "DeleteVpnGateway"
-
-// DeleteVpnGatewayRequest generates a request for the DeleteVpnGateway operation.
-func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *request.Request, output *DeleteVpnGatewayOutput) {
-	op := &request.Operation{
-		Name:       opDeleteVpnGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeleteVpnGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeleteVpnGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Deletes the specified virtual private gateway. We recommend that before you
-// delete a virtual private gateway, you detach it from the VPC and delete the
-// VPN connection. Note that you don't need to delete the virtual private gateway
-// if you plan to delete and recreate the VPN connection between your VPC and
-// your network.
-func (c *EC2) DeleteVpnGateway(input *DeleteVpnGatewayInput) (*DeleteVpnGatewayOutput, error) {
-	req, out := c.DeleteVpnGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDeregisterImage = "DeregisterImage"
-
-// DeregisterImageRequest generates a request for the DeregisterImage operation.
-func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request.Request, output *DeregisterImageOutput) {
-	op := &request.Operation{
-		Name:       opDeregisterImage,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DeregisterImageInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DeregisterImageOutput{}
-	req.Data = output
-	return
-}
-
-// Deregisters the specified AMI. After you deregister an AMI, it can't be used
-// to launch new instances.
-//
-// This command does not delete the AMI.
-func (c *EC2) DeregisterImage(input *DeregisterImageInput) (*DeregisterImageOutput, error) {
-	req, out := c.DeregisterImageRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeAccountAttributes = "DescribeAccountAttributes"
-
-// DescribeAccountAttributesRequest generates a request for the DescribeAccountAttributes operation.
-func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAccountAttributes,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeAccountAttributesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAccountAttributesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes attributes of your AWS account. The following are the supported
-// account attributes:
-//
-//   supported-platforms: Indicates whether your account can launch instances
-// into EC2-Classic and EC2-VPC, or only into EC2-VPC.
-//
-//   default-vpc: The ID of the default VPC for your account, or none.
-//
-//   max-instances: The maximum number of On-Demand instances that you can
-// run.
-//
-//   vpc-max-security-groups-per-interface: The maximum number of security
-// groups that you can assign to a network interface.
-//
-//   max-elastic-ips: The maximum number of Elastic IP addresses that you can
-// allocate for use with EC2-Classic.
-//
-//   vpc-max-elastic-ips: The maximum number of Elastic IP addresses that you
-// can allocate for use with EC2-VPC.
-func (c *EC2) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) {
-	req, out := c.DescribeAccountAttributesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeAddresses = "DescribeAddresses"
-
-// DescribeAddressesRequest generates a request for the DescribeAddresses operation.
-func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *request.Request, output *DescribeAddressesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAddresses,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeAddressesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAddressesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your Elastic IP addresses.
-//
-// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeAddresses(input *DescribeAddressesInput) (*DescribeAddressesOutput, error) {
-	req, out := c.DescribeAddressesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeAvailabilityZones = "DescribeAvailabilityZones"
-
-// DescribeAvailabilityZonesRequest generates a request for the DescribeAvailabilityZones operation.
-func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesInput) (req *request.Request, output *DescribeAvailabilityZonesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeAvailabilityZones,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeAvailabilityZonesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeAvailabilityZonesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of the Availability Zones that are available to you.
-// The results include zones only for the region you're currently using. If
-// there is an event impacting an Availability Zone, you can use this request
-// to view the state and any provided message for that Availability Zone.
-//
-// For more information, see Regions and Availability Zones (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeAvailabilityZones(input *DescribeAvailabilityZonesInput) (*DescribeAvailabilityZonesOutput, error) {
-	req, out := c.DescribeAvailabilityZonesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeBundleTasks = "DescribeBundleTasks"
-
-// DescribeBundleTasksRequest generates a request for the DescribeBundleTasks operation.
-func (c *EC2) DescribeBundleTasksRequest(input *DescribeBundleTasksInput) (req *request.Request, output *DescribeBundleTasksOutput) {
-	op := &request.Operation{
-		Name:       opDescribeBundleTasks,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeBundleTasksInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeBundleTasksOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your bundling tasks.
-//
-// Completed bundle tasks are listed for only a limited time. If your bundle
-// task is no longer in the list, you can still register an AMI from it. Just
-// use RegisterImage with the Amazon S3 bucket name and image manifest name
-// you provided to the bundle task.
-func (c *EC2) DescribeBundleTasks(input *DescribeBundleTasksInput) (*DescribeBundleTasksOutput, error) {
-	req, out := c.DescribeBundleTasksRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances"
-
-// DescribeClassicLinkInstancesRequest generates a request for the DescribeClassicLinkInstances operation.
-func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInstancesInput) (req *request.Request, output *DescribeClassicLinkInstancesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeClassicLinkInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeClassicLinkInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeClassicLinkInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your linked EC2-Classic instances. This request
-// only returns information about EC2-Classic instances linked to a VPC through
-// ClassicLink; you cannot use this request to return information about other
-// instances.
-func (c *EC2) DescribeClassicLinkInstances(input *DescribeClassicLinkInstancesInput) (*DescribeClassicLinkInstancesOutput, error) {
-	req, out := c.DescribeClassicLinkInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeConversionTasks = "DescribeConversionTasks"
-
-// DescribeConversionTasksRequest generates a request for the DescribeConversionTasks operation.
-func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput) (req *request.Request, output *DescribeConversionTasksOutput) {
-	op := &request.Operation{
-		Name:       opDescribeConversionTasks,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeConversionTasksInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeConversionTasksOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your conversion tasks. For more information, see
-// Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeConversionTasks(input *DescribeConversionTasksInput) (*DescribeConversionTasksOutput, error) {
-	req, out := c.DescribeConversionTasksRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeCustomerGateways = "DescribeCustomerGateways"
-
-// DescribeCustomerGatewaysRequest generates a request for the DescribeCustomerGateways operation.
-func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInput) (req *request.Request, output *DescribeCustomerGatewaysOutput) {
-	op := &request.Operation{
-		Name:       opDescribeCustomerGateways,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeCustomerGatewaysInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeCustomerGatewaysOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your VPN customer gateways.
-//
-// For more information about VPN customer gateways, see Adding a Hardware
-// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeCustomerGateways(input *DescribeCustomerGatewaysInput) (*DescribeCustomerGatewaysOutput, error) {
-	req, out := c.DescribeCustomerGatewaysRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeDhcpOptions = "DescribeDhcpOptions"
-
-// DescribeDhcpOptionsRequest generates a request for the DescribeDhcpOptions operation.
-func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req *request.Request, output *DescribeDhcpOptionsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeDhcpOptions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeDhcpOptionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeDhcpOptionsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your DHCP options sets.
-//
-// For more information about DHCP options sets, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeDhcpOptions(input *DescribeDhcpOptionsInput) (*DescribeDhcpOptionsOutput, error) {
-	req, out := c.DescribeDhcpOptionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeExportTasks = "DescribeExportTasks"
-
-// DescribeExportTasksRequest generates a request for the DescribeExportTasks operation.
-func (c *EC2) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) {
-	op := &request.Operation{
-		Name:       opDescribeExportTasks,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeExportTasksInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeExportTasksOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your export tasks.
-func (c *EC2) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) {
-	req, out := c.DescribeExportTasksRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeFlowLogs = "DescribeFlowLogs"
-
-// DescribeFlowLogsRequest generates a request for the DescribeFlowLogs operation.
-func (c *EC2) DescribeFlowLogsRequest(input *DescribeFlowLogsInput) (req *request.Request, output *DescribeFlowLogsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeFlowLogs,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeFlowLogsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeFlowLogsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more flow logs. To view the information in your flow logs
-// (the log streams for the network interfaces), you must use the CloudWatch
-// Logs console or the CloudWatch Logs API.
-func (c *EC2) DescribeFlowLogs(input *DescribeFlowLogsInput) (*DescribeFlowLogsOutput, error) {
-	req, out := c.DescribeFlowLogsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeImageAttribute = "DescribeImageAttribute"
-
-// DescribeImageAttributeRequest generates a request for the DescribeImageAttribute operation.
-func (c *EC2) DescribeImageAttributeRequest(input *DescribeImageAttributeInput) (req *request.Request, output *DescribeImageAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeImageAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeImageAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeImageAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified attribute of the specified AMI. You can specify only
-// one attribute at a time.
-func (c *EC2) DescribeImageAttribute(input *DescribeImageAttributeInput) (*DescribeImageAttributeOutput, error) {
-	req, out := c.DescribeImageAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeImages = "DescribeImages"
-
-// DescribeImagesRequest generates a request for the DescribeImages operation.
-func (c *EC2) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Request, output *DescribeImagesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeImages,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeImagesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeImagesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of the images (AMIs, AKIs, and ARIs) available to you.
-// Images available to you include public images, private images that you own,
-// and private images owned by other AWS accounts but for which you have explicit
-// launch permissions.
-//
-// Deregistered images are included in the returned results for an unspecified
-// interval after deregistration.
-func (c *EC2) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) {
-	req, out := c.DescribeImagesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeImportImageTasks = "DescribeImportImageTasks"
-
-// DescribeImportImageTasksRequest generates a request for the DescribeImportImageTasks operation.
-func (c *EC2) DescribeImportImageTasksRequest(input *DescribeImportImageTasksInput) (req *request.Request, output *DescribeImportImageTasksOutput) {
-	op := &request.Operation{
-		Name:       opDescribeImportImageTasks,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeImportImageTasksInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeImportImageTasksOutput{}
-	req.Data = output
-	return
-}
-
-// Displays details about an import virtual machine or import snapshot tasks
-// that are already created.
-func (c *EC2) DescribeImportImageTasks(input *DescribeImportImageTasksInput) (*DescribeImportImageTasksOutput, error) {
-	req, out := c.DescribeImportImageTasksRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks"
-
-// DescribeImportSnapshotTasksRequest generates a request for the DescribeImportSnapshotTasks operation.
-func (c *EC2) DescribeImportSnapshotTasksRequest(input *DescribeImportSnapshotTasksInput) (req *request.Request, output *DescribeImportSnapshotTasksOutput) {
-	op := &request.Operation{
-		Name:       opDescribeImportSnapshotTasks,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeImportSnapshotTasksInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeImportSnapshotTasksOutput{}
-	req.Data = output
-	return
-}
-
-// Describes your import snapshot tasks.
-func (c *EC2) DescribeImportSnapshotTasks(input *DescribeImportSnapshotTasksInput) (*DescribeImportSnapshotTasksOutput, error) {
-	req, out := c.DescribeImportSnapshotTasksRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeInstanceAttribute = "DescribeInstanceAttribute"
-
-// DescribeInstanceAttributeRequest generates a request for the DescribeInstanceAttribute operation.
-func (c *EC2) DescribeInstanceAttributeRequest(input *DescribeInstanceAttributeInput) (req *request.Request, output *DescribeInstanceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeInstanceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeInstanceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeInstanceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified attribute of the specified instance. You can specify
-// only one attribute at a time. Valid attribute values are: instanceType |
-// kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior
-// | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck |
-// groupSet | ebsOptimized | sriovNetSupport
-func (c *EC2) DescribeInstanceAttribute(input *DescribeInstanceAttributeInput) (*DescribeInstanceAttributeOutput, error) {
-	req, out := c.DescribeInstanceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeInstanceStatus = "DescribeInstanceStatus"
-
-// DescribeInstanceStatusRequest generates a request for the DescribeInstanceStatus operation.
-func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) (req *request.Request, output *DescribeInstanceStatusOutput) {
-	op := &request.Operation{
-		Name:       opDescribeInstanceStatus,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeInstanceStatusInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeInstanceStatusOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the status of one or more instances.
-//
-// Instance status includes the following components:
-//
-//   Status checks - Amazon EC2 performs status checks on running EC2 instances
-// to identify hardware and software issues. For more information, see Status
-// Checks for Your Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)
-// and Troubleshooting Instances with Failed Status Checks (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-//   Scheduled events - Amazon EC2 can schedule events (such as reboot, stop,
-// or terminate) for your instances related to hardware issues, software updates,
-// or system maintenance. For more information, see Scheduled Events for Your
-// Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-//   Instance state - You can manage your instances from the moment you launch
-// them through their termination. For more information, see Instance Lifecycle
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeInstanceStatus(input *DescribeInstanceStatusInput) (*DescribeInstanceStatusOutput, error) {
-	req, out := c.DescribeInstanceStatusRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeInstanceStatusPages(input *DescribeInstanceStatusInput, fn func(p *DescribeInstanceStatusOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeInstanceStatusRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeInstanceStatusOutput), lastPage)
-	})
-}
-
-const opDescribeInstances = "DescribeInstances"
-
-// DescribeInstancesRequest generates a request for the DescribeInstances operation.
-func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *request.Request, output *DescribeInstancesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your instances.
-//
-// If you specify one or more instance IDs, Amazon EC2 returns information
-// for those instances. If you do not specify instance IDs, Amazon EC2 returns
-// information for all relevant instances. If you specify an instance ID that
-// is not valid, an error is returned. If you specify an instance that you do
-// not own, it is not included in the returned results.
-//
-// Recently terminated instances might appear in the returned results. This
-// interval is usually less than one hour.
-func (c *EC2) DescribeInstances(input *DescribeInstancesInput) (*DescribeInstancesOutput, error) {
-	req, out := c.DescribeInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeInstancesPages(input *DescribeInstancesInput, fn func(p *DescribeInstancesOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeInstancesRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeInstancesOutput), lastPage)
-	})
-}
-
-const opDescribeInternetGateways = "DescribeInternetGateways"
-
-// DescribeInternetGatewaysRequest generates a request for the DescribeInternetGateways operation.
-func (c *EC2) DescribeInternetGatewaysRequest(input *DescribeInternetGatewaysInput) (req *request.Request, output *DescribeInternetGatewaysOutput) {
-	op := &request.Operation{
-		Name:       opDescribeInternetGateways,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeInternetGatewaysInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeInternetGatewaysOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your Internet gateways.
-func (c *EC2) DescribeInternetGateways(input *DescribeInternetGatewaysInput) (*DescribeInternetGatewaysOutput, error) {
-	req, out := c.DescribeInternetGatewaysRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeKeyPairs = "DescribeKeyPairs"
-
-// DescribeKeyPairsRequest generates a request for the DescribeKeyPairs operation.
-func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *request.Request, output *DescribeKeyPairsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeKeyPairs,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeKeyPairsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeKeyPairsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your key pairs.
-//
-// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeKeyPairs(input *DescribeKeyPairsInput) (*DescribeKeyPairsOutput, error) {
-	req, out := c.DescribeKeyPairsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeMovingAddresses = "DescribeMovingAddresses"
-
-// DescribeMovingAddressesRequest generates a request for the DescribeMovingAddresses operation.
-func (c *EC2) DescribeMovingAddressesRequest(input *DescribeMovingAddressesInput) (req *request.Request, output *DescribeMovingAddressesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeMovingAddresses,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeMovingAddressesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeMovingAddressesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes your Elastic IP addresses that are being moved to the EC2-VPC platform,
-// or that are being restored to the EC2-Classic platform. This request does
-// not return information about any other Elastic IP addresses in your account.
-func (c *EC2) DescribeMovingAddresses(input *DescribeMovingAddressesInput) (*DescribeMovingAddressesOutput, error) {
-	req, out := c.DescribeMovingAddressesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeNetworkAcls = "DescribeNetworkAcls"
-
-// DescribeNetworkAclsRequest generates a request for the DescribeNetworkAcls operation.
-func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req *request.Request, output *DescribeNetworkAclsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeNetworkAcls,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeNetworkAclsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeNetworkAclsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your network ACLs.
-//
-// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeNetworkAcls(input *DescribeNetworkAclsInput) (*DescribeNetworkAclsOutput, error) {
-	req, out := c.DescribeNetworkAclsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute"
-
-// DescribeNetworkInterfaceAttributeRequest generates a request for the DescribeNetworkInterfaceAttribute operation.
-func (c *EC2) DescribeNetworkInterfaceAttributeRequest(input *DescribeNetworkInterfaceAttributeInput) (req *request.Request, output *DescribeNetworkInterfaceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeNetworkInterfaceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeNetworkInterfaceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeNetworkInterfaceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes a network interface attribute. You can specify only one attribute
-// at a time.
-func (c *EC2) DescribeNetworkInterfaceAttribute(input *DescribeNetworkInterfaceAttributeInput) (*DescribeNetworkInterfaceAttributeOutput, error) {
-	req, out := c.DescribeNetworkInterfaceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces"
-
-// DescribeNetworkInterfacesRequest generates a request for the DescribeNetworkInterfaces operation.
-func (c *EC2) DescribeNetworkInterfacesRequest(input *DescribeNetworkInterfacesInput) (req *request.Request, output *DescribeNetworkInterfacesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeNetworkInterfaces,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeNetworkInterfacesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeNetworkInterfacesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your network interfaces.
-func (c *EC2) DescribeNetworkInterfaces(input *DescribeNetworkInterfacesInput) (*DescribeNetworkInterfacesOutput, error) {
-	req, out := c.DescribeNetworkInterfacesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribePlacementGroups = "DescribePlacementGroups"
-
-// DescribePlacementGroupsRequest generates a request for the DescribePlacementGroups operation.
-func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput) (req *request.Request, output *DescribePlacementGroupsOutput) {
-	op := &request.Operation{
-		Name:       opDescribePlacementGroups,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribePlacementGroupsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribePlacementGroupsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your placement groups. For more information about
-// placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribePlacementGroups(input *DescribePlacementGroupsInput) (*DescribePlacementGroupsOutput, error) {
-	req, out := c.DescribePlacementGroupsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribePrefixLists = "DescribePrefixLists"
-
-// DescribePrefixListsRequest generates a request for the DescribePrefixLists operation.
-func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req *request.Request, output *DescribePrefixListsOutput) {
-	op := &request.Operation{
-		Name:       opDescribePrefixLists,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribePrefixListsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribePrefixListsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes available AWS services in a prefix list format, which includes
-// the prefix list name and prefix list ID of the service and the IP address
-// range for the service. A prefix list ID is required for creating an outbound
-// security group rule that allows traffic from a VPC to access an AWS service
-// through a VPC endpoint.
-func (c *EC2) DescribePrefixLists(input *DescribePrefixListsInput) (*DescribePrefixListsOutput, error) {
-	req, out := c.DescribePrefixListsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeRegions = "DescribeRegions"
-
-// DescribeRegionsRequest generates a request for the DescribeRegions operation.
-func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request.Request, output *DescribeRegionsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeRegions,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeRegionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeRegionsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more regions that are currently available to you.
-//
-// For a list of the regions supported by Amazon EC2, see Regions and Endpoints
-// (http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region).
-func (c *EC2) DescribeRegions(input *DescribeRegionsInput) (*DescribeRegionsOutput, error) {
-	req, out := c.DescribeRegionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeReservedInstances = "DescribeReservedInstances"
-
-// DescribeReservedInstancesRequest generates a request for the DescribeReservedInstances operation.
-func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesInput) (req *request.Request, output *DescribeReservedInstancesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeReservedInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeReservedInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeReservedInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of the Reserved Instances that you purchased.
-//
-// For more information about Reserved Instances, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeReservedInstances(input *DescribeReservedInstancesInput) (*DescribeReservedInstancesOutput, error) {
-	req, out := c.DescribeReservedInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings"
-
-// DescribeReservedInstancesListingsRequest generates a request for the DescribeReservedInstancesListings operation.
-func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedInstancesListingsInput) (req *request.Request, output *DescribeReservedInstancesListingsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeReservedInstancesListings,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeReservedInstancesListingsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeReservedInstancesListingsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes your account's Reserved Instance listings in the Reserved Instance
-// Marketplace.
-//
-// The Reserved Instance Marketplace matches sellers who want to resell Reserved
-// Instance capacity that they no longer need with buyers who want to purchase
-// additional capacity. Reserved Instances bought and sold through the Reserved
-// Instance Marketplace work like any other Reserved Instances.
-//
-// As a seller, you choose to list some or all of your Reserved Instances,
-// and you specify the upfront price to receive for them. Your Reserved Instances
-// are then listed in the Reserved Instance Marketplace and are available for
-// purchase.
-//
-// As a buyer, you specify the configuration of the Reserved Instance to purchase,
-// and the Marketplace matches what you're searching for with what's available.
-// The Marketplace first sells the lowest priced Reserved Instances to you,
-// and continues to sell available Reserved Instance listings to you until your
-// demand is met. You are charged based on the total price of all of the listings
-// that you purchase.
-//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeReservedInstancesListings(input *DescribeReservedInstancesListingsInput) (*DescribeReservedInstancesListingsOutput, error) {
-	req, out := c.DescribeReservedInstancesListingsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModifications"
-
-// DescribeReservedInstancesModificationsRequest generates a request for the DescribeReservedInstancesModifications operation.
-func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReservedInstancesModificationsInput) (req *request.Request, output *DescribeReservedInstancesModificationsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeReservedInstancesModifications,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeReservedInstancesModificationsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeReservedInstancesModificationsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the modifications made to your Reserved Instances. If no parameter
-// is specified, information about all your Reserved Instances modification
-// requests is returned. If a modification ID is specified, only information
-// about the specific modification is returned.
-//
-// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeReservedInstancesModifications(input *DescribeReservedInstancesModificationsInput) (*DescribeReservedInstancesModificationsOutput, error) {
-	req, out := c.DescribeReservedInstancesModificationsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeReservedInstancesModificationsPages(input *DescribeReservedInstancesModificationsInput, fn func(p *DescribeReservedInstancesModificationsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeReservedInstancesModificationsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeReservedInstancesModificationsOutput), lastPage)
-	})
-}
-
-const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings"
-
-// DescribeReservedInstancesOfferingsRequest generates a request for the DescribeReservedInstancesOfferings operation.
-func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedInstancesOfferingsInput) (req *request.Request, output *DescribeReservedInstancesOfferingsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeReservedInstancesOfferings,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeReservedInstancesOfferingsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeReservedInstancesOfferingsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes Reserved Instance offerings that are available for purchase. With
-// Reserved Instances, you purchase the right to launch instances for a period
-// of time. During that time period, you do not receive insufficient capacity
-// errors, and you pay a lower usage rate than the rate charged for On-Demand
-// instances for the actual time used.
-//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeReservedInstancesOfferings(input *DescribeReservedInstancesOfferingsInput) (*DescribeReservedInstancesOfferingsOutput, error) {
-	req, out := c.DescribeReservedInstancesOfferingsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeReservedInstancesOfferingsPages(input *DescribeReservedInstancesOfferingsInput, fn func(p *DescribeReservedInstancesOfferingsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeReservedInstancesOfferingsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeReservedInstancesOfferingsOutput), lastPage)
-	})
-}
-
-const opDescribeRouteTables = "DescribeRouteTables"
-
-// DescribeRouteTablesRequest generates a request for the DescribeRouteTables operation.
-func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *request.Request, output *DescribeRouteTablesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeRouteTables,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeRouteTablesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeRouteTablesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your route tables.
-//
-// Each subnet in your VPC must be associated with a route table. If a subnet
-// is not explicitly associated with any route table, it is implicitly associated
-// with the main route table. This command does not return the subnet ID for
-// implicit associations.
-//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeRouteTables(input *DescribeRouteTablesInput) (*DescribeRouteTablesOutput, error) {
-	req, out := c.DescribeRouteTablesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSecurityGroups = "DescribeSecurityGroups"
-
-// DescribeSecurityGroupsRequest generates a request for the DescribeSecurityGroups operation.
-func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) (req *request.Request, output *DescribeSecurityGroupsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSecurityGroups,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSecurityGroupsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSecurityGroupsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your security groups.
-//
-// A security group is for use with instances either in the EC2-Classic platform
-// or in a specific VPC. For more information, see Amazon EC2 Security Groups
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
-// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your
-// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeSecurityGroups(input *DescribeSecurityGroupsInput) (*DescribeSecurityGroupsOutput, error) {
-	req, out := c.DescribeSecurityGroupsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute"
-
-// DescribeSnapshotAttributeRequest generates a request for the DescribeSnapshotAttribute operation.
-func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeInput) (req *request.Request, output *DescribeSnapshotAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSnapshotAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSnapshotAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSnapshotAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified attribute of the specified snapshot. You can specify
-// only one attribute at a time.
-//
-// For more information about EBS snapshots, see Amazon EBS Snapshots in the
-// Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeSnapshotAttribute(input *DescribeSnapshotAttributeInput) (*DescribeSnapshotAttributeOutput, error) {
-	req, out := c.DescribeSnapshotAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSnapshots = "DescribeSnapshots"
-
-// DescribeSnapshotsRequest generates a request for the DescribeSnapshots operation.
-func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSnapshots,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeSnapshotsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSnapshotsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of the EBS snapshots available to you. Available snapshots
-// include public snapshots available for any AWS account to launch, private
-// snapshots that you own, and private snapshots owned by another AWS account
-// but for which you've been given explicit create volume permissions.
-//
-// The create volume permissions fall into the following categories:
-//
-//   public: The owner of the snapshot granted create volume permissions for
-// the snapshot to the all group. All AWS accounts have create volume permissions
-// for these snapshots.  explicit: The owner of the snapshot granted create
-// volume permissions to a specific AWS account.  implicit: An AWS account has
-// implicit create volume permissions for all snapshots it owns.  The list of
-// snapshots returned can be modified by specifying snapshot IDs, snapshot owners,
-// or AWS accounts with create volume permissions. If no options are specified,
-// Amazon EC2 returns all snapshots for which you have create volume permissions.
-//
-// If you specify one or more snapshot IDs, only snapshots that have the specified
-// IDs are returned. If you specify an invalid snapshot ID, an error is returned.
-// If you specify a snapshot ID for which you do not have access, it is not
-// included in the returned results.
-//
-// If you specify one or more snapshot owners, only snapshots from the specified
-// owners and for which you have access are returned. The results can include
-// the AWS account IDs of the specified owners, amazon for snapshots owned by
-// Amazon, or self for snapshots that you own.
-//
-// If you specify a list of restorable users, only snapshots with create snapshot
-// permissions for those users are returned. You can specify AWS account IDs
-// (if you own the snapshots), self for snapshots for which you own or have
-// explicit permissions, or all for public snapshots.
-//
-// If you are describing a long list of snapshots, you can paginate the output
-// to make the list more manageable. The MaxResults parameter sets the maximum
-// number of results returned in a single page. If the list of results exceeds
-// your MaxResults value, then that number of results is returned along with
-// a NextToken value that can be passed to a subsequent DescribeSnapshots request
-// to retrieve the remaining results.
-//
-// For more information about EBS snapshots, see Amazon EBS Snapshots in the
-// Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
-	req, out := c.DescribeSnapshotsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(p *DescribeSnapshotsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeSnapshotsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeSnapshotsOutput), lastPage)
-	})
-}
-
-const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription"
-
-// DescribeSpotDatafeedSubscriptionRequest generates a request for the DescribeSpotDatafeedSubscription operation.
-func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafeedSubscriptionInput) (req *request.Request, output *DescribeSpotDatafeedSubscriptionOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotDatafeedSubscription,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSpotDatafeedSubscriptionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotDatafeedSubscriptionOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the data feed for Spot instances. For more information, see Spot
-// Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeSpotDatafeedSubscription(input *DescribeSpotDatafeedSubscriptionInput) (*DescribeSpotDatafeedSubscriptionOutput, error) {
-	req, out := c.DescribeSpotDatafeedSubscriptionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances"
-
-// DescribeSpotFleetInstancesRequest generates a request for the DescribeSpotFleetInstances operation.
-func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstancesInput) (req *request.Request, output *DescribeSpotFleetInstancesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotFleetInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSpotFleetInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotFleetInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the running instances for the specified Spot fleet.
-func (c *EC2) DescribeSpotFleetInstances(input *DescribeSpotFleetInstancesInput) (*DescribeSpotFleetInstancesOutput, error) {
-	req, out := c.DescribeSpotFleetInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory"
-
-// DescribeSpotFleetRequestHistoryRequest generates a request for the DescribeSpotFleetRequestHistory operation.
-func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetRequestHistoryInput) (req *request.Request, output *DescribeSpotFleetRequestHistoryOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotFleetRequestHistory,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSpotFleetRequestHistoryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotFleetRequestHistoryOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the events for the specified Spot fleet request during the specified
-// time.
-//
-// Spot fleet events are delayed by up to 30 seconds before they can be described.
-// This ensures that you can query by the last evaluated time and not miss a
-// recorded event.
-func (c *EC2) DescribeSpotFleetRequestHistory(input *DescribeSpotFleetRequestHistoryInput) (*DescribeSpotFleetRequestHistoryOutput, error) {
-	req, out := c.DescribeSpotFleetRequestHistoryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests"
-
-// DescribeSpotFleetRequestsRequest generates a request for the DescribeSpotFleetRequests operation.
-func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsInput) (req *request.Request, output *DescribeSpotFleetRequestsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotFleetRequests,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSpotFleetRequestsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotFleetRequestsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes your Spot fleet requests.
-func (c *EC2) DescribeSpotFleetRequests(input *DescribeSpotFleetRequestsInput) (*DescribeSpotFleetRequestsOutput, error) {
-	req, out := c.DescribeSpotFleetRequestsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests"
-
-// DescribeSpotInstanceRequestsRequest generates a request for the DescribeSpotInstanceRequests operation.
-func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceRequestsInput) (req *request.Request, output *DescribeSpotInstanceRequestsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotInstanceRequests,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSpotInstanceRequestsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotInstanceRequestsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the Spot instance requests that belong to your account. Spot instances
-// are instances that Amazon EC2 launches when the bid price that you specify
-// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price
-// based on available Spot instance capacity and current Spot instance requests.
-// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// You can use DescribeSpotInstanceRequests to find a running Spot instance
-// by examining the response. If the status of the Spot instance is fulfilled,
-// the instance ID appears in the response and contains the identifier of the
-// instance. Alternatively, you can use DescribeInstances with a filter to look
-// for instances where the instance lifecycle is spot.
-func (c *EC2) DescribeSpotInstanceRequests(input *DescribeSpotInstanceRequestsInput) (*DescribeSpotInstanceRequestsOutput, error) {
-	req, out := c.DescribeSpotInstanceRequestsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory"
-
-// DescribeSpotPriceHistoryRequest generates a request for the DescribeSpotPriceHistory operation.
-func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInput) (req *request.Request, output *DescribeSpotPriceHistoryOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSpotPriceHistory,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeSpotPriceHistoryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSpotPriceHistoryOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the Spot price history. The prices returned are listed in chronological
-// order, from the oldest to the most recent, for up to the past 90 days. For
-// more information, see Spot Instance Pricing History (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// When you specify a start and end time, this operation returns the prices
-// of the instance types within the time range that you specified and the time
-// when the price changed. The price is valid within the time period that you
-// specified; the response merely indicates the last time that the price changed.
-func (c *EC2) DescribeSpotPriceHistory(input *DescribeSpotPriceHistoryInput) (*DescribeSpotPriceHistoryOutput, error) {
-	req, out := c.DescribeSpotPriceHistoryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeSpotPriceHistoryPages(input *DescribeSpotPriceHistoryInput, fn func(p *DescribeSpotPriceHistoryOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeSpotPriceHistoryRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeSpotPriceHistoryOutput), lastPage)
-	})
-}
-
-const opDescribeSubnets = "DescribeSubnets"
-
-// DescribeSubnetsRequest generates a request for the DescribeSubnets operation.
-func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request.Request, output *DescribeSubnetsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeSubnets,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeSubnetsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeSubnetsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your subnets.
-//
-// For more information about subnets, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeSubnets(input *DescribeSubnetsInput) (*DescribeSubnetsOutput, error) {
-	req, out := c.DescribeSubnetsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeTags = "DescribeTags"
-
-// DescribeTagsRequest generates a request for the DescribeTags operation.
-func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeTags,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeTagsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeTagsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of the tags for your EC2 resources.
-//
-// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) {
-	req, out := c.DescribeTagsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeTagsPages(input *DescribeTagsInput, fn func(p *DescribeTagsOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeTagsRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeTagsOutput), lastPage)
-	})
-}
-
-const opDescribeVolumeAttribute = "DescribeVolumeAttribute"
-
-// DescribeVolumeAttributeRequest generates a request for the DescribeVolumeAttribute operation.
-func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput) (req *request.Request, output *DescribeVolumeAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVolumeAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVolumeAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVolumeAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified attribute of the specified volume. You can specify
-// only one attribute at a time.
-//
-// For more information about EBS volumes, see Amazon EBS Volumes in the Amazon
-// Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeVolumeAttribute(input *DescribeVolumeAttributeInput) (*DescribeVolumeAttributeOutput, error) {
-	req, out := c.DescribeVolumeAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVolumeStatus = "DescribeVolumeStatus"
-
-// DescribeVolumeStatusRequest generates a request for the DescribeVolumeStatus operation.
-func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req *request.Request, output *DescribeVolumeStatusOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVolumeStatus,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeVolumeStatusInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVolumeStatusOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the status of the specified volumes. Volume status provides the
-// result of the checks performed on your volumes to determine events that can
-// impair the performance of your volumes. The performance of a volume can be
-// affected if an issue occurs on the volume's underlying host. If the volume's
-// underlying host experiences a power outage or system issue, after the system
-// is restored, there could be data inconsistencies on the volume. Volume events
-// notify you if this occurs. Volume actions notify you if any action needs
-// to be taken in response to the event.
-//
-// The DescribeVolumeStatus operation provides the following information about
-// the specified volumes:
-//
-// Status: Reflects the current status of the volume. The possible values are
-// ok, impaired , warning, or insufficient-data. If all checks pass, the overall
-// status of the volume is ok. If the check fails, the overall status is impaired.
-// If the status is insufficient-data, then the checks may still be taking place
-// on your volume at the time. We recommend that you retry the request. For
-// more information on volume status, see Monitoring the Status of Your Volumes
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-status.html).
-//
-// Events: Reflect the cause of a volume status and may require you to take
-// action. For example, if your volume returns an impaired status, then the
-// volume event might be potential-data-inconsistency. This means that your
-// volume has been affected by an issue with the underlying host, has all I/O
-// operations disabled, and may have inconsistent data.
-//
-// Actions: Reflect the actions you may have to take in response to an event.
-// For example, if the status of the volume is impaired and the volume event
-// shows potential-data-inconsistency, then the action shows enable-volume-io.
-// This means that you may want to enable the I/O operations for the volume
-// by calling the EnableVolumeIO action and then check the volume for data consistency.
-//
-//  Volume status is based on the volume status checks, and does not reflect
-// the volume state. Therefore, volume status does not indicate volumes in the
-// error state (for example, when a volume is incapable of accepting I/O.)
-func (c *EC2) DescribeVolumeStatus(input *DescribeVolumeStatusInput) (*DescribeVolumeStatusOutput, error) {
-	req, out := c.DescribeVolumeStatusRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeVolumeStatusPages(input *DescribeVolumeStatusInput, fn func(p *DescribeVolumeStatusOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeVolumeStatusRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeVolumeStatusOutput), lastPage)
-	})
-}
-
-const opDescribeVolumes = "DescribeVolumes"
-
-// DescribeVolumesRequest generates a request for the DescribeVolumes operation.
-func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request.Request, output *DescribeVolumesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVolumes,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"NextToken"},
-			OutputTokens:    []string{"NextToken"},
-			LimitToken:      "MaxResults",
-			TruncationToken: "",
-		},
-	}
-
-	if input == nil {
-		input = &DescribeVolumesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVolumesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified EBS volumes.
-//
-// If you are describing a long list of volumes, you can paginate the output
-// to make the list more manageable. The MaxResults parameter sets the maximum
-// number of results returned in a single page. If the list of results exceeds
-// your MaxResults value, then that number of results is returned along with
-// a NextToken value that can be passed to a subsequent DescribeVolumes request
-// to retrieve the remaining results.
-//
-// For more information about EBS volumes, see Amazon EBS Volumes in the Amazon
-// Elastic Compute Cloud User Guide.
-func (c *EC2) DescribeVolumes(input *DescribeVolumesInput) (*DescribeVolumesOutput, error) {
-	req, out := c.DescribeVolumesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-func (c *EC2) DescribeVolumesPages(input *DescribeVolumesInput, fn func(p *DescribeVolumesOutput, lastPage bool) (shouldContinue bool)) error {
-	page, _ := c.DescribeVolumesRequest(input)
-	page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator"))
-	return page.EachPage(func(p interface{}, lastPage bool) bool {
-		return fn(p.(*DescribeVolumesOutput), lastPage)
-	})
-}
-
-const opDescribeVpcAttribute = "DescribeVpcAttribute"
-
-// DescribeVpcAttributeRequest generates a request for the DescribeVpcAttribute operation.
-func (c *EC2) DescribeVpcAttributeRequest(input *DescribeVpcAttributeInput) (req *request.Request, output *DescribeVpcAttributeOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the specified attribute of the specified VPC. You can specify only
-// one attribute at a time.
-func (c *EC2) DescribeVpcAttribute(input *DescribeVpcAttributeInput) (*DescribeVpcAttributeOutput, error) {
-	req, out := c.DescribeVpcAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpcClassicLink = "DescribeVpcClassicLink"
-
-// DescribeVpcClassicLinkRequest generates a request for the DescribeVpcClassicLink operation.
-func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) (req *request.Request, output *DescribeVpcClassicLinkOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcClassicLink,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcClassicLinkInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcClassicLinkOutput{}
-	req.Data = output
-	return
-}
-
-// Describes the ClassicLink status of one or more VPCs.
-func (c *EC2) DescribeVpcClassicLink(input *DescribeVpcClassicLinkInput) (*DescribeVpcClassicLinkOutput, error) {
-	req, out := c.DescribeVpcClassicLinkRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices"
-
-// DescribeVpcEndpointServicesRequest generates a request for the DescribeVpcEndpointServices operation.
-func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServicesInput) (req *request.Request, output *DescribeVpcEndpointServicesOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcEndpointServices,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcEndpointServicesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcEndpointServicesOutput{}
-	req.Data = output
-	return
-}
-
-// Describes all supported AWS services that can be specified when creating
-// a VPC endpoint.
-func (c *EC2) DescribeVpcEndpointServices(input *DescribeVpcEndpointServicesInput) (*DescribeVpcEndpointServicesOutput, error) {
-	req, out := c.DescribeVpcEndpointServicesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpcEndpoints = "DescribeVpcEndpoints"
-
-// DescribeVpcEndpointsRequest generates a request for the DescribeVpcEndpoints operation.
-func (c *EC2) DescribeVpcEndpointsRequest(input *DescribeVpcEndpointsInput) (req *request.Request, output *DescribeVpcEndpointsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcEndpoints,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcEndpointsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcEndpointsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your VPC endpoints.
-func (c *EC2) DescribeVpcEndpoints(input *DescribeVpcEndpointsInput) (*DescribeVpcEndpointsOutput, error) {
-	req, out := c.DescribeVpcEndpointsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections"
-
-// DescribeVpcPeeringConnectionsRequest generates a request for the DescribeVpcPeeringConnections operation.
-func (c *EC2) DescribeVpcPeeringConnectionsRequest(input *DescribeVpcPeeringConnectionsInput) (req *request.Request, output *DescribeVpcPeeringConnectionsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcPeeringConnections,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcPeeringConnectionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcPeeringConnectionsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your VPC peering connections.
-func (c *EC2) DescribeVpcPeeringConnections(input *DescribeVpcPeeringConnectionsInput) (*DescribeVpcPeeringConnectionsOutput, error) {
-	req, out := c.DescribeVpcPeeringConnectionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpcs = "DescribeVpcs"
-
-// DescribeVpcsRequest generates a request for the DescribeVpcs operation.
-func (c *EC2) DescribeVpcsRequest(input *DescribeVpcsInput) (req *request.Request, output *DescribeVpcsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpcs,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpcsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpcsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your VPCs.
-func (c *EC2) DescribeVpcs(input *DescribeVpcsInput) (*DescribeVpcsOutput, error) {
-	req, out := c.DescribeVpcsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpnConnections = "DescribeVpnConnections"
-
-// DescribeVpnConnectionsRequest generates a request for the DescribeVpnConnections operation.
-func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) (req *request.Request, output *DescribeVpnConnectionsOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpnConnections,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpnConnectionsInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpnConnectionsOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your VPN connections.
-//
-// For more information about VPN connections, see Adding a Hardware Virtual
-// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeVpnConnections(input *DescribeVpnConnectionsInput) (*DescribeVpnConnectionsOutput, error) {
-	req, out := c.DescribeVpnConnectionsRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDescribeVpnGateways = "DescribeVpnGateways"
-
-// DescribeVpnGatewaysRequest generates a request for the DescribeVpnGateways operation.
-func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req *request.Request, output *DescribeVpnGatewaysOutput) {
-	op := &request.Operation{
-		Name:       opDescribeVpnGateways,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DescribeVpnGatewaysInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DescribeVpnGatewaysOutput{}
-	req.Data = output
-	return
-}
-
-// Describes one or more of your virtual private gateways.
-//
-// For more information about virtual private gateways, see Adding an IPsec
-// Hardware VPN to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DescribeVpnGateways(input *DescribeVpnGatewaysInput) (*DescribeVpnGatewaysOutput, error) {
-	req, out := c.DescribeVpnGatewaysRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDetachClassicLinkVpc = "DetachClassicLinkVpc"
-
-// DetachClassicLinkVpcRequest generates a request for the DetachClassicLinkVpc operation.
-func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req *request.Request, output *DetachClassicLinkVpcOutput) {
-	op := &request.Operation{
-		Name:       opDetachClassicLinkVpc,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DetachClassicLinkVpcInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DetachClassicLinkVpcOutput{}
-	req.Data = output
-	return
-}
-
-// Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance
-// has been unlinked, the VPC security groups are no longer associated with
-// it. An instance is automatically unlinked from a VPC when it's stopped.
-func (c *EC2) DetachClassicLinkVpc(input *DetachClassicLinkVpcInput) (*DetachClassicLinkVpcOutput, error) {
-	req, out := c.DetachClassicLinkVpcRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDetachInternetGateway = "DetachInternetGateway"
-
-// DetachInternetGatewayRequest generates a request for the DetachInternetGateway operation.
-func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (req *request.Request, output *DetachInternetGatewayOutput) {
-	op := &request.Operation{
-		Name:       opDetachInternetGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DetachInternetGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DetachInternetGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Detaches an Internet gateway from a VPC, disabling connectivity between the
-// Internet and the VPC. The VPC must not contain any running instances with
-// Elastic IP addresses.
-func (c *EC2) DetachInternetGateway(input *DetachInternetGatewayInput) (*DetachInternetGatewayOutput, error) {
-	req, out := c.DetachInternetGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDetachNetworkInterface = "DetachNetworkInterface"
-
-// DetachNetworkInterfaceRequest generates a request for the DetachNetworkInterface operation.
-func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput) (req *request.Request, output *DetachNetworkInterfaceOutput) {
-	op := &request.Operation{
-		Name:       opDetachNetworkInterface,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DetachNetworkInterfaceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DetachNetworkInterfaceOutput{}
-	req.Data = output
-	return
-}
-
-// Detaches a network interface from an instance.
-func (c *EC2) DetachNetworkInterface(input *DetachNetworkInterfaceInput) (*DetachNetworkInterfaceOutput, error) {
-	req, out := c.DetachNetworkInterfaceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDetachVolume = "DetachVolume"
-
-// DetachVolumeRequest generates a request for the DetachVolume operation.
-func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Request, output *VolumeAttachment) {
-	op := &request.Operation{
-		Name:       opDetachVolume,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DetachVolumeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &VolumeAttachment{}
-	req.Data = output
-	return
-}
-
-// Detaches an EBS volume from an instance. Make sure to unmount any file systems
-// on the device within your operating system before detaching the volume. Failure
-// to do so results in the volume being stuck in a busy state while detaching.
-//
-// If an Amazon EBS volume is the root device of an instance, it can't be detached
-// while the instance is running. To detach the root volume, stop the instance
-// first.
-//
-// When a volume with an AWS Marketplace product code is detached from an instance,
-// the product code is no longer associated with the instance.
-//
-// For more information, see Detaching an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) DetachVolume(input *DetachVolumeInput) (*VolumeAttachment, error) {
-	req, out := c.DetachVolumeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDetachVpnGateway = "DetachVpnGateway"
-
-// DetachVpnGatewayRequest generates a request for the DetachVpnGateway operation.
-func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *request.Request, output *DetachVpnGatewayOutput) {
-	op := &request.Operation{
-		Name:       opDetachVpnGateway,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DetachVpnGatewayInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DetachVpnGatewayOutput{}
-	req.Data = output
-	return
-}
-
-// Detaches a virtual private gateway from a VPC. You do this if you're planning
-// to turn off the VPC and not use it anymore. You can confirm a virtual private
-// gateway has been completely detached from a VPC by describing the virtual
-// private gateway (any attachments to the virtual private gateway are also
-// described).
-//
-// You must wait for the attachment's state to switch to detached before you
-// can delete the VPC or attach a different VPC to the virtual private gateway.
-func (c *EC2) DetachVpnGateway(input *DetachVpnGatewayInput) (*DetachVpnGatewayOutput, error) {
-	req, out := c.DetachVpnGatewayRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation"
-
-// DisableVgwRoutePropagationRequest generates a request for the DisableVgwRoutePropagation operation.
-func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagationInput) (req *request.Request, output *DisableVgwRoutePropagationOutput) {
-	op := &request.Operation{
-		Name:       opDisableVgwRoutePropagation,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DisableVgwRoutePropagationInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DisableVgwRoutePropagationOutput{}
-	req.Data = output
-	return
-}
-
-// Disables a virtual private gateway (VGW) from propagating routes to a specified
-// route table of a VPC.
-func (c *EC2) DisableVgwRoutePropagation(input *DisableVgwRoutePropagationInput) (*DisableVgwRoutePropagationOutput, error) {
-	req, out := c.DisableVgwRoutePropagationRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDisableVpcClassicLink = "DisableVpcClassicLink"
-
-// DisableVpcClassicLinkRequest generates a request for the DisableVpcClassicLink operation.
-func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (req *request.Request, output *DisableVpcClassicLinkOutput) {
-	op := &request.Operation{
-		Name:       opDisableVpcClassicLink,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DisableVpcClassicLinkInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DisableVpcClassicLinkOutput{}
-	req.Data = output
-	return
-}
-
-// Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC
-// that has EC2-Classic instances linked to it.
-func (c *EC2) DisableVpcClassicLink(input *DisableVpcClassicLinkInput) (*DisableVpcClassicLinkOutput, error) {
-	req, out := c.DisableVpcClassicLinkRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDisassociateAddress = "DisassociateAddress"
-
-// DisassociateAddressRequest generates a request for the DisassociateAddress operation.
-func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *request.Request, output *DisassociateAddressOutput) {
-	op := &request.Operation{
-		Name:       opDisassociateAddress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DisassociateAddressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DisassociateAddressOutput{}
-	req.Data = output
-	return
-}
-
-// Disassociates an Elastic IP address from the instance or network interface
-// it's associated with.
-//
-// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// This is an idempotent operation. If you perform the operation more than
-// once, Amazon EC2 doesn't return an error.
-func (c *EC2) DisassociateAddress(input *DisassociateAddressInput) (*DisassociateAddressOutput, error) {
-	req, out := c.DisassociateAddressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opDisassociateRouteTable = "DisassociateRouteTable"
-
-// DisassociateRouteTableRequest generates a request for the DisassociateRouteTable operation.
-func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput) (req *request.Request, output *DisassociateRouteTableOutput) {
-	op := &request.Operation{
-		Name:       opDisassociateRouteTable,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &DisassociateRouteTableInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &DisassociateRouteTableOutput{}
-	req.Data = output
-	return
-}
-
-// Disassociates a subnet from a route table.
-//
-// After you perform this action, the subnet no longer uses the routes in the
-// route table. Instead, it uses the routes in the VPC's main route table. For
-// more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) DisassociateRouteTable(input *DisassociateRouteTableInput) (*DisassociateRouteTableOutput, error) {
-	req, out := c.DisassociateRouteTableRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation"
-
-// EnableVgwRoutePropagationRequest generates a request for the EnableVgwRoutePropagation operation.
-func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationInput) (req *request.Request, output *EnableVgwRoutePropagationOutput) {
-	op := &request.Operation{
-		Name:       opEnableVgwRoutePropagation,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &EnableVgwRoutePropagationInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &EnableVgwRoutePropagationOutput{}
-	req.Data = output
-	return
-}
-
-// Enables a virtual private gateway (VGW) to propagate routes to the specified
-// route table of a VPC.
-func (c *EC2) EnableVgwRoutePropagation(input *EnableVgwRoutePropagationInput) (*EnableVgwRoutePropagationOutput, error) {
-	req, out := c.EnableVgwRoutePropagationRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opEnableVolumeIO = "EnableVolumeIO"
-
-// EnableVolumeIORequest generates a request for the EnableVolumeIO operation.
-func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Request, output *EnableVolumeIOOutput) {
-	op := &request.Operation{
-		Name:       opEnableVolumeIO,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &EnableVolumeIOInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &EnableVolumeIOOutput{}
-	req.Data = output
-	return
-}
-
-// Enables I/O operations for a volume that had I/O operations disabled because
-// the data on the volume was potentially inconsistent.
-func (c *EC2) EnableVolumeIO(input *EnableVolumeIOInput) (*EnableVolumeIOOutput, error) {
-	req, out := c.EnableVolumeIORequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opEnableVpcClassicLink = "EnableVpcClassicLink"
-
-// EnableVpcClassicLinkRequest generates a request for the EnableVpcClassicLink operation.
-func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req *request.Request, output *EnableVpcClassicLinkOutput) {
-	op := &request.Operation{
-		Name:       opEnableVpcClassicLink,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &EnableVpcClassicLinkInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &EnableVpcClassicLinkOutput{}
-	req.Data = output
-	return
-}
-
-// Enables a VPC for ClassicLink. You can then link EC2-Classic instances to
-// your ClassicLink-enabled VPC to allow communication over private IP addresses.
-// You cannot enable your VPC for ClassicLink if any of your VPC's route tables
-// have existing routes for address ranges within the 10.0.0.0/8 IP address
-// range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16
-// IP address ranges. For more information, see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) EnableVpcClassicLink(input *EnableVpcClassicLinkInput) (*EnableVpcClassicLinkOutput, error) {
-	req, out := c.EnableVpcClassicLinkRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opGetConsoleOutput = "GetConsoleOutput"
-
-// GetConsoleOutputRequest generates a request for the GetConsoleOutput operation.
-func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *request.Request, output *GetConsoleOutputOutput) {
-	op := &request.Operation{
-		Name:       opGetConsoleOutput,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &GetConsoleOutputInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &GetConsoleOutputOutput{}
-	req.Data = output
-	return
-}
-
-// Gets the console output for the specified instance.
-//
-// Instances do not have a physical monitor through which you can view their
-// console output. They also lack physical controls that allow you to power
-// up, reboot, or shut them down. To allow these actions, we provide them through
-// the Amazon EC2 API and command line interface.
-//
-// Instance console output is buffered and posted shortly after instance boot,
-// reboot, and termination. Amazon EC2 preserves the most recent 64 KB output
-// which is available for at least one hour after the most recent post.
-//
-// For Linux instances, the instance console output displays the exact console
-// output that would normally be displayed on a physical monitor attached to
-// a computer. This output is buffered because the instance produces it and
-// then posts it to a store where the instance's owner can retrieve it.
-//
-// For Windows instances, the instance console output includes output from
-// the EC2Config service.
-func (c *EC2) GetConsoleOutput(input *GetConsoleOutputInput) (*GetConsoleOutputOutput, error) {
-	req, out := c.GetConsoleOutputRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opGetPasswordData = "GetPasswordData"
-
-// GetPasswordDataRequest generates a request for the GetPasswordData operation.
-func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request.Request, output *GetPasswordDataOutput) {
-	op := &request.Operation{
-		Name:       opGetPasswordData,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &GetPasswordDataInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &GetPasswordDataOutput{}
-	req.Data = output
-	return
-}
-
-// Retrieves the encrypted administrator password for an instance running Windows.
-//
-// The Windows password is generated at boot if the EC2Config service plugin,
-// Ec2SetPassword, is enabled. This usually only happens the first time an AMI
-// is launched, and then Ec2SetPassword is automatically disabled. The password
-// is not generated for rebundled AMIs unless Ec2SetPassword is enabled before
-// bundling.
-//
-// The password is encrypted using the key pair that you specified when you
-// launched the instance. You must provide the corresponding key pair file.
-//
-// Password generation and encryption takes a few moments. We recommend that
-// you wait up to 15 minutes after launching an instance before trying to retrieve
-// the generated password.
-func (c *EC2) GetPasswordData(input *GetPasswordDataInput) (*GetPasswordDataOutput, error) {
-	req, out := c.GetPasswordDataRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opImportImage = "ImportImage"
-
-// ImportImageRequest generates a request for the ImportImage operation.
-func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request, output *ImportImageOutput) {
-	op := &request.Operation{
-		Name:       opImportImage,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ImportImageInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ImportImageOutput{}
-	req.Data = output
-	return
-}
-
-// Import single or multi-volume disk images or EBS snapshots into an Amazon
-// Machine Image (AMI).
-func (c *EC2) ImportImage(input *ImportImageInput) (*ImportImageOutput, error) {
-	req, out := c.ImportImageRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opImportInstance = "ImportInstance"
-
-// ImportInstanceRequest generates a request for the ImportInstance operation.
-func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Request, output *ImportInstanceOutput) {
-	op := &request.Operation{
-		Name:       opImportInstance,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ImportInstanceInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ImportInstanceOutput{}
-	req.Data = output
-	return
-}
-
-// Creates an import instance task using metadata from the specified disk image.
-// ImportInstance only supports single-volume VMs. To import multi-volume VMs,
-// use ImportImage. After importing the image, you then upload it using the
-// ec2-import-volume command in the EC2 command line tools. For more information,
-// see Using the Command Line Tools to Import Your Virtual Machine to Amazon
-// EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ImportInstance(input *ImportInstanceInput) (*ImportInstanceOutput, error) {
-	req, out := c.ImportInstanceRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opImportKeyPair = "ImportKeyPair"
-
-// ImportKeyPairRequest generates a request for the ImportKeyPair operation.
-func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Request, output *ImportKeyPairOutput) {
-	op := &request.Operation{
-		Name:       opImportKeyPair,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ImportKeyPairInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ImportKeyPairOutput{}
-	req.Data = output
-	return
-}
-
-// Imports the public key from an RSA key pair that you created with a third-party
-// tool. Compare this with CreateKeyPair, in which AWS creates the key pair
-// and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair,
-// you create the key pair and give AWS just the public key. The private key
-// is never transferred between you and AWS.
-//
-// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ImportKeyPair(input *ImportKeyPairInput) (*ImportKeyPairOutput, error) {
-	req, out := c.ImportKeyPairRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opImportSnapshot = "ImportSnapshot"
-
-// ImportSnapshotRequest generates a request for the ImportSnapshot operation.
-func (c *EC2) ImportSnapshotRequest(input *ImportSnapshotInput) (req *request.Request, output *ImportSnapshotOutput) {
-	op := &request.Operation{
-		Name:       opImportSnapshot,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ImportSnapshotInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ImportSnapshotOutput{}
-	req.Data = output
-	return
-}
-
-// Imports a disk into an EBS snapshot.
-func (c *EC2) ImportSnapshot(input *ImportSnapshotInput) (*ImportSnapshotOutput, error) {
-	req, out := c.ImportSnapshotRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opImportVolume = "ImportVolume"
-
-// ImportVolumeRequest generates a request for the ImportVolume operation.
-func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Request, output *ImportVolumeOutput) {
-	op := &request.Operation{
-		Name:       opImportVolume,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ImportVolumeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ImportVolumeOutput{}
-	req.Data = output
-	return
-}
-
-// Creates an import volume task using metadata from the specified disk image.
-// After importing the image, you then upload it using the ec2-import-volume
-// command in the Amazon EC2 command-line interface (CLI) tools. For more information,
-// see Using the Command Line Tools to Import Your Virtual Machine to Amazon
-// EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ImportVolume(input *ImportVolumeInput) (*ImportVolumeOutput, error) {
-	req, out := c.ImportVolumeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyImageAttribute = "ModifyImageAttribute"
-
-// ModifyImageAttributeRequest generates a request for the ModifyImageAttribute operation.
-func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req *request.Request, output *ModifyImageAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifyImageAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyImageAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyImageAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the specified attribute of the specified AMI. You can specify only
-// one attribute at a time.
-//
-// AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace
-// product code cannot be made public.
-func (c *EC2) ModifyImageAttribute(input *ModifyImageAttributeInput) (*ModifyImageAttributeOutput, error) {
-	req, out := c.ModifyImageAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyInstanceAttribute = "ModifyInstanceAttribute"
-
-// ModifyInstanceAttributeRequest generates a request for the ModifyInstanceAttribute operation.
-func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput) (req *request.Request, output *ModifyInstanceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifyInstanceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyInstanceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyInstanceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the specified attribute of the specified instance. You can specify
-// only one attribute at a time.
-//
-// To modify some attributes, the instance must be stopped. For more information,
-// see Modifying Attributes of a Stopped Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ModifyInstanceAttribute(input *ModifyInstanceAttributeInput) (*ModifyInstanceAttributeOutput, error) {
-	req, out := c.ModifyInstanceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute"
-
-// ModifyNetworkInterfaceAttributeRequest generates a request for the ModifyNetworkInterfaceAttribute operation.
-func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfaceAttributeInput) (req *request.Request, output *ModifyNetworkInterfaceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifyNetworkInterfaceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyNetworkInterfaceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyNetworkInterfaceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the specified network interface attribute. You can specify only
-// one attribute at a time.
-func (c *EC2) ModifyNetworkInterfaceAttribute(input *ModifyNetworkInterfaceAttributeInput) (*ModifyNetworkInterfaceAttributeOutput, error) {
-	req, out := c.ModifyNetworkInterfaceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyReservedInstances = "ModifyReservedInstances"
-
-// ModifyReservedInstancesRequest generates a request for the ModifyReservedInstances operation.
-func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput) (req *request.Request, output *ModifyReservedInstancesOutput) {
-	op := &request.Operation{
-		Name:       opModifyReservedInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyReservedInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyReservedInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the Availability Zone, instance count, instance type, or network
-// platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved
-// Instances to be modified must be identical, except for Availability Zone,
-// network platform, and instance type.
-//
-// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ModifyReservedInstances(input *ModifyReservedInstancesInput) (*ModifyReservedInstancesOutput, error) {
-	req, out := c.ModifyReservedInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifySnapshotAttribute = "ModifySnapshotAttribute"
-
-// ModifySnapshotAttributeRequest generates a request for the ModifySnapshotAttribute operation.
-func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput) (req *request.Request, output *ModifySnapshotAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifySnapshotAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifySnapshotAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifySnapshotAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Adds or removes permission settings for the specified snapshot. You may add
-// or remove specified AWS account IDs from a snapshot's list of create volume
-// permissions, but you cannot do both in a single API call. If you need to
-// both add and remove account IDs for a snapshot, you must use multiple API
-// calls.
-//
-// For more information on modifying snapshot permissions, see Sharing Snapshots
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-//  Snapshots with AWS Marketplace product codes cannot be made public.
-func (c *EC2) ModifySnapshotAttribute(input *ModifySnapshotAttributeInput) (*ModifySnapshotAttributeOutput, error) {
-	req, out := c.ModifySnapshotAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifySpotFleetRequest = "ModifySpotFleetRequest"
-
-// ModifySpotFleetRequestRequest generates a request for the ModifySpotFleetRequest operation.
-func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) (req *request.Request, output *ModifySpotFleetRequestOutput) {
-	op := &request.Operation{
-		Name:       opModifySpotFleetRequest,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifySpotFleetRequestInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifySpotFleetRequestOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the specified Spot fleet request.
-//
-// While the Spot fleet request is being modified, it is in the modifying state.
-//
-// To scale up your Spot fleet, increase its target capacity. The Spot fleet
-// launches the additional Spot instances according to the allocation strategy
-// for the Spot fleet request. If the allocation strategy is lowestPrice, the
-// Spot fleet launches instances using the Spot pool with the lowest price.
-// If the allocation strategy is diversified, the Spot fleet distributes the
-// instances across the Spot pools.
-//
-// To scale down your Spot fleet, decrease its target capacity. First, the
-// Spot fleet cancels any open bids that exceed the new target capacity. You
-// can request that the Spot fleet terminate Spot instances until the size of
-// the fleet no longer exceeds the new target capacity. If the allocation strategy
-// is lowestPrice, the Spot fleet terminates the instances with the highest
-// price per unit. If the allocation strategy is diversified, the Spot fleet
-// terminates instances across the Spot pools. Alternatively, you can request
-// that the Spot fleet keep the fleet at its current size, but not replace any
-// Spot instances that are interrupted or that you terminate manually.
-func (c *EC2) ModifySpotFleetRequest(input *ModifySpotFleetRequestInput) (*ModifySpotFleetRequestOutput, error) {
-	req, out := c.ModifySpotFleetRequestRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifySubnetAttribute = "ModifySubnetAttribute"
-
-// ModifySubnetAttributeRequest generates a request for the ModifySubnetAttribute operation.
-func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (req *request.Request, output *ModifySubnetAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifySubnetAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifySubnetAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifySubnetAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies a subnet attribute.
-func (c *EC2) ModifySubnetAttribute(input *ModifySubnetAttributeInput) (*ModifySubnetAttributeOutput, error) {
-	req, out := c.ModifySubnetAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyVolumeAttribute = "ModifyVolumeAttribute"
-
-// ModifyVolumeAttributeRequest generates a request for the ModifyVolumeAttribute operation.
-func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (req *request.Request, output *ModifyVolumeAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifyVolumeAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyVolumeAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyVolumeAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies a volume attribute.
-//
-// By default, all I/O operations for the volume are suspended when the data
-// on the volume is determined to be potentially inconsistent, to prevent undetectable,
-// latent data corruption. The I/O access to the volume can be resumed by first
-// enabling I/O access and then checking the data consistency on your volume.
-//
-// You can change the default behavior to resume I/O operations. We recommend
-// that you change this only for boot volumes or for volumes that are stateless
-// or disposable.
-func (c *EC2) ModifyVolumeAttribute(input *ModifyVolumeAttributeInput) (*ModifyVolumeAttributeOutput, error) {
-	req, out := c.ModifyVolumeAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyVpcAttribute = "ModifyVpcAttribute"
-
-// ModifyVpcAttributeRequest generates a request for the ModifyVpcAttribute operation.
-func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *request.Request, output *ModifyVpcAttributeOutput) {
-	op := &request.Operation{
-		Name:       opModifyVpcAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyVpcAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyVpcAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies the specified attribute of the specified VPC.
-func (c *EC2) ModifyVpcAttribute(input *ModifyVpcAttributeInput) (*ModifyVpcAttributeOutput, error) {
-	req, out := c.ModifyVpcAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opModifyVpcEndpoint = "ModifyVpcEndpoint"
-
-// ModifyVpcEndpointRequest generates a request for the ModifyVpcEndpoint operation.
-func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *request.Request, output *ModifyVpcEndpointOutput) {
-	op := &request.Operation{
-		Name:       opModifyVpcEndpoint,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ModifyVpcEndpointInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ModifyVpcEndpointOutput{}
-	req.Data = output
-	return
-}
-
-// Modifies attributes of a specified VPC endpoint. You can modify the policy
-// associated with the endpoint, and you can add and remove route tables associated
-// with the endpoint.
-func (c *EC2) ModifyVpcEndpoint(input *ModifyVpcEndpointInput) (*ModifyVpcEndpointOutput, error) {
-	req, out := c.ModifyVpcEndpointRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opMonitorInstances = "MonitorInstances"
-
-// MonitorInstancesRequest generates a request for the MonitorInstances operation.
-func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *request.Request, output *MonitorInstancesOutput) {
-	op := &request.Operation{
-		Name:       opMonitorInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &MonitorInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &MonitorInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Enables monitoring for a running instance. For more information about monitoring
-// instances, see Monitoring Your Instances and Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) MonitorInstances(input *MonitorInstancesInput) (*MonitorInstancesOutput, error) {
-	req, out := c.MonitorInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opMoveAddressToVpc = "MoveAddressToVpc"
-
-// MoveAddressToVpcRequest generates a request for the MoveAddressToVpc operation.
-func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *request.Request, output *MoveAddressToVpcOutput) {
-	op := &request.Operation{
-		Name:       opMoveAddressToVpc,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &MoveAddressToVpcInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &MoveAddressToVpcOutput{}
-	req.Data = output
-	return
-}
-
-// Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC
-// platform. The Elastic IP address must be allocated to your account, and it
-// must not be associated with an instance. After the Elastic IP address is
-// moved, it is no longer available for use in the EC2-Classic platform, unless
-// you move it back using the RestoreAddressToClassic request. You cannot move
-// an Elastic IP address that's allocated for use in the EC2-VPC platform to
-// the EC2-Classic platform.
-func (c *EC2) MoveAddressToVpc(input *MoveAddressToVpcInput) (*MoveAddressToVpcOutput, error) {
-	req, out := c.MoveAddressToVpcRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering"
-
-// PurchaseReservedInstancesOfferingRequest generates a request for the PurchaseReservedInstancesOffering operation.
-func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedInstancesOfferingInput) (req *request.Request, output *PurchaseReservedInstancesOfferingOutput) {
-	op := &request.Operation{
-		Name:       opPurchaseReservedInstancesOffering,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &PurchaseReservedInstancesOfferingInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &PurchaseReservedInstancesOfferingOutput{}
-	req.Data = output
-	return
-}
-
-// Purchases a Reserved Instance for use with your account. With Amazon EC2
-// Reserved Instances, you obtain a capacity reservation for a certain instance
-// configuration over a specified period of time and pay a lower hourly rate
-// compared to on-Demand Instance pricing.
-//
-// Use DescribeReservedInstancesOfferings to get a list of Reserved Instance
-// offerings that match your specifications. After you've purchased a Reserved
-// Instance, you can check for your new Reserved Instance with DescribeReservedInstances.
-//
-// For more information, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
-// and Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) PurchaseReservedInstancesOffering(input *PurchaseReservedInstancesOfferingInput) (*PurchaseReservedInstancesOfferingOutput, error) {
-	req, out := c.PurchaseReservedInstancesOfferingRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRebootInstances = "RebootInstances"
-
-// RebootInstancesRequest generates a request for the RebootInstances operation.
-func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.Request, output *RebootInstancesOutput) {
-	op := &request.Operation{
-		Name:       opRebootInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RebootInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RebootInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Requests a reboot of one or more instances. This operation is asynchronous;
-// it only queues a request to reboot the specified instances. The operation
-// succeeds if the instances are valid and belong to you. Requests to reboot
-// terminated instances are ignored.
-//
-// If a Linux/Unix instance does not cleanly shut down within four minutes,
-// Amazon EC2 performs a hard reboot.
-//
-// For more information about troubleshooting, see Getting Console Output and
-// Rebooting Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) RebootInstances(input *RebootInstancesInput) (*RebootInstancesOutput, error) {
-	req, out := c.RebootInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRegisterImage = "RegisterImage"
-
-// RegisterImageRequest generates a request for the RegisterImage operation.
-func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Request, output *RegisterImageOutput) {
-	op := &request.Operation{
-		Name:       opRegisterImage,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RegisterImageInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RegisterImageOutput{}
-	req.Data = output
-	return
-}
-
-// Registers an AMI. When you're creating an AMI, this is the final step you
-// must complete before you can launch an instance from the AMI. For more information
-// about creating AMIs, see Creating Your Own AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// For Amazon EBS-backed instances, CreateImage creates and registers the AMI
-// in a single request, so you don't have to register the AMI yourself.
-//
-// You can also use RegisterImage to create an Amazon EBS-backed Linux AMI
-// from a snapshot of a root device volume. For more information, see Launching
-// an Instance from a Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_LaunchingInstanceFromSnapshot.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-//  Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE
-// Linux Enterprise Server (SLES), use the EC2 billingProduct code associated
-// with an AMI to verify subscription status for package updates. Creating an
-// AMI from an EBS snapshot does not maintain this billing code, and subsequent
-// instances launched from such an AMI will not be able to connect to package
-// update infrastructure.
-//
-// Similarly, although you can create a Windows AMI from a snapshot, you can't
-// successfully launch an instance from the AMI.
-//
-// To create Windows AMIs or to create AMIs for Linux operating systems that
-// must retain AMI billing codes to work properly, see CreateImage.
-//
-//  If needed, you can deregister an AMI at any time. Any modifications you
-// make to an AMI backed by an instance store volume invalidates its registration.
-// If you make changes to an image, deregister the previous image and register
-// the new image.
-//
-// You can't register an image where a secondary (non-root) snapshot has AWS
-// Marketplace product codes.
-func (c *EC2) RegisterImage(input *RegisterImageInput) (*RegisterImageOutput, error) {
-	req, out := c.RegisterImageRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection"
-
-// RejectVpcPeeringConnectionRequest generates a request for the RejectVpcPeeringConnection operation.
-func (c *EC2) RejectVpcPeeringConnectionRequest(input *RejectVpcPeeringConnectionInput) (req *request.Request, output *RejectVpcPeeringConnectionOutput) {
-	op := &request.Operation{
-		Name:       opRejectVpcPeeringConnection,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RejectVpcPeeringConnectionInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RejectVpcPeeringConnectionOutput{}
-	req.Data = output
-	return
-}
-
-// Rejects a VPC peering connection request. The VPC peering connection must
-// be in the pending-acceptance state. Use the DescribeVpcPeeringConnections
-// request to view your outstanding VPC peering connection requests. To delete
-// an active VPC peering connection, or to delete a VPC peering connection request
-// that you initiated, use DeleteVpcPeeringConnection.
-func (c *EC2) RejectVpcPeeringConnection(input *RejectVpcPeeringConnectionInput) (*RejectVpcPeeringConnectionOutput, error) {
-	req, out := c.RejectVpcPeeringConnectionRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReleaseAddress = "ReleaseAddress"
-
-// ReleaseAddressRequest generates a request for the ReleaseAddress operation.
-func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Request, output *ReleaseAddressOutput) {
-	op := &request.Operation{
-		Name:       opReleaseAddress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReleaseAddressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReleaseAddressOutput{}
-	req.Data = output
-	return
-}
-
-// Releases the specified Elastic IP address.
-//
-// After releasing an Elastic IP address, it is released to the IP address
-// pool and might be unavailable to you. Be sure to update your DNS records
-// and any servers or devices that communicate with the address. If you attempt
-// to release an Elastic IP address that you already released, you'll get an
-// AuthFailure error if the address is already allocated to another AWS account.
-//
-// [EC2-Classic, default VPC] Releasing an Elastic IP address automatically
-// disassociates it from any instance that it's associated with. To disassociate
-// an Elastic IP address without releasing it, use DisassociateAddress.
-//
-// [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic
-// IP address before you try to release it. Otherwise, Amazon EC2 returns an
-// error (InvalidIPAddress.InUse).
-func (c *EC2) ReleaseAddress(input *ReleaseAddressInput) (*ReleaseAddressOutput, error) {
-	req, out := c.ReleaseAddressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation"
-
-// ReplaceNetworkAclAssociationRequest generates a request for the ReplaceNetworkAclAssociation operation.
-func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssociationInput) (req *request.Request, output *ReplaceNetworkAclAssociationOutput) {
-	op := &request.Operation{
-		Name:       opReplaceNetworkAclAssociation,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReplaceNetworkAclAssociationInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReplaceNetworkAclAssociationOutput{}
-	req.Data = output
-	return
-}
-
-// Changes which network ACL a subnet is associated with. By default when you
-// create a subnet, it's automatically associated with the default network ACL.
-// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) ReplaceNetworkAclAssociation(input *ReplaceNetworkAclAssociationInput) (*ReplaceNetworkAclAssociationOutput, error) {
-	req, out := c.ReplaceNetworkAclAssociationRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry"
-
-// ReplaceNetworkAclEntryRequest generates a request for the ReplaceNetworkAclEntry operation.
-func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput) (req *request.Request, output *ReplaceNetworkAclEntryOutput) {
-	op := &request.Operation{
-		Name:       opReplaceNetworkAclEntry,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReplaceNetworkAclEntryInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReplaceNetworkAclEntryOutput{}
-	req.Data = output
-	return
-}
-
-// Replaces an entry (rule) in a network ACL. For more information about network
-// ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) ReplaceNetworkAclEntry(input *ReplaceNetworkAclEntryInput) (*ReplaceNetworkAclEntryOutput, error) {
-	req, out := c.ReplaceNetworkAclEntryRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReplaceRoute = "ReplaceRoute"
-
-// ReplaceRouteRequest generates a request for the ReplaceRoute operation.
-func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Request, output *ReplaceRouteOutput) {
-	op := &request.Operation{
-		Name:       opReplaceRoute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReplaceRouteInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReplaceRouteOutput{}
-	req.Data = output
-	return
-}
-
-// Replaces an existing route within a route table in a VPC. You must provide
-// only one of the following: Internet gateway or virtual private gateway, NAT
-// instance, VPC peering connection, or network interface.
-//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) ReplaceRoute(input *ReplaceRouteInput) (*ReplaceRouteOutput, error) {
-	req, out := c.ReplaceRouteRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation"
-
-// ReplaceRouteTableAssociationRequest generates a request for the ReplaceRouteTableAssociation operation.
-func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssociationInput) (req *request.Request, output *ReplaceRouteTableAssociationOutput) {
-	op := &request.Operation{
-		Name:       opReplaceRouteTableAssociation,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReplaceRouteTableAssociationInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReplaceRouteTableAssociationOutput{}
-	req.Data = output
-	return
-}
-
-// Changes the route table associated with a given subnet in a VPC. After the
-// operation completes, the subnet uses the routes in the new route table it's
-// associated with. For more information about route tables, see Route Tables
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
-// in the Amazon Virtual Private Cloud User Guide.
-//
-// You can also use ReplaceRouteTableAssociation to change which table is the
-// main route table in the VPC. You just specify the main route table's association
-// ID and the route table to be the new main route table.
-func (c *EC2) ReplaceRouteTableAssociation(input *ReplaceRouteTableAssociationInput) (*ReplaceRouteTableAssociationOutput, error) {
-	req, out := c.ReplaceRouteTableAssociationRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opReportInstanceStatus = "ReportInstanceStatus"
-
-// ReportInstanceStatusRequest generates a request for the ReportInstanceStatus operation.
-func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req *request.Request, output *ReportInstanceStatusOutput) {
-	op := &request.Operation{
-		Name:       opReportInstanceStatus,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ReportInstanceStatusInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ReportInstanceStatusOutput{}
-	req.Data = output
-	return
-}
-
-// Submits feedback about the status of an instance. The instance must be in
-// the running state. If your experience with the instance differs from the
-// instance status returned by DescribeInstanceStatus, use ReportInstanceStatus
-// to report your experience with the instance. Amazon EC2 collects this information
-// to improve the accuracy of status checks.
-//
-// Use of this action does not change the value returned by DescribeInstanceStatus.
-func (c *EC2) ReportInstanceStatus(input *ReportInstanceStatusInput) (*ReportInstanceStatusOutput, error) {
-	req, out := c.ReportInstanceStatusRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRequestSpotFleet = "RequestSpotFleet"
-
-// RequestSpotFleetRequest generates a request for the RequestSpotFleet operation.
-func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *request.Request, output *RequestSpotFleetOutput) {
-	op := &request.Operation{
-		Name:       opRequestSpotFleet,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RequestSpotFleetInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RequestSpotFleetOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a Spot fleet request.
-//
-// You can submit a single request that includes multiple launch specifications
-// that vary by instance type, AMI, Availability Zone, or subnet.
-//
-// By default, the Spot fleet requests Spot instances in the Spot pool where
-// the price per unit is the lowest. Each launch specification can include its
-// own instance weighting that reflects the value of the instance type to your
-// application workload.
-//
-// Alternatively, you can specify that the Spot fleet distribute the target
-// capacity across the Spot pools included in its launch specifications. By
-// ensuring that the Spot instances in your Spot fleet are in different Spot
-// pools, you can improve the availability of your fleet.
-//
-// For more information, see Spot Fleet Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) RequestSpotFleet(input *RequestSpotFleetInput) (*RequestSpotFleetOutput, error) {
-	req, out := c.RequestSpotFleetRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRequestSpotInstances = "RequestSpotInstances"
-
-// RequestSpotInstancesRequest generates a request for the RequestSpotInstances operation.
-func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req *request.Request, output *RequestSpotInstancesOutput) {
-	op := &request.Operation{
-		Name:       opRequestSpotInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RequestSpotInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RequestSpotInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Creates a Spot instance request. Spot instances are instances that Amazon
-// EC2 launches when the bid price that you specify exceeds the current Spot
-// price. Amazon EC2 periodically sets the Spot price based on available Spot
-// Instance capacity and current Spot instance requests. For more information,
-// see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) RequestSpotInstances(input *RequestSpotInstancesInput) (*RequestSpotInstancesOutput, error) {
-	req, out := c.RequestSpotInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opResetImageAttribute = "ResetImageAttribute"
-
-// ResetImageAttributeRequest generates a request for the ResetImageAttribute operation.
-func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req *request.Request, output *ResetImageAttributeOutput) {
-	op := &request.Operation{
-		Name:       opResetImageAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ResetImageAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ResetImageAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Resets an attribute of an AMI to its default value.
-//
-//  The productCodes attribute can't be reset.
-func (c *EC2) ResetImageAttribute(input *ResetImageAttributeInput) (*ResetImageAttributeOutput, error) {
-	req, out := c.ResetImageAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opResetInstanceAttribute = "ResetInstanceAttribute"
-
-// ResetInstanceAttributeRequest generates a request for the ResetInstanceAttribute operation.
-func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) (req *request.Request, output *ResetInstanceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opResetInstanceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ResetInstanceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ResetInstanceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Resets an attribute of an instance to its default value. To reset the kernel
-// or ramdisk, the instance must be in a stopped state. To reset the SourceDestCheck,
-// the instance can be either running or stopped.
-//
-// The SourceDestCheck attribute controls whether source/destination checking
-// is enabled. The default value is true, which means checking is enabled. This
-// value must be false for a NAT instance to perform NAT. For more information,
-// see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
-// in the Amazon Virtual Private Cloud User Guide.
-func (c *EC2) ResetInstanceAttribute(input *ResetInstanceAttributeInput) (*ResetInstanceAttributeOutput, error) {
-	req, out := c.ResetInstanceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute"
-
-// ResetNetworkInterfaceAttributeRequest generates a request for the ResetNetworkInterfaceAttribute operation.
-func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterfaceAttributeInput) (req *request.Request, output *ResetNetworkInterfaceAttributeOutput) {
-	op := &request.Operation{
-		Name:       opResetNetworkInterfaceAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ResetNetworkInterfaceAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ResetNetworkInterfaceAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Resets a network interface attribute. You can specify only one attribute
-// at a time.
-func (c *EC2) ResetNetworkInterfaceAttribute(input *ResetNetworkInterfaceAttributeInput) (*ResetNetworkInterfaceAttributeOutput, error) {
-	req, out := c.ResetNetworkInterfaceAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opResetSnapshotAttribute = "ResetSnapshotAttribute"
-
-// ResetSnapshotAttributeRequest generates a request for the ResetSnapshotAttribute operation.
-func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput) (req *request.Request, output *ResetSnapshotAttributeOutput) {
-	op := &request.Operation{
-		Name:       opResetSnapshotAttribute,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &ResetSnapshotAttributeInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &ResetSnapshotAttributeOutput{}
-	req.Data = output
-	return
-}
-
-// Resets permission settings for the specified snapshot.
-//
-// For more information on modifying snapshot permissions, see Sharing Snapshots
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) ResetSnapshotAttribute(input *ResetSnapshotAttributeInput) (*ResetSnapshotAttributeOutput, error) {
-	req, out := c.ResetSnapshotAttributeRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRestoreAddressToClassic = "RestoreAddressToClassic"
-
-// RestoreAddressToClassicRequest generates a request for the RestoreAddressToClassic operation.
-func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput) (req *request.Request, output *RestoreAddressToClassicOutput) {
-	op := &request.Operation{
-		Name:       opRestoreAddressToClassic,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RestoreAddressToClassicInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RestoreAddressToClassicOutput{}
-	req.Data = output
-	return
-}
-
-// Restores an Elastic IP address that was previously moved to the EC2-VPC platform
-// back to the EC2-Classic platform. You cannot move an Elastic IP address that
-// was originally allocated for use in EC2-VPC. The Elastic IP address must
-// not be associated with an instance or network interface.
-func (c *EC2) RestoreAddressToClassic(input *RestoreAddressToClassicInput) (*RestoreAddressToClassicOutput, error) {
-	req, out := c.RestoreAddressToClassicRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress"
-
-// RevokeSecurityGroupEgressRequest generates a request for the RevokeSecurityGroupEgress operation.
-func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressInput) (req *request.Request, output *RevokeSecurityGroupEgressOutput) {
-	op := &request.Operation{
-		Name:       opRevokeSecurityGroupEgress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RevokeSecurityGroupEgressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RevokeSecurityGroupEgressOutput{}
-	req.Data = output
-	return
-}
-
-// Removes one or more egress rules from a security group for EC2-VPC. The values
-// that you specify in the revoke request (for example, ports) must match the
-// existing rule's values for the rule to be revoked.
-//
-// Each rule consists of the protocol and the CIDR range or source security
-// group. For the TCP and UDP protocols, you must also specify the destination
-// port or range of ports. For the ICMP protocol, you must also specify the
-// ICMP type and code.
-//
-// Rule changes are propagated to instances within the security group as quickly
-// as possible. However, a small delay might occur.
-func (c *EC2) RevokeSecurityGroupEgress(input *RevokeSecurityGroupEgressInput) (*RevokeSecurityGroupEgressOutput, error) {
-	req, out := c.RevokeSecurityGroupEgressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress"
-
-// RevokeSecurityGroupIngressRequest generates a request for the RevokeSecurityGroupIngress operation.
-func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngressInput) (req *request.Request, output *RevokeSecurityGroupIngressOutput) {
-	op := &request.Operation{
-		Name:       opRevokeSecurityGroupIngress,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RevokeSecurityGroupIngressInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &RevokeSecurityGroupIngressOutput{}
-	req.Data = output
-	return
-}
-
-// Removes one or more ingress rules from a security group. The values that
-// you specify in the revoke request (for example, ports) must match the existing
-// rule's values for the rule to be removed.
-//
-// Each rule consists of the protocol and the CIDR range or source security
-// group. For the TCP and UDP protocols, you must also specify the destination
-// port or range of ports. For the ICMP protocol, you must also specify the
-// ICMP type and code.
-//
-// Rule changes are propagated to instances within the security group as quickly
-// as possible. However, a small delay might occur.
-func (c *EC2) RevokeSecurityGroupIngress(input *RevokeSecurityGroupIngressInput) (*RevokeSecurityGroupIngressOutput, error) {
-	req, out := c.RevokeSecurityGroupIngressRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opRunInstances = "RunInstances"
-
-// RunInstancesRequest generates a request for the RunInstances operation.
-func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Request, output *Reservation) {
-	op := &request.Operation{
-		Name:       opRunInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &RunInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &Reservation{}
-	req.Data = output
-	return
-}
-
-// Launches the specified number of instances using an AMI for which you have
-// permissions.
-//
-// When you launch an instance, it enters the pending state. After the instance
-// is ready for you, it enters the running state. To check the state of your
-// instance, call DescribeInstances.
-//
-// If you don't specify a security group when launching an instance, Amazon
-// EC2 uses the default security group. For more information, see Security Groups
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// [EC2-VPC only accounts] If you don't specify a subnet in the request, we
-// choose a default subnet from your default VPC for you.
-//
-// [EC2-Classic accounts] If you're launching into EC2-Classic and you don't
-// specify an Availability Zone, we choose one for you.
-//
-// Linux instances have access to the public key of the key pair at boot. You
-// can use this key to provide secure access to the instance. Amazon EC2 public
-// images use this feature to provide secure access without passwords. For more
-// information, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// You can provide optional user data when launching an instance. For more
-// information, see Instance Metadata (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// If any of the AMIs have a product code attached for which the user has not
-// subscribed, RunInstances fails.
-//
-// T2 instance types can only be launched into a VPC. If you do not have a
-// default VPC, or if you do not specify a subnet ID in the request, RunInstances
-// fails.
-//
-// For more information about troubleshooting, see What To Do If An Instance
-// Immediately Terminates (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html),
-// and Troubleshooting Connecting to Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) RunInstances(input *RunInstancesInput) (*Reservation, error) {
-	req, out := c.RunInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opStartInstances = "StartInstances"
-
-// StartInstancesRequest generates a request for the StartInstances operation.
-func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Request, output *StartInstancesOutput) {
-	op := &request.Operation{
-		Name:       opStartInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &StartInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &StartInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Starts an Amazon EBS-backed AMI that you've previously stopped.
-//
-// Instances that use Amazon EBS volumes as their root devices can be quickly
-// stopped and started. When an instance is stopped, the compute resources are
-// released and you are not billed for hourly instance usage. However, your
-// root partition Amazon EBS volume remains, continues to persist your data,
-// and you are charged for Amazon EBS volume usage. You can restart your instance
-// at any time. Each time you transition an instance from stopped to started,
-// Amazon EC2 charges a full instance hour, even if transitions happen multiple
-// times within a single hour.
-//
-// Before stopping an instance, make sure it is in a state from which it can
-// be restarted. Stopping an instance does not preserve data stored in RAM.
-//
-// Performing this operation on an instance that uses an instance store as
-// its root device returns an error.
-//
-// For more information, see Stopping Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) StartInstances(input *StartInstancesInput) (*StartInstancesOutput, error) {
-	req, out := c.StartInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opStopInstances = "StopInstances"
-
-// StopInstancesRequest generates a request for the StopInstances operation.
-func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Request, output *StopInstancesOutput) {
-	op := &request.Operation{
-		Name:       opStopInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &StopInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &StopInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Stops an Amazon EBS-backed instance. Each time you transition an instance
-// from stopped to started, Amazon EC2 charges a full instance hour, even if
-// transitions happen multiple times within a single hour.
-//
-// You can't start or stop Spot Instances.
-//
-// Instances that use Amazon EBS volumes as their root devices can be quickly
-// stopped and started. When an instance is stopped, the compute resources are
-// released and you are not billed for hourly instance usage. However, your
-// root partition Amazon EBS volume remains, continues to persist your data,
-// and you are charged for Amazon EBS volume usage. You can restart your instance
-// at any time.
-//
-// Before stopping an instance, make sure it is in a state from which it can
-// be restarted. Stopping an instance does not preserve data stored in RAM.
-//
-// Performing this operation on an instance that uses an instance store as
-// its root device returns an error.
-//
-// You can stop, start, and terminate EBS-backed instances. You can only terminate
-// instance store-backed instances. What happens to an instance differs if you
-// stop it or terminate it. For example, when you stop an instance, the root
-// device and any other devices attached to the instance persist. When you terminate
-// an instance, the root device and any other devices attached during the instance
-// launch are automatically deleted. For more information about the differences
-// between stopping and terminating instances, see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// For more information about troubleshooting, see Troubleshooting Stopping
-// Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) StopInstances(input *StopInstancesInput) (*StopInstancesOutput, error) {
-	req, out := c.StopInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opTerminateInstances = "TerminateInstances"
-
-// TerminateInstancesRequest generates a request for the TerminateInstances operation.
-func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *request.Request, output *TerminateInstancesOutput) {
-	op := &request.Operation{
-		Name:       opTerminateInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &TerminateInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &TerminateInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Shuts down one or more instances. This operation is idempotent; if you terminate
-// an instance more than once, each call succeeds.
-//
-// Terminated instances remain visible after termination (for approximately
-// one hour).
-//
-// By default, Amazon EC2 deletes all EBS volumes that were attached when the
-// instance launched. Volumes attached after instance launch continue running.
-//
-// You can stop, start, and terminate EBS-backed instances. You can only terminate
-// instance store-backed instances. What happens to an instance differs if you
-// stop it or terminate it. For example, when you stop an instance, the root
-// device and any other devices attached to the instance persist. When you terminate
-// an instance, any attached EBS volumes with the DeleteOnTermination block
-// device mapping parameter set to true are automatically deleted. For more
-// information about the differences between stopping and terminating instances,
-// see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-//
-// For more information about troubleshooting, see Troubleshooting Terminating
-// Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) TerminateInstances(input *TerminateInstancesInput) (*TerminateInstancesOutput, error) {
-	req, out := c.TerminateInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses"
-
-// UnassignPrivateIpAddressesRequest generates a request for the UnassignPrivateIpAddresses operation.
-func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddressesInput) (req *request.Request, output *UnassignPrivateIpAddressesOutput) {
-	op := &request.Operation{
-		Name:       opUnassignPrivateIpAddresses,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &UnassignPrivateIpAddressesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &UnassignPrivateIpAddressesOutput{}
-	req.Data = output
-	return
-}
-
-// Unassigns one or more secondary private IP addresses from a network interface.
-func (c *EC2) UnassignPrivateIpAddresses(input *UnassignPrivateIpAddressesInput) (*UnassignPrivateIpAddressesOutput, error) {
-	req, out := c.UnassignPrivateIpAddressesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-const opUnmonitorInstances = "UnmonitorInstances"
-
-// UnmonitorInstancesRequest generates a request for the UnmonitorInstances operation.
-func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *request.Request, output *UnmonitorInstancesOutput) {
-	op := &request.Operation{
-		Name:       opUnmonitorInstances,
-		HTTPMethod: "POST",
-		HTTPPath:   "/",
-	}
-
-	if input == nil {
-		input = &UnmonitorInstancesInput{}
-	}
-
-	req = c.newRequest(op, input, output)
-	output = &UnmonitorInstancesOutput{}
-	req.Data = output
-	return
-}
-
-// Disables monitoring for a running instance. For more information about monitoring
-// instances, see Monitoring Your Instances and Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
-// in the Amazon Elastic Compute Cloud User Guide.
-func (c *EC2) UnmonitorInstances(input *UnmonitorInstancesInput) (*UnmonitorInstancesOutput, error) {
-	req, out := c.UnmonitorInstancesRequest(input)
-	err := req.Send()
-	return out, err
-}
-
-type AcceptVpcPeeringConnectionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
-
-	metadataAcceptVpcPeeringConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataAcceptVpcPeeringConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AcceptVpcPeeringConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AcceptVpcPeeringConnectionInput) GoString() string {
-	return s.String()
-}
-
-type AcceptVpcPeeringConnectionOutput struct {
-	// Information about the VPC peering connection.
-	VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"`
-
-	metadataAcceptVpcPeeringConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataAcceptVpcPeeringConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AcceptVpcPeeringConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AcceptVpcPeeringConnectionOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an account attribute.
-type AccountAttribute struct {
-	// The name of the account attribute.
-	AttributeName *string `locationName:"attributeName" type:"string"`
-
-	// One or more values for the account attribute.
-	AttributeValues []*AccountAttributeValue `locationName:"attributeValueSet" locationNameList:"item" type:"list"`
-
-	metadataAccountAttribute `json:"-" xml:"-"`
-}
-
-type metadataAccountAttribute struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AccountAttribute) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AccountAttribute) GoString() string {
-	return s.String()
-}
-
-// Describes a value of an account attribute.
-type AccountAttributeValue struct {
-	// The value of the attribute.
-	AttributeValue *string `locationName:"attributeValue" type:"string"`
-
-	metadataAccountAttributeValue `json:"-" xml:"-"`
-}
-
-type metadataAccountAttributeValue struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AccountAttributeValue) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AccountAttributeValue) GoString() string {
-	return s.String()
-}
-
-// Describes a running instance in a Spot fleet.
-type ActiveInstance struct {
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string"`
-
-	// The ID of the Spot instance request.
-	SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"`
-
-	metadataActiveInstance `json:"-" xml:"-"`
-}
-
-type metadataActiveInstance struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ActiveInstance) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ActiveInstance) GoString() string {
-	return s.String()
-}
-
-// Describes an Elastic IP address.
-type Address struct {
-	// The ID representing the allocation of the address for use with EC2-VPC.
-	AllocationId *string `locationName:"allocationId" type:"string"`
-
-	// The ID representing the association of the address with an instance in a
-	// VPC.
-	AssociationId *string `locationName:"associationId" type:"string"`
-
-	// Indicates whether this Elastic IP address is for use with instances in EC2-Classic
-	// (standard) or instances in a VPC (vpc).
-	Domain *string `locationName:"domain" type:"string" enum:"DomainType"`
-
-	// The ID of the instance that the address is associated with (if any).
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The ID of the AWS account that owns the network interface.
-	NetworkInterfaceOwnerId *string `locationName:"networkInterfaceOwnerId" type:"string"`
-
-	// The private IP address associated with the Elastic IP address.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	metadataAddress `json:"-" xml:"-"`
-}
-
-type metadataAddress struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Address) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Address) GoString() string {
-	return s.String()
-}
-
-type AllocateAddressInput struct {
-	// Set to vpc to allocate the address for use with instances in a VPC.
-	//
-	// Default: The address is for use with instances in EC2-Classic.
-	Domain *string `type:"string" enum:"DomainType"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataAllocateAddressInput `json:"-" xml:"-"`
-}
-
-type metadataAllocateAddressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AllocateAddressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AllocateAddressInput) GoString() string {
-	return s.String()
-}
-
-type AllocateAddressOutput struct {
-	// [EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic
-	// IP address for use with instances in a VPC.
-	AllocationId *string `locationName:"allocationId" type:"string"`
-
-	// Indicates whether this Elastic IP address is for use with instances in EC2-Classic
-	// (standard) or instances in a VPC (vpc).
-	Domain *string `locationName:"domain" type:"string" enum:"DomainType"`
-
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	metadataAllocateAddressOutput `json:"-" xml:"-"`
-}
-
-type metadataAllocateAddressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AllocateAddressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AllocateAddressOutput) GoString() string {
-	return s.String()
-}
-
-type AssignPrivateIpAddressesInput struct {
-	// Indicates whether to allow an IP address that is already assigned to another
-	// network interface or instance to be reassigned to the specified network interface.
-	AllowReassignment *bool `locationName:"allowReassignment" type:"boolean"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	// One or more IP addresses to be assigned as a secondary private IP address
-	// to the network interface. You can't specify this parameter when also specifying
-	// a number of secondary IP addresses.
-	//
-	// If you don't specify an IP address, Amazon EC2 automatically selects an
-	// IP address within the subnet range.
-	PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list"`
-
-	// The number of secondary IP addresses to assign to the network interface.
-	// You can't specify this parameter when also specifying private IP addresses.
-	SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"`
-
-	metadataAssignPrivateIpAddressesInput `json:"-" xml:"-"`
-}
-
-type metadataAssignPrivateIpAddressesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssignPrivateIpAddressesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssignPrivateIpAddressesInput) GoString() string {
-	return s.String()
-}
-
-type AssignPrivateIpAddressesOutput struct {
-	metadataAssignPrivateIpAddressesOutput `json:"-" xml:"-"`
-}
-
-type metadataAssignPrivateIpAddressesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssignPrivateIpAddressesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssignPrivateIpAddressesOutput) GoString() string {
-	return s.String()
-}
-
-type AssociateAddressInput struct {
-	// [EC2-VPC] The allocation ID. This is required for EC2-VPC.
-	AllocationId *string `type:"string"`
-
-	// [EC2-VPC] Allows an Elastic IP address that is already associated with an
-	// instance or network interface to be re-associated with the specified instance
-	// or network interface. Otherwise, the operation fails.
-	//
-	// Default: false
-	AllowReassociation *bool `locationName:"allowReassociation" type:"boolean"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you
-	// can specify either the instance ID or the network interface ID, but not both.
-	// The operation fails if you specify an instance ID unless exactly one network
-	// interface is attached.
-	InstanceId *string `type:"string"`
-
-	// [EC2-VPC] The ID of the network interface. If the instance has more than
-	// one network interface, you must specify a network interface ID.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// [EC2-VPC] The primary or secondary private IP address to associate with the
-	// Elastic IP address. If no private IP address is specified, the Elastic IP
-	// address is associated with the primary private IP address.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The Elastic IP address. This is required for EC2-Classic.
-	PublicIp *string `type:"string"`
-
-	metadataAssociateAddressInput `json:"-" xml:"-"`
-}
-
-type metadataAssociateAddressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateAddressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateAddressInput) GoString() string {
-	return s.String()
-}
-
-type AssociateAddressOutput struct {
-	// [EC2-VPC] The ID that represents the association of the Elastic IP address
-	// with an instance.
-	AssociationId *string `locationName:"associationId" type:"string"`
-
-	metadataAssociateAddressOutput `json:"-" xml:"-"`
-}
-
-type metadataAssociateAddressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateAddressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateAddressOutput) GoString() string {
-	return s.String()
-}
-
-type AssociateDhcpOptionsInput struct {
-	// The ID of the DHCP options set, or default to associate no DHCP options with
-	// the VPC.
-	DhcpOptionsId *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	metadataAssociateDhcpOptionsInput `json:"-" xml:"-"`
-}
-
-type metadataAssociateDhcpOptionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateDhcpOptionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateDhcpOptionsInput) GoString() string {
-	return s.String()
-}
-
-type AssociateDhcpOptionsOutput struct {
-	metadataAssociateDhcpOptionsOutput `json:"-" xml:"-"`
-}
-
-type metadataAssociateDhcpOptionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateDhcpOptionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateDhcpOptionsOutput) GoString() string {
-	return s.String()
-}
-
-type AssociateRouteTableInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string" required:"true"`
-
-	metadataAssociateRouteTableInput `json:"-" xml:"-"`
-}
-
-type metadataAssociateRouteTableInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateRouteTableInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateRouteTableInput) GoString() string {
-	return s.String()
-}
-
-type AssociateRouteTableOutput struct {
-	// The route table association ID (needed to disassociate the route table).
-	AssociationId *string `locationName:"associationId" type:"string"`
-
-	metadataAssociateRouteTableOutput `json:"-" xml:"-"`
-}
-
-type metadataAssociateRouteTableOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AssociateRouteTableOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AssociateRouteTableOutput) GoString() string {
-	return s.String()
-}
-
-type AttachClassicLinkVpcInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of one or more of the VPC's security groups. You cannot specify security
-	// groups from a different VPC.
-	Groups []*string `locationName:"SecurityGroupId" locationNameList:"groupId" type:"list" required:"true"`
-
-	// The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// The ID of a ClassicLink-enabled VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataAttachClassicLinkVpcInput `json:"-" xml:"-"`
-}
-
-type metadataAttachClassicLinkVpcInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachClassicLinkVpcInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachClassicLinkVpcInput) GoString() string {
-	return s.String()
-}
-
-type AttachClassicLinkVpcOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataAttachClassicLinkVpcOutput `json:"-" xml:"-"`
-}
-
-type metadataAttachClassicLinkVpcOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachClassicLinkVpcOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachClassicLinkVpcOutput) GoString() string {
-	return s.String()
-}
-
-type AttachInternetGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the Internet gateway.
-	InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataAttachInternetGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataAttachInternetGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachInternetGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachInternetGatewayInput) GoString() string {
-	return s.String()
-}
-
-type AttachInternetGatewayOutput struct {
-	metadataAttachInternetGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataAttachInternetGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachInternetGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachInternetGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type AttachNetworkInterfaceInput struct {
-	// The index of the device for the network interface attachment.
-	DeviceIndex *int64 `locationName:"deviceIndex" type:"integer" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	metadataAttachNetworkInterfaceInput `json:"-" xml:"-"`
-}
-
-type metadataAttachNetworkInterfaceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachNetworkInterfaceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachNetworkInterfaceInput) GoString() string {
-	return s.String()
-}
-
-type AttachNetworkInterfaceOutput struct {
-	// The ID of the network interface attachment.
-	AttachmentId *string `locationName:"attachmentId" type:"string"`
-
-	metadataAttachNetworkInterfaceOutput `json:"-" xml:"-"`
-}
-
-type metadataAttachNetworkInterfaceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachNetworkInterfaceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachNetworkInterfaceOutput) GoString() string {
-	return s.String()
-}
-
-type AttachVolumeInput struct {
-	// The device name to expose to the instance (for example, /dev/sdh or xvdh).
-	Device *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `type:"string" required:"true"`
-
-	// The ID of the EBS volume. The volume and instance must be within the same
-	// Availability Zone.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataAttachVolumeInput `json:"-" xml:"-"`
-}
-
-type metadataAttachVolumeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachVolumeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachVolumeInput) GoString() string {
-	return s.String()
-}
-
-type AttachVpnGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	// The ID of the virtual private gateway.
-	VpnGatewayId *string `type:"string" required:"true"`
-
-	metadataAttachVpnGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataAttachVpnGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachVpnGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachVpnGatewayInput) GoString() string {
-	return s.String()
-}
-
-type AttachVpnGatewayOutput struct {
-	// Information about the attachment.
-	VpcAttachment *VpcAttachment `locationName:"attachment" type:"structure"`
-
-	metadataAttachVpnGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataAttachVpnGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttachVpnGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttachVpnGatewayOutput) GoString() string {
-	return s.String()
-}
-
-// The value to use when a resource attribute accepts a Boolean value.
-type AttributeBooleanValue struct {
-	// Valid values are true or false.
-	Value *bool `locationName:"value" type:"boolean"`
-
-	metadataAttributeBooleanValue `json:"-" xml:"-"`
-}
-
-type metadataAttributeBooleanValue struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttributeBooleanValue) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttributeBooleanValue) GoString() string {
-	return s.String()
-}
-
-// The value to use for a resource attribute.
-type AttributeValue struct {
-	// Valid values are case-sensitive and vary by action.
-	Value *string `locationName:"value" type:"string"`
-
-	metadataAttributeValue `json:"-" xml:"-"`
-}
-
-type metadataAttributeValue struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AttributeValue) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AttributeValue) GoString() string {
-	return s.String()
-}
-
-type AuthorizeSecurityGroupEgressInput struct {
-	// The CIDR IP address range. You can't specify this parameter when specifying
-	// a source security group.
-	CidrIp *string `locationName:"cidrIp" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The start of port range for the TCP and UDP protocols, or an ICMP type number.
-	// For the ICMP type number, use -1 to specify all ICMP types.
-	FromPort *int64 `locationName:"fromPort" type:"integer"`
-
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string" required:"true"`
-
-	// A set of IP permissions. You can't specify a destination security group and
-	// a CIDR IP address range.
-	IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"`
-
-	// The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).
-	// Use -1 to specify all.
-	IpProtocol *string `locationName:"ipProtocol" type:"string"`
-
-	// The name of a destination security group. To authorize outbound access to
-	// a destination security group, we recommend that you use a set of IP permissions
-	// instead.
-	SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"`
-
-	// The AWS account number for a destination security group. To authorize outbound
-	// access to a destination security group, we recommend that you use a set of
-	// IP permissions instead.
-	SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"`
-
-	// The end of port range for the TCP and UDP protocols, or an ICMP code number.
-	// For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.
-	ToPort *int64 `locationName:"toPort" type:"integer"`
-
-	metadataAuthorizeSecurityGroupEgressInput `json:"-" xml:"-"`
-}
-
-type metadataAuthorizeSecurityGroupEgressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AuthorizeSecurityGroupEgressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AuthorizeSecurityGroupEgressInput) GoString() string {
-	return s.String()
-}
-
-type AuthorizeSecurityGroupEgressOutput struct {
-	metadataAuthorizeSecurityGroupEgressOutput `json:"-" xml:"-"`
-}
-
-type metadataAuthorizeSecurityGroupEgressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AuthorizeSecurityGroupEgressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AuthorizeSecurityGroupEgressOutput) GoString() string {
-	return s.String()
-}
-
-type AuthorizeSecurityGroupIngressInput struct {
-	// The CIDR IP address range. You can't specify this parameter when specifying
-	// a source security group.
-	CidrIp *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The start of port range for the TCP and UDP protocols, or an ICMP type number.
-	// For the ICMP type number, use -1 to specify all ICMP types.
-	FromPort *int64 `type:"integer"`
-
-	// The ID of the security group. Required for a nondefault VPC.
-	GroupId *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The name of the security group.
-	GroupName *string `type:"string"`
-
-	// A set of IP permissions. Can be used to specify multiple rules in a single
-	// command.
-	IpPermissions []*IpPermission `locationNameList:"item" type:"list"`
-
-	// The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).
-	// (VPC only) Use -1 to specify all.
-	IpProtocol *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The name of the source security group. You can't
-	// specify this parameter in combination with the following parameters: the
-	// CIDR IP address range, the start of the port range, the IP protocol, and
-	// the end of the port range. For EC2-VPC, the source security group must be
-	// in the same VPC.
-	SourceSecurityGroupName *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The AWS account number for the source security
-	// group. For EC2-VPC, the source security group must be in the same VPC. You
-	// can't specify this parameter in combination with the following parameters:
-	// the CIDR IP address range, the IP protocol, the start of the port range,
-	// and the end of the port range. Creates rules that grant full ICMP, UDP, and
-	// TCP access. To create a rule with a specific IP protocol and port range,
-	// use a set of IP permissions instead.
-	SourceSecurityGroupOwnerId *string `type:"string"`
-
-	// The end of port range for the TCP and UDP protocols, or an ICMP code number.
-	// For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.
-	ToPort *int64 `type:"integer"`
-
-	metadataAuthorizeSecurityGroupIngressInput `json:"-" xml:"-"`
-}
-
-type metadataAuthorizeSecurityGroupIngressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AuthorizeSecurityGroupIngressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AuthorizeSecurityGroupIngressInput) GoString() string {
-	return s.String()
-}
-
-type AuthorizeSecurityGroupIngressOutput struct {
-	metadataAuthorizeSecurityGroupIngressOutput `json:"-" xml:"-"`
-}
-
-type metadataAuthorizeSecurityGroupIngressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AuthorizeSecurityGroupIngressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AuthorizeSecurityGroupIngressOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an Availability Zone.
-type AvailabilityZone struct {
-	// Any messages about the Availability Zone.
-	Messages []*AvailabilityZoneMessage `locationName:"messageSet" locationNameList:"item" type:"list"`
-
-	// The name of the region.
-	RegionName *string `locationName:"regionName" type:"string"`
-
-	// The state of the Availability Zone.
-	State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"`
-
-	// The name of the Availability Zone.
-	ZoneName *string `locationName:"zoneName" type:"string"`
-
-	metadataAvailabilityZone `json:"-" xml:"-"`
-}
-
-type metadataAvailabilityZone struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AvailabilityZone) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AvailabilityZone) GoString() string {
-	return s.String()
-}
-
-// Describes a message about an Availability Zone.
-type AvailabilityZoneMessage struct {
-	// The message about the Availability Zone.
-	Message *string `locationName:"message" type:"string"`
-
-	metadataAvailabilityZoneMessage `json:"-" xml:"-"`
-}
-
-type metadataAvailabilityZoneMessage struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s AvailabilityZoneMessage) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s AvailabilityZoneMessage) GoString() string {
-	return s.String()
-}
-
-type BlobAttributeValue struct {
-	Value []byte `locationName:"value" type:"blob"`
-
-	metadataBlobAttributeValue `json:"-" xml:"-"`
-}
-
-type metadataBlobAttributeValue struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BlobAttributeValue) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BlobAttributeValue) GoString() string {
-	return s.String()
-}
-
-// Describes a block device mapping.
-type BlockDeviceMapping struct {
-	// The device name exposed to the instance (for example, /dev/sdh or xvdh).
-	DeviceName *string `locationName:"deviceName" type:"string"`
-
-	// Parameters used to automatically set up EBS volumes when the instance is
-	// launched.
-	Ebs *EbsBlockDevice `locationName:"ebs" type:"structure"`
-
-	// Suppresses the specified device included in the block device mapping of the
-	// AMI.
-	NoDevice *string `locationName:"noDevice" type:"string"`
-
-	// The virtual device name (ephemeralN). Instance store volumes are numbered
-	// starting from 0. An instance type with 2 available instance store volumes
-	// can specify mappings for ephemeral0 and ephemeral1.The number of available
-	// instance store volumes depends on the instance type. After you connect to
-	// the instance, you must mount the volume.
-	//
-	// Constraints: For M3 instances, you must specify instance store volumes in
-	// the block device mapping for the instance. When you launch an M3 instance,
-	// we ignore any instance store volumes specified in the block device mapping
-	// for the AMI.
-	VirtualName *string `locationName:"virtualName" type:"string"`
-
-	metadataBlockDeviceMapping `json:"-" xml:"-"`
-}
-
-type metadataBlockDeviceMapping struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BlockDeviceMapping) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BlockDeviceMapping) GoString() string {
-	return s.String()
-}
-
-type BundleInstanceInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance to bundle.
-	//
-	// Type: String
-	//
-	// Default: None
-	//
-	// Required: Yes
-	InstanceId *string `type:"string" required:"true"`
-
-	// The bucket in which to store the AMI. You can specify a bucket that you already
-	// own or a new bucket that Amazon EC2 creates on your behalf. If you specify
-	// a bucket that belongs to someone else, Amazon EC2 returns an error.
-	Storage *Storage `type:"structure" required:"true"`
-
-	metadataBundleInstanceInput `json:"-" xml:"-"`
-}
-
-type metadataBundleInstanceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BundleInstanceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BundleInstanceInput) GoString() string {
-	return s.String()
-}
-
-type BundleInstanceOutput struct {
-	// Information about the bundle task.
-	BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"`
-
-	metadataBundleInstanceOutput `json:"-" xml:"-"`
-}
-
-type metadataBundleInstanceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BundleInstanceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BundleInstanceOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a bundle task.
-type BundleTask struct {
-	// The ID of the bundle task.
-	BundleId *string `locationName:"bundleId" type:"string"`
-
-	// If the task fails, a description of the error.
-	BundleTaskError *BundleTaskError `locationName:"error" type:"structure"`
-
-	// The ID of the instance associated with this bundle task.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The level of task completion, as a percent (for example, 20%).
-	Progress *string `locationName:"progress" type:"string"`
-
-	// The time this task started.
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The state of the task.
-	State *string `locationName:"state" type:"string" enum:"BundleTaskState"`
-
-	// The Amazon S3 storage locations.
-	Storage *Storage `locationName:"storage" type:"structure"`
-
-	// The time of the most recent update for the task.
-	UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataBundleTask `json:"-" xml:"-"`
-}
-
-type metadataBundleTask struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BundleTask) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BundleTask) GoString() string {
-	return s.String()
-}
-
-// Describes an error for BundleInstance.
-type BundleTaskError struct {
-	// The error code.
-	Code *string `locationName:"code" type:"string"`
-
-	// The error message.
-	Message *string `locationName:"message" type:"string"`
-
-	metadataBundleTaskError `json:"-" xml:"-"`
-}
-
-type metadataBundleTaskError struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s BundleTaskError) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s BundleTaskError) GoString() string {
-	return s.String()
-}
-
-type CancelBundleTaskInput struct {
-	// The ID of the bundle task.
-	BundleId *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataCancelBundleTaskInput `json:"-" xml:"-"`
-}
-
-type metadataCancelBundleTaskInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelBundleTaskInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelBundleTaskInput) GoString() string {
-	return s.String()
-}
-
-type CancelBundleTaskOutput struct {
-	// Information about the bundle task.
-	BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"`
-
-	metadataCancelBundleTaskOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelBundleTaskOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelBundleTaskOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelBundleTaskOutput) GoString() string {
-	return s.String()
-}
-
-type CancelConversionTaskInput struct {
-	// The ID of the conversion task.
-	ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The reason for canceling the conversion task.
-	ReasonMessage *string `locationName:"reasonMessage" type:"string"`
-
-	metadataCancelConversionTaskInput `json:"-" xml:"-"`
-}
-
-type metadataCancelConversionTaskInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelConversionTaskInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelConversionTaskInput) GoString() string {
-	return s.String()
-}
-
-type CancelConversionTaskOutput struct {
-	metadataCancelConversionTaskOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelConversionTaskOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelConversionTaskOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelConversionTaskOutput) GoString() string {
-	return s.String()
-}
-
-type CancelExportTaskInput struct {
-	// The ID of the export task. This is the ID returned by CreateInstanceExportTask.
-	ExportTaskId *string `locationName:"exportTaskId" type:"string" required:"true"`
-
-	metadataCancelExportTaskInput `json:"-" xml:"-"`
-}
-
-type metadataCancelExportTaskInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelExportTaskInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelExportTaskInput) GoString() string {
-	return s.String()
-}
-
-type CancelExportTaskOutput struct {
-	metadataCancelExportTaskOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelExportTaskOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelExportTaskOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelExportTaskOutput) GoString() string {
-	return s.String()
-}
-
-type CancelImportTaskInput struct {
-	// The reason for canceling the task.
-	CancelReason *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// The ID of the import image or import snapshot task to be canceled.
-	ImportTaskId *string `type:"string"`
-
-	metadataCancelImportTaskInput `json:"-" xml:"-"`
-}
-
-type metadataCancelImportTaskInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelImportTaskInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelImportTaskInput) GoString() string {
-	return s.String()
-}
-
-type CancelImportTaskOutput struct {
-	// The ID of the task being canceled.
-	ImportTaskId *string `locationName:"importTaskId" type:"string"`
-
-	// The current state of the task being canceled.
-	PreviousState *string `locationName:"previousState" type:"string"`
-
-	// The current state of the task being canceled.
-	State *string `locationName:"state" type:"string"`
-
-	metadataCancelImportTaskOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelImportTaskOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelImportTaskOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelImportTaskOutput) GoString() string {
-	return s.String()
-}
-
-type CancelReservedInstancesListingInput struct {
-	// The ID of the Reserved Instance listing.
-	ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string" required:"true"`
-
-	metadataCancelReservedInstancesListingInput `json:"-" xml:"-"`
-}
-
-type metadataCancelReservedInstancesListingInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelReservedInstancesListingInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelReservedInstancesListingInput) GoString() string {
-	return s.String()
-}
-
-type CancelReservedInstancesListingOutput struct {
-	// The Reserved Instance listing.
-	ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"`
-
-	metadataCancelReservedInstancesListingOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelReservedInstancesListingOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelReservedInstancesListingOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelReservedInstancesListingOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot fleet error.
-type CancelSpotFleetRequestsError struct {
-	// The error code.
-	Code *string `locationName:"code" type:"string" required:"true" enum:"CancelBatchErrorCode"`
-
-	// The description for the error code.
-	Message *string `locationName:"message" type:"string" required:"true"`
-
-	metadataCancelSpotFleetRequestsError `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotFleetRequestsError struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotFleetRequestsError) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotFleetRequestsError) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot fleet request that was not successfully canceled.
-type CancelSpotFleetRequestsErrorItem struct {
-	// The error.
-	Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure" required:"true"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	metadataCancelSpotFleetRequestsErrorItem `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotFleetRequestsErrorItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotFleetRequestsErrorItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotFleetRequestsErrorItem) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for CancelSpotFleetRequests.
-type CancelSpotFleetRequestsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The IDs of the Spot fleet requests.
-	SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list" required:"true"`
-
-	// Indicates whether to terminate instances for a Spot fleet request if it is
-	// canceled successfully.
-	TerminateInstances *bool `locationName:"terminateInstances" type:"boolean" required:"true"`
-
-	metadataCancelSpotFleetRequestsInput `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotFleetRequestsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotFleetRequestsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotFleetRequestsInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of CancelSpotFleetRequests.
-type CancelSpotFleetRequestsOutput struct {
-	// Information about the Spot fleet requests that are successfully canceled.
-	SuccessfulFleetRequests []*CancelSpotFleetRequestsSuccessItem `locationName:"successfulFleetRequestSet" locationNameList:"item" type:"list"`
-
-	// Information about the Spot fleet requests that are not successfully canceled.
-	UnsuccessfulFleetRequests []*CancelSpotFleetRequestsErrorItem `locationName:"unsuccessfulFleetRequestSet" locationNameList:"item" type:"list"`
-
-	metadataCancelSpotFleetRequestsOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotFleetRequestsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotFleetRequestsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotFleetRequestsOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot fleet request that was successfully canceled.
-type CancelSpotFleetRequestsSuccessItem struct {
-	// The current state of the Spot fleet request.
-	CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
-
-	// The previous state of the Spot fleet request.
-	PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	metadataCancelSpotFleetRequestsSuccessItem `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotFleetRequestsSuccessItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotFleetRequestsSuccessItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotFleetRequestsSuccessItem) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for CancelSpotInstanceRequests.
-type CancelSpotInstanceRequestsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more Spot instance request IDs.
-	SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list" required:"true"`
-
-	metadataCancelSpotInstanceRequestsInput `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotInstanceRequestsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotInstanceRequestsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotInstanceRequestsInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of CancelSpotInstanceRequests.
-type CancelSpotInstanceRequestsOutput struct {
-	// One or more Spot instance requests.
-	CancelledSpotInstanceRequests []*CancelledSpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"`
-
-	metadataCancelSpotInstanceRequestsOutput `json:"-" xml:"-"`
-}
-
-type metadataCancelSpotInstanceRequestsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelSpotInstanceRequestsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelSpotInstanceRequestsOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a request to cancel a Spot instance.
-type CancelledSpotInstanceRequest struct {
-	// The ID of the Spot instance request.
-	SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"`
-
-	// The state of the Spot instance request.
-	State *string `locationName:"state" type:"string" enum:"CancelSpotInstanceRequestState"`
-
-	metadataCancelledSpotInstanceRequest `json:"-" xml:"-"`
-}
-
-type metadataCancelledSpotInstanceRequest struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CancelledSpotInstanceRequest) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CancelledSpotInstanceRequest) GoString() string {
-	return s.String()
-}
-
-// Describes a linked EC2-Classic instance.
-type ClassicLinkInstance struct {
-	// A list of security groups.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// Any tags assigned to the instance.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataClassicLinkInstance `json:"-" xml:"-"`
-}
-
-type metadataClassicLinkInstance struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ClassicLinkInstance) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ClassicLinkInstance) GoString() string {
-	return s.String()
-}
-
-// Describes the client-specific data.
-type ClientData struct {
-	// A user-defined comment about the disk upload.
-	Comment *string `type:"string"`
-
-	// The time that the disk upload ends.
-	UploadEnd *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	// The size of the uploaded disk image, in GiB.
-	UploadSize *float64 `type:"double"`
-
-	// The time that the disk upload starts.
-	UploadStart *time.Time `type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataClientData `json:"-" xml:"-"`
-}
-
-type metadataClientData struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ClientData) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ClientData) GoString() string {
-	return s.String()
-}
-
-type ConfirmProductInstanceInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `type:"string" required:"true"`
-
-	// The product code. This must be a product code that you own.
-	ProductCode *string `type:"string" required:"true"`
-
-	metadataConfirmProductInstanceInput `json:"-" xml:"-"`
-}
-
-type metadataConfirmProductInstanceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ConfirmProductInstanceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ConfirmProductInstanceInput) GoString() string {
-	return s.String()
-}
-
-type ConfirmProductInstanceOutput struct {
-	// The AWS account ID of the instance owner. This is only present if the product
-	// code is attached to the instance.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The return value of the request. Returns true if the specified product code
-	// is owned by the requester and associated with the specified instance.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataConfirmProductInstanceOutput `json:"-" xml:"-"`
-}
-
-type metadataConfirmProductInstanceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ConfirmProductInstanceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ConfirmProductInstanceOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a conversion task.
-type ConversionTask struct {
-	// The ID of the conversion task.
-	ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"`
-
-	// The time when the task expires. If the upload isn't complete before the expiration
-	// time, we automatically cancel the task.
-	ExpirationTime *string `locationName:"expirationTime" type:"string"`
-
-	// If the task is for importing an instance, this contains information about
-	// the import instance task.
-	ImportInstance *ImportInstanceTaskDetails `locationName:"importInstance" type:"structure"`
-
-	// If the task is for importing a volume, this contains information about the
-	// import volume task.
-	ImportVolume *ImportVolumeTaskDetails `locationName:"importVolume" type:"structure"`
-
-	// The state of the conversion task.
-	State *string `locationName:"state" type:"string" required:"true" enum:"ConversionTaskState"`
-
-	// The status message related to the conversion task.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// Any tags assigned to the task.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	metadataConversionTask `json:"-" xml:"-"`
-}
-
-type metadataConversionTask struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ConversionTask) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ConversionTask) GoString() string {
-	return s.String()
-}
-
-type CopyImageInput struct {
-	// Unique, case-sensitive identifier you provide to ensure idempotency of the
-	// request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	ClientToken *string `type:"string"`
-
-	// A description for the new AMI in the destination region.
-	Description *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The name of the new AMI in the destination region.
-	Name *string `type:"string" required:"true"`
-
-	// The ID of the AMI to copy.
-	SourceImageId *string `type:"string" required:"true"`
-
-	// The name of the region that contains the AMI to copy.
-	SourceRegion *string `type:"string" required:"true"`
-
-	metadataCopyImageInput `json:"-" xml:"-"`
-}
-
-type metadataCopyImageInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CopyImageInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CopyImageInput) GoString() string {
-	return s.String()
-}
-
-type CopyImageOutput struct {
-	// The ID of the new AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	metadataCopyImageOutput `json:"-" xml:"-"`
-}
-
-type metadataCopyImageOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CopyImageOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CopyImageOutput) GoString() string {
-	return s.String()
-}
-
-type CopySnapshotInput struct {
-	// A description for the EBS snapshot.
-	Description *string `type:"string"`
-
-	// The destination region to use in the PresignedUrl parameter of a snapshot
-	// copy operation. This parameter is only valid for specifying the destination
-	// region in a PresignedUrl parameter, where it is required.
-	//
-	//  CopySnapshot sends the snapshot copy to the regional endpoint that you
-	// send the HTTP request to, such as ec2.us-east-1.amazonaws.com (in the AWS
-	// CLI, this is specified with the --region parameter or the default region
-	// in your AWS configuration file).
-	DestinationRegion *string `locationName:"destinationRegion" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Specifies whether the destination snapshot should be encrypted. There is
-	// no way to create an unencrypted snapshot copy from an encrypted snapshot;
-	// however, you can encrypt a copy of an unencrypted snapshot with this flag.
-	// The default CMK for EBS is used unless a non-default AWS Key Management Service
-	// (AWS KMS) CMK is specified with KmsKeyId. For more information, see Amazon
-	// EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	Encrypted *bool `locationName:"encrypted" type:"boolean"`
-
-	// The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when
-	// creating the snapshot copy. This parameter is only required if you want to
-	// use a non-default CMK; if this parameter is not specified, the default CMK
-	// for EBS is used. The ARN contains the arn:aws:kms namespace, followed by
-	// the region of the CMK, the AWS account ID of the CMK owner, the key namespace,
-	// and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
-	// The specified CMK must exist in the region that the snapshot is being copied
-	// to. If a KmsKeyId is specified, the Encrypted flag must also be set.
-	KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
-
-	// The pre-signed URL that facilitates copying an encrypted snapshot. This parameter
-	// is only required when copying an encrypted snapshot with the Amazon EC2 Query
-	// API; it is available as an optional parameter in all other cases. The PresignedUrl
-	// should use the snapshot source endpoint, the CopySnapshot action, and include
-	// the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The
-	// PresignedUrl must be signed using AWS Signature Version 4. Because EBS snapshots
-	// are stored in Amazon S3, the signing algorithm for this parameter uses the
-	// same logic that is described in Authenticating Requests by Using Query Parameters
-	// (AWS Signature Version 4) (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
-	// in the Amazon Simple Storage Service API Reference. An invalid or improperly
-	// signed PresignedUrl will cause the copy operation to fail asynchronously,
-	// and the snapshot will move to an error state.
-	PresignedUrl *string `locationName:"presignedUrl" type:"string"`
-
-	// The ID of the region that contains the snapshot to be copied.
-	SourceRegion *string `type:"string" required:"true"`
-
-	// The ID of the EBS snapshot to copy.
-	SourceSnapshotId *string `type:"string" required:"true"`
-
-	metadataCopySnapshotInput `json:"-" xml:"-"`
-}
-
-type metadataCopySnapshotInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CopySnapshotInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CopySnapshotInput) GoString() string {
-	return s.String()
-}
-
-type CopySnapshotOutput struct {
-	// The ID of the new snapshot.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	metadataCopySnapshotOutput `json:"-" xml:"-"`
-}
-
-type metadataCopySnapshotOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CopySnapshotOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CopySnapshotOutput) GoString() string {
-	return s.String()
-}
-
-type CreateCustomerGatewayInput struct {
-	// For devices that support BGP, the customer gateway's BGP ASN.
-	//
-	// Default: 65000
-	BgpAsn *int64 `type:"integer" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The Internet-routable IP address for the customer gateway's outside interface.
-	// The address must be static.
-	PublicIp *string `locationName:"IpAddress" type:"string" required:"true"`
-
-	// The type of VPN connection that this customer gateway supports (ipsec.1).
-	Type *string `type:"string" required:"true" enum:"GatewayType"`
-
-	metadataCreateCustomerGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataCreateCustomerGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateCustomerGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateCustomerGatewayInput) GoString() string {
-	return s.String()
-}
-
-type CreateCustomerGatewayOutput struct {
-	// Information about the customer gateway.
-	CustomerGateway *CustomerGateway `locationName:"customerGateway" type:"structure"`
-
-	metadataCreateCustomerGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateCustomerGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateCustomerGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateCustomerGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type CreateDhcpOptionsInput struct {
-	// A DHCP configuration option.
-	DhcpConfigurations []*NewDhcpConfiguration `locationName:"dhcpConfiguration" locationNameList:"item" type:"list" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataCreateDhcpOptionsInput `json:"-" xml:"-"`
-}
-
-type metadataCreateDhcpOptionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateDhcpOptionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateDhcpOptionsInput) GoString() string {
-	return s.String()
-}
-
-type CreateDhcpOptionsOutput struct {
-	// A set of DHCP options.
-	DhcpOptions *DhcpOptions `locationName:"dhcpOptions" type:"structure"`
-
-	metadataCreateDhcpOptionsOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateDhcpOptionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateDhcpOptionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateDhcpOptionsOutput) GoString() string {
-	return s.String()
-}
-
-type CreateFlowLogsInput struct {
-	// Unique, case-sensitive identifier you provide to ensure the idempotency of
-	// the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
-	ClientToken *string `type:"string"`
-
-	// The ARN for the IAM role that's used to post flow logs to a CloudWatch Logs
-	// log group.
-	DeliverLogsPermissionArn *string `type:"string" required:"true"`
-
-	// The name of the CloudWatch log group.
-	LogGroupName *string `type:"string" required:"true"`
-
-	// One or more subnet, network interface, or VPC IDs.
-	ResourceIds []*string `locationName:"ResourceId" locationNameList:"item" type:"list" required:"true"`
-
-	// The type of resource on which to create the flow log.
-	ResourceType *string `type:"string" required:"true" enum:"FlowLogsResourceType"`
-
-	// The type of traffic to log.
-	TrafficType *string `type:"string" required:"true" enum:"TrafficType"`
-
-	metadataCreateFlowLogsInput `json:"-" xml:"-"`
-}
-
-type metadataCreateFlowLogsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateFlowLogsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateFlowLogsInput) GoString() string {
-	return s.String()
-}
-
-type CreateFlowLogsOutput struct {
-	// Unique, case-sensitive identifier you provide to ensure the idempotency of
-	// the request.
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// The IDs of the flow logs.
-	FlowLogIds []*string `locationName:"flowLogIdSet" locationNameList:"item" type:"list"`
-
-	// Information about the flow logs that could not be created successfully.
-	Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"`
-
-	metadataCreateFlowLogsOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateFlowLogsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateFlowLogsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateFlowLogsOutput) GoString() string {
-	return s.String()
-}
-
-type CreateImageInput struct {
-	// Information about one or more block device mappings.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
-
-	// A description for the new image.
-	Description *string `locationName:"description" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// A name for the new image.
-	//
-	// Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets
-	// ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('),
-	// at-signs (@), or underscores(_)
-	Name *string `locationName:"name" type:"string" required:"true"`
-
-	// By default, this parameter is set to false, which means Amazon EC2 attempts
-	// to shut down the instance cleanly before image creation and then reboots
-	// the instance. When the parameter is set to true, Amazon EC2 doesn't shut
-	// down the instance before creating the image. When this option is used, file
-	// system integrity on the created image can't be guaranteed.
-	NoReboot *bool `locationName:"noReboot" type:"boolean"`
-
-	metadataCreateImageInput `json:"-" xml:"-"`
-}
-
-type metadataCreateImageInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateImageInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateImageInput) GoString() string {
-	return s.String()
-}
-
-type CreateImageOutput struct {
-	// The ID of the new AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	metadataCreateImageOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateImageOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateImageOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateImageOutput) GoString() string {
-	return s.String()
-}
-
-type CreateInstanceExportTaskInput struct {
-	// A description for the conversion task or the resource being exported. The
-	// maximum length is 255 bytes.
-	Description *string `locationName:"description" type:"string"`
-
-	// The format and location for an instance export task.
-	ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// The target virtualization environment.
-	TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"`
-
-	metadataCreateInstanceExportTaskInput `json:"-" xml:"-"`
-}
-
-type metadataCreateInstanceExportTaskInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateInstanceExportTaskInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateInstanceExportTaskInput) GoString() string {
-	return s.String()
-}
-
-type CreateInstanceExportTaskOutput struct {
-	// Information about the instance export task.
-	ExportTask *ExportTask `locationName:"exportTask" type:"structure"`
-
-	metadataCreateInstanceExportTaskOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateInstanceExportTaskOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateInstanceExportTaskOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateInstanceExportTaskOutput) GoString() string {
-	return s.String()
-}
-
-type CreateInternetGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataCreateInternetGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataCreateInternetGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateInternetGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateInternetGatewayInput) GoString() string {
-	return s.String()
-}
-
-type CreateInternetGatewayOutput struct {
-	// Information about the Internet gateway.
-	InternetGateway *InternetGateway `locationName:"internetGateway" type:"structure"`
-
-	metadataCreateInternetGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateInternetGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateInternetGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateInternetGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type CreateKeyPairInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// A unique name for the key pair.
-	//
-	// Constraints: Up to 255 ASCII characters
-	KeyName *string `type:"string" required:"true"`
-
-	metadataCreateKeyPairInput `json:"-" xml:"-"`
-}
-
-type metadataCreateKeyPairInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateKeyPairInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateKeyPairInput) GoString() string {
-	return s.String()
-}
-
-// Describes a key pair.
-type CreateKeyPairOutput struct {
-	// The SHA-1 digest of the DER encoded private key.
-	KeyFingerprint *string `locationName:"keyFingerprint" type:"string"`
-
-	// An unencrypted PEM encoded RSA private key.
-	KeyMaterial *string `locationName:"keyMaterial" type:"string"`
-
-	// The name of the key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	metadataCreateKeyPairOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateKeyPairOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateKeyPairOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateKeyPairOutput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkAclEntryInput struct {
-	// The network range to allow or deny, in CIDR notation (for example 172.16.0.0/24).
-	CidrBlock *string `locationName:"cidrBlock" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Indicates whether this is an egress rule (rule is applied to traffic leaving
-	// the subnet).
-	Egress *bool `locationName:"egress" type:"boolean" required:"true"`
-
-	// ICMP protocol: The ICMP type and code. Required if specifying ICMP for the
-	// protocol.
-	IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"`
-
-	// The ID of the network ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
-
-	// TCP or UDP protocols: The range of ports the rule applies to.
-	PortRange *PortRange `locationName:"portRange" type:"structure"`
-
-	// The protocol. A value of -1 means all protocols.
-	Protocol *string `locationName:"protocol" type:"string" required:"true"`
-
-	// Indicates whether to allow or deny the traffic that matches the rule.
-	RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"`
-
-	// The rule number for the entry (for example, 100). ACL entries are processed
-	// in ascending order by rule number.
-	//
-	// Constraints: Positive integer from 1 to 32766
-	RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"`
-
-	metadataCreateNetworkAclEntryInput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkAclEntryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkAclEntryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkAclEntryInput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkAclEntryOutput struct {
-	metadataCreateNetworkAclEntryOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkAclEntryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkAclEntryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkAclEntryOutput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkAclInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataCreateNetworkAclInput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkAclInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkAclInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkAclInput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkAclOutput struct {
-	// Information about the network ACL.
-	NetworkAcl *NetworkAcl `locationName:"networkAcl" type:"structure"`
-
-	metadataCreateNetworkAclOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkAclOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkAclOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkAclOutput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkInterfaceInput struct {
-	// A description for the network interface.
-	Description *string `locationName:"description" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The IDs of one or more security groups.
-	Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"`
-
-	// The primary private IP address of the network interface. If you don't specify
-	// an IP address, Amazon EC2 selects one for you from the subnet range. If you
-	// specify an IP address, you cannot indicate any IP addresses specified in
-	// privateIpAddresses as primary (only one IP address can be designated as primary).
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// One or more private IP addresses.
-	PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddresses" locationNameList:"item" type:"list"`
-
-	// The number of secondary private IP addresses to assign to a network interface.
-	// When you specify a number of secondary IP addresses, Amazon EC2 selects these
-	// IP addresses within the subnet range. You can't specify this option and specify
-	// more than one private IP address using privateIpAddresses.
-	//
-	// The number of IP addresses you can assign to a network interface varies
-	// by instance type. For more information, see Private IP Addresses Per ENI
-	// Per Instance Type (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"`
-
-	// The ID of the subnet to associate with the network interface.
-	SubnetId *string `locationName:"subnetId" type:"string" required:"true"`
-
-	metadataCreateNetworkInterfaceInput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkInterfaceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkInterfaceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkInterfaceInput) GoString() string {
-	return s.String()
-}
-
-type CreateNetworkInterfaceOutput struct {
-	// Information about the network interface.
-	NetworkInterface *NetworkInterface `locationName:"networkInterface" type:"structure"`
-
-	metadataCreateNetworkInterfaceOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateNetworkInterfaceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateNetworkInterfaceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateNetworkInterfaceOutput) GoString() string {
-	return s.String()
-}
-
-type CreatePlacementGroupInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// A name for the placement group.
-	//
-	// Constraints: Up to 255 ASCII characters
-	GroupName *string `locationName:"groupName" type:"string" required:"true"`
-
-	// The placement strategy.
-	Strategy *string `locationName:"strategy" type:"string" required:"true" enum:"PlacementStrategy"`
-
-	metadataCreatePlacementGroupInput `json:"-" xml:"-"`
-}
-
-type metadataCreatePlacementGroupInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreatePlacementGroupInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreatePlacementGroupInput) GoString() string {
-	return s.String()
-}
-
-type CreatePlacementGroupOutput struct {
-	metadataCreatePlacementGroupOutput `json:"-" xml:"-"`
-}
-
-type metadataCreatePlacementGroupOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreatePlacementGroupOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreatePlacementGroupOutput) GoString() string {
-	return s.String()
-}
-
-type CreateReservedInstancesListingInput struct {
-	// Unique, case-sensitive identifier you provide to ensure idempotency of your
-	// listings. This helps avoid duplicate listings. For more information, see
-	// Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `locationName:"clientToken" type:"string" required:"true"`
-
-	// The number of instances that are a part of a Reserved Instance account to
-	// be listed in the Reserved Instance Marketplace. This number should be less
-	// than or equal to the instance count associated with the Reserved Instance
-	// ID specified in this call.
-	InstanceCount *int64 `locationName:"instanceCount" type:"integer" required:"true"`
-
-	// A list specifying the price of the Reserved Instance for each month remaining
-	// in the Reserved Instance term.
-	PriceSchedules []*PriceScheduleSpecification `locationName:"priceSchedules" locationNameList:"item" type:"list" required:"true"`
-
-	// The ID of the active Reserved Instance.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string" required:"true"`
-
-	metadataCreateReservedInstancesListingInput `json:"-" xml:"-"`
-}
-
-type metadataCreateReservedInstancesListingInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateReservedInstancesListingInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateReservedInstancesListingInput) GoString() string {
-	return s.String()
-}
-
-type CreateReservedInstancesListingOutput struct {
-	// Information about the Reserved Instances listing.
-	ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"`
-
-	metadataCreateReservedInstancesListingOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateReservedInstancesListingOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateReservedInstancesListingOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateReservedInstancesListingOutput) GoString() string {
-	return s.String()
-}
-
-type CreateRouteInput struct {
-	// The CIDR address block used for the destination match. Routing decisions
-	// are based on the most specific match.
-	DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of an Internet gateway or virtual private gateway attached to your
-	// VPC.
-	GatewayId *string `locationName:"gatewayId" type:"string"`
-
-	// The ID of a NAT instance in your VPC. The operation fails if you specify
-	// an instance ID unless exactly one network interface is attached.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The ID of a network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The ID of the route table for the route.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	// The ID of a VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
-
-	metadataCreateRouteInput `json:"-" xml:"-"`
-}
-
-type metadataCreateRouteInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateRouteInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateRouteInput) GoString() string {
-	return s.String()
-}
-
-type CreateRouteOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataCreateRouteOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateRouteOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateRouteOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateRouteOutput) GoString() string {
-	return s.String()
-}
-
-type CreateRouteTableInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataCreateRouteTableInput `json:"-" xml:"-"`
-}
-
-type metadataCreateRouteTableInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateRouteTableInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateRouteTableInput) GoString() string {
-	return s.String()
-}
-
-type CreateRouteTableOutput struct {
-	// Information about the route table.
-	RouteTable *RouteTable `locationName:"routeTable" type:"structure"`
-
-	metadataCreateRouteTableOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateRouteTableOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateRouteTableOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateRouteTableOutput) GoString() string {
-	return s.String()
-}
-
-type CreateSecurityGroupInput struct {
-	// A description for the security group. This is informational only.
-	//
-	// Constraints: Up to 255 characters in length
-	//
-	// Constraints for EC2-Classic: ASCII characters
-	//
-	// Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*
-	Description *string `locationName:"GroupDescription" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The name of the security group.
-	//
-	// Constraints: Up to 255 characters in length
-	//
-	// Constraints for EC2-Classic: ASCII characters
-	//
-	// Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*
-	GroupName *string `type:"string" required:"true"`
-
-	// [EC2-VPC] The ID of the VPC. Required for EC2-VPC.
-	VpcId *string `type:"string"`
-
-	metadataCreateSecurityGroupInput `json:"-" xml:"-"`
-}
-
-type metadataCreateSecurityGroupInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSecurityGroupInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSecurityGroupInput) GoString() string {
-	return s.String()
-}
-
-type CreateSecurityGroupOutput struct {
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string"`
-
-	metadataCreateSecurityGroupOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateSecurityGroupOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSecurityGroupOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSecurityGroupOutput) GoString() string {
-	return s.String()
-}
-
-type CreateSnapshotInput struct {
-	// A description for the snapshot.
-	Description *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the EBS volume.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataCreateSnapshotInput `json:"-" xml:"-"`
-}
-
-type metadataCreateSnapshotInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSnapshotInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSnapshotInput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for CreateSpotDatafeedSubscription.
-type CreateSpotDatafeedSubscriptionInput struct {
-	// The Amazon S3 bucket in which to store the Spot instance data feed.
-	Bucket *string `locationName:"bucket" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// A prefix for the data feed file names.
-	Prefix *string `locationName:"prefix" type:"string"`
-
-	metadataCreateSpotDatafeedSubscriptionInput `json:"-" xml:"-"`
-}
-
-type metadataCreateSpotDatafeedSubscriptionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSpotDatafeedSubscriptionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSpotDatafeedSubscriptionInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of CreateSpotDatafeedSubscription.
-type CreateSpotDatafeedSubscriptionOutput struct {
-	// The Spot instance data feed subscription.
-	SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"`
-
-	metadataCreateSpotDatafeedSubscriptionOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateSpotDatafeedSubscriptionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSpotDatafeedSubscriptionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSpotDatafeedSubscriptionOutput) GoString() string {
-	return s.String()
-}
-
-type CreateSubnetInput struct {
-	// The Availability Zone for the subnet.
-	//
-	// Default: AWS selects one for you. If you create more than one subnet in
-	// your VPC, we may not necessarily select a different zone for each subnet.
-	AvailabilityZone *string `type:"string"`
-
-	// The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.
-	CidrBlock *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	metadataCreateSubnetInput `json:"-" xml:"-"`
-}
-
-type metadataCreateSubnetInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSubnetInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSubnetInput) GoString() string {
-	return s.String()
-}
-
-type CreateSubnetOutput struct {
-	// Information about the subnet.
-	Subnet *Subnet `locationName:"subnet" type:"structure"`
-
-	metadataCreateSubnetOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateSubnetOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateSubnetOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateSubnetOutput) GoString() string {
-	return s.String()
-}
-
-type CreateTagsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The IDs of one or more resources to tag. For example, ami-1a2b3c4d.
-	Resources []*string `locationName:"ResourceId" type:"list" required:"true"`
-
-	// One or more tags. The value parameter is required, but if you don't want
-	// the tag to have a value, specify the parameter with no value, and we set
-	// the value to an empty string.
-	Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list" required:"true"`
-
-	metadataCreateTagsInput `json:"-" xml:"-"`
-}
-
-type metadataCreateTagsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateTagsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateTagsInput) GoString() string {
-	return s.String()
-}
-
-type CreateTagsOutput struct {
-	metadataCreateTagsOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateTagsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateTagsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateTagsOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVolumeInput struct {
-	// The Availability Zone in which to create the volume. Use DescribeAvailabilityZones
-	// to list the Availability Zones that are currently available to you.
-	AvailabilityZone *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Specifies whether the volume should be encrypted. Encrypted Amazon EBS volumes
-	// may only be attached to instances that support Amazon EBS encryption. Volumes
-	// that are created from encrypted snapshots are automatically encrypted. There
-	// is no way to create an encrypted volume from an unencrypted snapshot or vice
-	// versa. If your AMI uses encrypted volumes, you can only launch it on supported
-	// instance types. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	Encrypted *bool `locationName:"encrypted" type:"boolean"`
-
-	// Only valid for Provisioned IOPS (SSD) volumes. The number of I/O operations
-	// per second (IOPS) to provision for the volume, with a maximum ratio of 30
-	// IOPS/GiB.
-	//
-	// Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes
-	Iops *int64 `type:"integer"`
-
-	// The full ARN of the AWS Key Management Service (AWS KMS) customer master
-	// key (CMK) to use when creating the encrypted volume. This parameter is only
-	// required if you want to use a non-default CMK; if this parameter is not specified,
-	// the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace,
-	// followed by the region of the CMK, the AWS account ID of the CMK owner, the
-	// key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
-	// If a KmsKeyId is specified, the Encrypted flag must also be set.
-	KmsKeyId *string `type:"string"`
-
-	// The size of the volume, in GiBs.
-	//
-	// Constraints: 1-1024 for standard volumes, 1-16384 for gp2 volumes, and 4-16384
-	// for io1 volumes. If you specify a snapshot, the volume size must be equal
-	// to or larger than the snapshot size.
-	//
-	// Default: If you're creating the volume from a snapshot and don't specify
-	// a volume size, the default is the snapshot size.
-	Size *int64 `type:"integer"`
-
-	// The snapshot from which to create the volume.
-	SnapshotId *string `type:"string"`
-
-	// The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for
-	// Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.
-	//
-	// Default: standard
-	VolumeType *string `type:"string" enum:"VolumeType"`
-
-	metadataCreateVolumeInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVolumeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVolumeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVolumeInput) GoString() string {
-	return s.String()
-}
-
-// Describes the user or group to be added or removed from the permissions for
-// a volume.
-type CreateVolumePermission struct {
-	// The specific group that is to be added or removed from a volume's list of
-	// create volume permissions.
-	Group *string `locationName:"group" type:"string" enum:"PermissionGroup"`
-
-	// The specific AWS account ID that is to be added or removed from a volume's
-	// list of create volume permissions.
-	UserId *string `locationName:"userId" type:"string"`
-
-	metadataCreateVolumePermission `json:"-" xml:"-"`
-}
-
-type metadataCreateVolumePermission struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVolumePermission) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVolumePermission) GoString() string {
-	return s.String()
-}
-
-// Describes modifications to the permissions for a volume.
-type CreateVolumePermissionModifications struct {
-	// Adds a specific AWS account ID or group to a volume's list of create volume
-	// permissions.
-	Add []*CreateVolumePermission `locationNameList:"item" type:"list"`
-
-	// Removes a specific AWS account ID or group from a volume's list of create
-	// volume permissions.
-	Remove []*CreateVolumePermission `locationNameList:"item" type:"list"`
-
-	metadataCreateVolumePermissionModifications `json:"-" xml:"-"`
-}
-
-type metadataCreateVolumePermissionModifications struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVolumePermissionModifications) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVolumePermissionModifications) GoString() string {
-	return s.String()
-}
-
-type CreateVpcEndpointInput struct {
-	// Unique, case-sensitive identifier you provide to ensure the idempotency of
-	// the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// A policy to attach to the endpoint that controls access to the service. The
-	// policy must be in valid JSON format. If this parameter is not specified,
-	// we attach a default policy that allows full access to the service.
-	PolicyDocument *string `type:"string"`
-
-	// One or more route table IDs.
-	RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"`
-
-	// The AWS service name, in the form com.amazonaws.region.service. To get a
-	// list of available services, use the DescribeVpcEndpointServices request.
-	ServiceName *string `type:"string" required:"true"`
-
-	// The ID of the VPC in which the endpoint will be used.
-	VpcId *string `type:"string" required:"true"`
-
-	metadataCreateVpcEndpointInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcEndpointInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcEndpointInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcEndpointInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpcEndpointOutput struct {
-	// Unique, case-sensitive identifier you provide to ensure the idempotency of
-	// the request.
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// Information about the endpoint.
-	VpcEndpoint *VpcEndpoint `locationName:"vpcEndpoint" type:"structure"`
-
-	metadataCreateVpcEndpointOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcEndpointOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcEndpointOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcEndpointOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVpcInput struct {
-	// The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.
-	CidrBlock *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The supported tenancy options for instances launched into the VPC. A value
-	// of default means that instances can be launched with any tenancy; a value
-	// of dedicated means all instances launched into the VPC are launched as dedicated
-	// tenancy instances regardless of the tenancy assigned to the instance at launch.
-	// Dedicated tenancy instances run on single-tenant hardware.
-	//
-	// Default: default
-	InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
-
-	metadataCreateVpcInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpcOutput struct {
-	// Information about the VPC.
-	Vpc *Vpc `locationName:"vpc" type:"structure"`
-
-	metadataCreateVpcOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVpcPeeringConnectionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The AWS account ID of the owner of the peer VPC.
-	//
-	// Default: Your AWS account ID
-	PeerOwnerId *string `locationName:"peerOwnerId" type:"string"`
-
-	// The ID of the VPC with which you are creating the VPC peering connection.
-	PeerVpcId *string `locationName:"peerVpcId" type:"string"`
-
-	// The ID of the requester VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataCreateVpcPeeringConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcPeeringConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcPeeringConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcPeeringConnectionInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpcPeeringConnectionOutput struct {
-	// Information about the VPC peering connection.
-	VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"`
-
-	metadataCreateVpcPeeringConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpcPeeringConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpcPeeringConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpcPeeringConnectionOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnConnectionInput struct {
-	// The ID of the customer gateway.
-	CustomerGatewayId *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Indicates whether the VPN connection requires static routes. If you are creating
-	// a VPN connection for a device that does not support BGP, you must specify
-	// true.
-	//
-	// Default: false
-	Options *VpnConnectionOptionsSpecification `locationName:"options" type:"structure"`
-
-	// The type of VPN connection (ipsec.1).
-	Type *string `type:"string" required:"true"`
-
-	// The ID of the virtual private gateway.
-	VpnGatewayId *string `type:"string" required:"true"`
-
-	metadataCreateVpnConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnConnectionInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnConnectionOutput struct {
-	// Information about the VPN connection.
-	VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"`
-
-	metadataCreateVpnConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnConnectionOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnConnectionRouteInput struct {
-	// The CIDR block associated with the local subnet of the customer network.
-	DestinationCidrBlock *string `type:"string" required:"true"`
-
-	// The ID of the VPN connection.
-	VpnConnectionId *string `type:"string" required:"true"`
-
-	metadataCreateVpnConnectionRouteInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnConnectionRouteInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnConnectionRouteInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnConnectionRouteInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnConnectionRouteOutput struct {
-	metadataCreateVpnConnectionRouteOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnConnectionRouteOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnConnectionRouteOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnConnectionRouteOutput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnGatewayInput struct {
-	// The Availability Zone for the virtual private gateway.
-	AvailabilityZone *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The type of VPN connection this virtual private gateway supports.
-	Type *string `type:"string" required:"true" enum:"GatewayType"`
-
-	metadataCreateVpnGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnGatewayInput) GoString() string {
-	return s.String()
-}
-
-type CreateVpnGatewayOutput struct {
-	// Information about the virtual private gateway.
-	VpnGateway *VpnGateway `locationName:"vpnGateway" type:"structure"`
-
-	metadataCreateVpnGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataCreateVpnGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CreateVpnGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CreateVpnGatewayOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a customer gateway.
-type CustomerGateway struct {
-	// The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
-	// (ASN).
-	BgpAsn *string `locationName:"bgpAsn" type:"string"`
-
-	// The ID of the customer gateway.
-	CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"`
-
-	// The Internet-routable IP address of the customer gateway's outside interface.
-	IpAddress *string `locationName:"ipAddress" type:"string"`
-
-	// The current state of the customer gateway (pending | available | deleting
-	// | deleted).
-	State *string `locationName:"state" type:"string"`
-
-	// Any tags assigned to the customer gateway.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The type of VPN connection the customer gateway supports (ipsec.1).
-	Type *string `locationName:"type" type:"string"`
-
-	metadataCustomerGateway `json:"-" xml:"-"`
-}
-
-type metadataCustomerGateway struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s CustomerGateway) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s CustomerGateway) GoString() string {
-	return s.String()
-}
-
-type DeleteCustomerGatewayInput struct {
-	// The ID of the customer gateway.
-	CustomerGatewayId *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDeleteCustomerGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteCustomerGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteCustomerGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteCustomerGatewayInput) GoString() string {
-	return s.String()
-}
-
-type DeleteCustomerGatewayOutput struct {
-	metadataDeleteCustomerGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteCustomerGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteCustomerGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteCustomerGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteDhcpOptionsInput struct {
-	// The ID of the DHCP options set.
-	DhcpOptionsId *string `type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDeleteDhcpOptionsInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteDhcpOptionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteDhcpOptionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteDhcpOptionsInput) GoString() string {
-	return s.String()
-}
-
-type DeleteDhcpOptionsOutput struct {
-	metadataDeleteDhcpOptionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteDhcpOptionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteDhcpOptionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteDhcpOptionsOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteFlowLogsInput struct {
-	// One or more flow log IDs.
-	FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list" required:"true"`
-
-	metadataDeleteFlowLogsInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteFlowLogsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteFlowLogsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteFlowLogsInput) GoString() string {
-	return s.String()
-}
-
-type DeleteFlowLogsOutput struct {
-	// Information about the flow logs that could not be deleted successfully.
-	Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"`
-
-	metadataDeleteFlowLogsOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteFlowLogsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteFlowLogsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteFlowLogsOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteInternetGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the Internet gateway.
-	InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"`
-
-	metadataDeleteInternetGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteInternetGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteInternetGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteInternetGatewayInput) GoString() string {
-	return s.String()
-}
-
-type DeleteInternetGatewayOutput struct {
-	metadataDeleteInternetGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteInternetGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteInternetGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteInternetGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteKeyPairInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The name of the key pair.
-	KeyName *string `type:"string" required:"true"`
-
-	metadataDeleteKeyPairInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteKeyPairInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteKeyPairInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteKeyPairInput) GoString() string {
-	return s.String()
-}
-
-type DeleteKeyPairOutput struct {
-	metadataDeleteKeyPairOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteKeyPairOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteKeyPairOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteKeyPairOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkAclEntryInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Indicates whether the rule is an egress rule.
-	Egress *bool `locationName:"egress" type:"boolean" required:"true"`
-
-	// The ID of the network ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
-
-	// The rule number of the entry to delete.
-	RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"`
-
-	metadataDeleteNetworkAclEntryInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkAclEntryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkAclEntryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkAclEntryInput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkAclEntryOutput struct {
-	metadataDeleteNetworkAclEntryOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkAclEntryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkAclEntryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkAclEntryOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkAclInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the network ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
-
-	metadataDeleteNetworkAclInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkAclInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkAclInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkAclInput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkAclOutput struct {
-	metadataDeleteNetworkAclOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkAclOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkAclOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkAclOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkInterfaceInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	metadataDeleteNetworkInterfaceInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkInterfaceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkInterfaceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkInterfaceInput) GoString() string {
-	return s.String()
-}
-
-type DeleteNetworkInterfaceOutput struct {
-	metadataDeleteNetworkInterfaceOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteNetworkInterfaceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteNetworkInterfaceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteNetworkInterfaceOutput) GoString() string {
-	return s.String()
-}
-
-type DeletePlacementGroupInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The name of the placement group.
-	GroupName *string `locationName:"groupName" type:"string" required:"true"`
-
-	metadataDeletePlacementGroupInput `json:"-" xml:"-"`
-}
-
-type metadataDeletePlacementGroupInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeletePlacementGroupInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeletePlacementGroupInput) GoString() string {
-	return s.String()
-}
-
-type DeletePlacementGroupOutput struct {
-	metadataDeletePlacementGroupOutput `json:"-" xml:"-"`
-}
-
-type metadataDeletePlacementGroupOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeletePlacementGroupOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeletePlacementGroupOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteRouteInput struct {
-	// The CIDR range for the route. The value you specify must match the CIDR for
-	// the route exactly.
-	DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	metadataDeleteRouteInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteRouteInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteRouteInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteRouteInput) GoString() string {
-	return s.String()
-}
-
-type DeleteRouteOutput struct {
-	metadataDeleteRouteOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteRouteOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteRouteOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteRouteOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteRouteTableInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	metadataDeleteRouteTableInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteRouteTableInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteRouteTableInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteRouteTableInput) GoString() string {
-	return s.String()
-}
-
-type DeleteRouteTableOutput struct {
-	metadataDeleteRouteTableOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteRouteTableOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteRouteTableOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteRouteTableOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteSecurityGroupInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the security group. Required for a nondefault VPC.
-	GroupId *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The name of the security group. You can specify
-	// either the security group name or the security group ID.
-	GroupName *string `type:"string"`
-
-	metadataDeleteSecurityGroupInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSecurityGroupInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSecurityGroupInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSecurityGroupInput) GoString() string {
-	return s.String()
-}
-
-type DeleteSecurityGroupOutput struct {
-	metadataDeleteSecurityGroupOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSecurityGroupOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSecurityGroupOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSecurityGroupOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteSnapshotInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the EBS snapshot.
-	SnapshotId *string `type:"string" required:"true"`
-
-	metadataDeleteSnapshotInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSnapshotInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSnapshotInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSnapshotInput) GoString() string {
-	return s.String()
-}
-
-type DeleteSnapshotOutput struct {
-	metadataDeleteSnapshotOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSnapshotOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSnapshotOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSnapshotOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DeleteSpotDatafeedSubscription.
-type DeleteSpotDatafeedSubscriptionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDeleteSpotDatafeedSubscriptionInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSpotDatafeedSubscriptionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSpotDatafeedSubscriptionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSpotDatafeedSubscriptionInput) GoString() string {
-	return s.String()
-}
-
-type DeleteSpotDatafeedSubscriptionOutput struct {
-	metadataDeleteSpotDatafeedSubscriptionOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSpotDatafeedSubscriptionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSpotDatafeedSubscriptionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSpotDatafeedSubscriptionOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteSubnetInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the subnet.
-	SubnetId *string `type:"string" required:"true"`
-
-	metadataDeleteSubnetInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSubnetInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSubnetInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSubnetInput) GoString() string {
-	return s.String()
-}
-
-type DeleteSubnetOutput struct {
-	metadataDeleteSubnetOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteSubnetOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteSubnetOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteSubnetOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteTagsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the resource. For example, ami-1a2b3c4d. You can specify more than
-	// one resource ID.
-	Resources []*string `locationName:"resourceId" type:"list" required:"true"`
-
-	// One or more tags to delete. If you omit the value parameter, we delete the
-	// tag regardless of its value. If you specify this parameter with an empty
-	// string as the value, we delete the key only if its value is an empty string.
-	Tags []*Tag `locationName:"tag" locationNameList:"item" type:"list"`
-
-	metadataDeleteTagsInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteTagsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteTagsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteTagsInput) GoString() string {
-	return s.String()
-}
-
-type DeleteTagsOutput struct {
-	metadataDeleteTagsOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteTagsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteTagsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteTagsOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVolumeInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the volume.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataDeleteVolumeInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVolumeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVolumeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVolumeInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVolumeOutput struct {
-	metadataDeleteVolumeOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVolumeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVolumeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVolumeOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcEndpointsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// One or more endpoint IDs.
-	VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"`
-
-	metadataDeleteVpcEndpointsInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcEndpointsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcEndpointsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcEndpointsInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcEndpointsOutput struct {
-	// Information about the endpoints that were not successfully deleted.
-	Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"`
-
-	metadataDeleteVpcEndpointsOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcEndpointsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcEndpointsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcEndpointsOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	metadataDeleteVpcInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcOutput struct {
-	metadataDeleteVpcOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcPeeringConnectionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"`
-
-	metadataDeleteVpcPeeringConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcPeeringConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcPeeringConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcPeeringConnectionInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpcPeeringConnectionOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataDeleteVpcPeeringConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpcPeeringConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpcPeeringConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpcPeeringConnectionOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnConnectionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPN connection.
-	VpnConnectionId *string `type:"string" required:"true"`
-
-	metadataDeleteVpnConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnConnectionInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnConnectionOutput struct {
-	metadataDeleteVpnConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnConnectionOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnConnectionRouteInput struct {
-	// The CIDR block associated with the local subnet of the customer network.
-	DestinationCidrBlock *string `type:"string" required:"true"`
-
-	// The ID of the VPN connection.
-	VpnConnectionId *string `type:"string" required:"true"`
-
-	metadataDeleteVpnConnectionRouteInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnConnectionRouteInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnConnectionRouteInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnConnectionRouteInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnConnectionRouteOutput struct {
-	metadataDeleteVpnConnectionRouteOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnConnectionRouteOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnConnectionRouteOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnConnectionRouteOutput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the virtual private gateway.
-	VpnGatewayId *string `type:"string" required:"true"`
-
-	metadataDeleteVpnGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnGatewayInput) GoString() string {
-	return s.String()
-}
-
-type DeleteVpnGatewayOutput struct {
-	metadataDeleteVpnGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataDeleteVpnGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeleteVpnGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeleteVpnGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type DeregisterImageInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the AMI.
-	ImageId *string `type:"string" required:"true"`
-
-	metadataDeregisterImageInput `json:"-" xml:"-"`
-}
-
-type metadataDeregisterImageInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeregisterImageInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeregisterImageInput) GoString() string {
-	return s.String()
-}
-
-type DeregisterImageOutput struct {
-	metadataDeregisterImageOutput `json:"-" xml:"-"`
-}
-
-type metadataDeregisterImageOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DeregisterImageOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DeregisterImageOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAccountAttributesInput struct {
-	// One or more account attribute names.
-	AttributeNames []*string `locationName:"attributeName" locationNameList:"attributeName" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDescribeAccountAttributesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAccountAttributesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAccountAttributesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAccountAttributesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeAccountAttributesOutput struct {
-	// Information about one or more account attributes.
-	AccountAttributes []*AccountAttribute `locationName:"accountAttributeSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeAccountAttributesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAccountAttributesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAccountAttributesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAccountAttributesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAddressesInput struct {
-	// [EC2-VPC] One or more allocation IDs.
-	//
-	// Default: Describes all your Elastic IP addresses.
-	AllocationIds []*string `locationName:"AllocationId" locationNameList:"AllocationId" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters. Filter names and values are case-sensitive.
-	//
-	//   allocation-id - [EC2-VPC] The allocation ID for the address.
-	//
-	//   association-id - [EC2-VPC] The association ID for the address.
-	//
-	//   domain - Indicates whether the address is for use in EC2-Classic (standard)
-	// or in a VPC (vpc).
-	//
-	//   instance-id - The ID of the instance the address is associated with, if
-	// any.
-	//
-	//   network-interface-id - [EC2-VPC] The ID of the network interface that
-	// the address is associated with, if any.
-	//
-	//   network-interface-owner-id - The AWS account ID of the owner.
-	//
-	//   private-ip-address - [EC2-VPC] The private IP address associated with
-	// the Elastic IP address.
-	//
-	//   public-ip - The Elastic IP address.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// [EC2-Classic] One or more Elastic IP addresses.
-	//
-	// Default: Describes all your Elastic IP addresses.
-	PublicIps []*string `locationName:"PublicIp" locationNameList:"PublicIp" type:"list"`
-
-	metadataDescribeAddressesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAddressesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAddressesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAddressesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeAddressesOutput struct {
-	// Information about one or more Elastic IP addresses.
-	Addresses []*Address `locationName:"addressesSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeAddressesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAddressesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAddressesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAddressesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeAvailabilityZonesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   message - Information about the Availability Zone.
-	//
-	//   region-name - The name of the region for the Availability Zone (for example,
-	// us-east-1).
-	//
-	//   state - The state of the Availability Zone (available | information |
-	// impaired | unavailable).
-	//
-	//   zone-name - The name of the Availability Zone (for example, us-east-1a).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The names of one or more Availability Zones.
-	ZoneNames []*string `locationName:"ZoneName" locationNameList:"ZoneName" type:"list"`
-
-	metadataDescribeAvailabilityZonesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAvailabilityZonesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAvailabilityZonesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAvailabilityZonesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeAvailabilityZonesOutput struct {
-	// Information about one or more Availability Zones.
-	AvailabilityZones []*AvailabilityZone `locationName:"availabilityZoneInfo" locationNameList:"item" type:"list"`
-
-	metadataDescribeAvailabilityZonesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeAvailabilityZonesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeAvailabilityZonesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeAvailabilityZonesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeBundleTasksInput struct {
-	// One or more bundle task IDs.
-	//
-	// Default: Describes all your bundle tasks.
-	BundleIds []*string `locationName:"BundleId" locationNameList:"BundleId" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   bundle-id - The ID of the bundle task.
-	//
-	//   error-code - If the task failed, the error code returned.
-	//
-	//   error-message - If the task failed, the error message returned.
-	//
-	//   instance-id - The ID of the instance.
-	//
-	//   progress - The level of task completion, as a percentage (for example,
-	// 20%).
-	//
-	//   s3-bucket - The Amazon S3 bucket to store the AMI.
-	//
-	//   s3-prefix - The beginning of the AMI name.
-	//
-	//   start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z).
-	//
-	//   state - The state of the task (pending | waiting-for-shutdown | bundling
-	// | storing | cancelling | complete | failed).
-	//
-	//   update-time - The time of the most recent update for the task.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	metadataDescribeBundleTasksInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeBundleTasksInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeBundleTasksInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeBundleTasksInput) GoString() string {
-	return s.String()
-}
-
-type DescribeBundleTasksOutput struct {
-	// Information about one or more bundle tasks.
-	BundleTasks []*BundleTask `locationName:"bundleInstanceTasksSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeBundleTasksOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeBundleTasksOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeBundleTasksOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeBundleTasksOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeClassicLinkInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//  group-id - The ID of a VPC security group that's associated with the instance.
-	//
-	//  instance-id - The ID of the instance.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC that the instance is linked to.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more instance IDs. Must be instances linked to a VPC through ClassicLink.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned. You cannot specify this parameter and the instance IDs parameter
-	// in the same request.
-	//
-	// Constraint: If the value is greater than 1000, we return only 1000 items.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeClassicLinkInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeClassicLinkInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeClassicLinkInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeClassicLinkInstancesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeClassicLinkInstancesOutput struct {
-	// Information about one or more linked EC2-Classic instances.
-	Instances []*ClassicLinkInstance `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeClassicLinkInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeClassicLinkInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeClassicLinkInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeClassicLinkInstancesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeConversionTasksInput struct {
-	// One or more conversion task IDs.
-	ConversionTaskIds []*string `locationName:"conversionTaskId" locationNameList:"item" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"`
-
-	metadataDescribeConversionTasksInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeConversionTasksInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeConversionTasksInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeConversionTasksInput) GoString() string {
-	return s.String()
-}
-
-type DescribeConversionTasksOutput struct {
-	// Information about the conversion tasks.
-	ConversionTasks []*ConversionTask `locationName:"conversionTasks" locationNameList:"item" type:"list"`
-
-	metadataDescribeConversionTasksOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeConversionTasksOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeConversionTasksOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeConversionTasksOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeCustomerGatewaysInput struct {
-	// One or more customer gateway IDs.
-	//
-	// Default: Describes all your customer gateways.
-	CustomerGatewayIds []*string `locationName:"CustomerGatewayId" locationNameList:"CustomerGatewayId" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous
-	// System Number (ASN).
-	//
-	//   customer-gateway-id - The ID of the customer gateway.
-	//
-	//   ip-address - The IP address of the customer gateway's Internet-routable
-	// external interface.
-	//
-	//   state - The state of the customer gateway (pending | available | deleting
-	// | deleted).
-	//
-	//   type - The type of customer gateway. Currently, the only supported type
-	// is ipsec.1.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	metadataDescribeCustomerGatewaysInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeCustomerGatewaysInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeCustomerGatewaysInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeCustomerGatewaysInput) GoString() string {
-	return s.String()
-}
-
-type DescribeCustomerGatewaysOutput struct {
-	// Information about one or more customer gateways.
-	CustomerGateways []*CustomerGateway `locationName:"customerGatewaySet" locationNameList:"item" type:"list"`
-
-	metadataDescribeCustomerGatewaysOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeCustomerGatewaysOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeCustomerGatewaysOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeCustomerGatewaysOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeDhcpOptionsInput struct {
-	// The IDs of one or more DHCP options sets.
-	//
-	// Default: Describes all your DHCP options sets.
-	DhcpOptionsIds []*string `locationName:"DhcpOptionsId" locationNameList:"DhcpOptionsId" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   dhcp-options-id - The ID of a set of DHCP options.
-	//
-	//   key - The key for one of the options (for example, domain-name).
-	//
-	//   value - The value for one of the options.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	metadataDescribeDhcpOptionsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeDhcpOptionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeDhcpOptionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeDhcpOptionsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeDhcpOptionsOutput struct {
-	// Information about one or more DHCP options sets.
-	DhcpOptions []*DhcpOptions `locationName:"dhcpOptionsSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeDhcpOptionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeDhcpOptionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeDhcpOptionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeDhcpOptionsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeExportTasksInput struct {
-	// One or more export task IDs.
-	ExportTaskIds []*string `locationName:"exportTaskId" locationNameList:"ExportTaskId" type:"list"`
-
-	metadataDescribeExportTasksInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeExportTasksInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeExportTasksInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeExportTasksInput) GoString() string {
-	return s.String()
-}
-
-type DescribeExportTasksOutput struct {
-	// Information about the export tasks.
-	ExportTasks []*ExportTask `locationName:"exportTaskSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeExportTasksOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeExportTasksOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeExportTasksOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeExportTasksOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeFlowLogsInput struct {
-	// One or more filters.
-	//
-	//  deliver-log-status - The status of the logs delivery (SUCCESS | FAILED).
-	//
-	// flow-log-id - The ID of the flow log.
-	//
-	// log-group-name - The name of the log group.
-	//
-	// resource-id - The ID of the VPC, subnet, or network interface.
-	//
-	// traffic-type - The type of traffic (ACCEPT | REJECT | ALL)
-	Filter []*Filter `locationNameList:"Filter" type:"list"`
-
-	// One or more flow log IDs.
-	FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results can be seen by sending another request with the returned
-	// NextToken value. This value can be between 5 and 1000; if MaxResults is given
-	// a value larger than 1000, only 1000 results are returned. You cannot specify
-	// this parameter and the flow log IDs parameter in the same request.
-	MaxResults *int64 `type:"integer"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeFlowLogsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeFlowLogsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeFlowLogsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeFlowLogsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeFlowLogsOutput struct {
-	// Information about the flow logs.
-	FlowLogs []*FlowLog `locationName:"flowLogSet" locationNameList:"item" type:"list"`
-
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeFlowLogsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeFlowLogsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeFlowLogsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeFlowLogsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeImageAttributeInput struct {
-	// The AMI attribute.
-	//
-	// Note: Depending on your account privileges, the blockDeviceMapping attribute
-	// may return a Client.AuthFailure error. If this happens, use DescribeImages
-	// to get information about the block device mapping for the AMI.
-	Attribute *string `type:"string" required:"true" enum:"ImageAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the AMI.
-	ImageId *string `type:"string" required:"true"`
-
-	metadataDescribeImageAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImageAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImageAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImageAttributeInput) GoString() string {
-	return s.String()
-}
-
-// Describes an image attribute.
-type DescribeImageAttributeOutput struct {
-	// One or more block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// A description for the AMI.
-	Description *AttributeValue `locationName:"description" type:"structure"`
-
-	// The ID of the AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The kernel ID.
-	KernelId *AttributeValue `locationName:"kernel" type:"structure"`
-
-	// One or more launch permissions.
-	LaunchPermissions []*LaunchPermission `locationName:"launchPermission" locationNameList:"item" type:"list"`
-
-	// One or more product codes.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// The RAM disk ID.
-	RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"`
-
-	// The value to use for a resource attribute.
-	SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"`
-
-	metadataDescribeImageAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImageAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImageAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImageAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeImagesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Scopes the images by users with explicit launch permissions. Specify an AWS
-	// account ID, self (the sender of the request), or all (public AMIs).
-	ExecutableUsers []*string `locationName:"ExecutableBy" locationNameList:"ExecutableBy" type:"list"`
-
-	// One or more filters.
-	//
-	//   architecture - The image architecture (i386 | x86_64).
-	//
-	//   block-device-mapping.delete-on-termination - A Boolean value that indicates
-	// whether the Amazon EBS volume is deleted on instance termination.
-	//
-	//   block-device-mapping.device-name - The device name for the EBS volume
-	// (for example, /dev/sdh).
-	//
-	//   block-device-mapping.snapshot-id - The ID of the snapshot used for the
-	// EBS volume.
-	//
-	//   block-device-mapping.volume-size - The volume size of the EBS volume,
-	// in GiB.
-	//
-	//   block-device-mapping.volume-type - The volume type of the EBS volume (gp2
-	// | standard | io1).
-	//
-	//   description - The description of the image (provided during image creation).
-	//
-	//   hypervisor - The hypervisor type (ovm | xen).
-	//
-	//   image-id - The ID of the image.
-	//
-	//   image-type - The image type (machine | kernel | ramdisk).
-	//
-	//   is-public - A Boolean that indicates whether the image is public.
-	//
-	//   kernel-id - The kernel ID.
-	//
-	//   manifest-location - The location of the image manifest.
-	//
-	//   name - The name of the AMI (provided during image creation).
-	//
-	//   owner-alias - The AWS account alias (for example, amazon).
-	//
-	//   owner-id - The AWS account ID of the image owner.
-	//
-	//   platform - The platform. To only list Windows-based AMIs, use windows.
-	//
-	//   product-code - The product code.
-	//
-	//   product-code.type - The type of the product code (devpay | marketplace).
-	//
-	//   ramdisk-id - The RAM disk ID.
-	//
-	//   root-device-name - The name of the root device volume (for example, /dev/sda1).
-	//
-	//   root-device-type - The type of the root device volume (ebs | instance-store).
-	//
-	//   state - The state of the image (available | pending | failed).
-	//
-	//   state-reason-code - The reason code for the state change.
-	//
-	//   state-reason-message - The message for the state change.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   virtualization-type - The virtualization type (paravirtual | hvm).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more image IDs.
-	//
-	// Default: Describes all images available to you.
-	ImageIds []*string `locationName:"ImageId" locationNameList:"ImageId" type:"list"`
-
-	// Filters the images by the owner. Specify an AWS account ID, amazon (owner
-	// is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the
-	// sender of the request). Omitting this option returns all images for which
-	// you have launch permissions, regardless of ownership.
-	Owners []*string `locationName:"Owner" locationNameList:"Owner" type:"list"`
-
-	metadataDescribeImagesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImagesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImagesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImagesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeImagesOutput struct {
-	// Information about one or more images.
-	Images []*Image `locationName:"imagesSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeImagesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImagesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImagesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImagesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeImportImageTasksInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// One or more filters.
-	Filters []*Filter `locationNameList:"Filter" type:"list"`
-
-	// A list of import image task IDs.
-	ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"`
-
-	// The maximum number of results to return in a single request.
-	MaxResults *int64 `type:"integer"`
-
-	// A token that indicates the next page of results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeImportImageTasksInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImportImageTasksInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImportImageTasksInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImportImageTasksInput) GoString() string {
-	return s.String()
-}
-
-type DescribeImportImageTasksOutput struct {
-	// A list of zero or more import image tasks that are currently active or were
-	// completed or canceled in the previous 7 days.
-	ImportImageTasks []*ImportImageTask `locationName:"importImageTaskSet" locationNameList:"item" type:"list"`
-
-	// The token to use to get the next page of results. This value is null when
-	// there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeImportImageTasksOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImportImageTasksOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImportImageTasksOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImportImageTasksOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeImportSnapshotTasksInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// One or more filters.
-	Filters []*Filter `locationNameList:"Filter" type:"list"`
-
-	// A list of import snapshot task IDs.
-	ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"`
-
-	// The maximum number of results to return in a single request.
-	MaxResults *int64 `type:"integer"`
-
-	// A token that indicates the next page of results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeImportSnapshotTasksInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImportSnapshotTasksInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImportSnapshotTasksInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImportSnapshotTasksInput) GoString() string {
-	return s.String()
-}
-
-type DescribeImportSnapshotTasksOutput struct {
-	// A list of zero or more import snapshot tasks that are currently active or
-	// were completed or canceled in the previous 7 days.
-	ImportSnapshotTasks []*ImportSnapshotTask `locationName:"importSnapshotTaskSet" locationNameList:"item" type:"list"`
-
-	// The token to use to get the next page of results. This value is null when
-	// there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeImportSnapshotTasksOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeImportSnapshotTasksOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeImportSnapshotTasksOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeImportSnapshotTasksOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeInstanceAttributeInput struct {
-	// The instance attribute.
-	Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	metadataDescribeInstanceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstanceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstanceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstanceAttributeInput) GoString() string {
-	return s.String()
-}
-
-// Describes an instance attribute.
-type DescribeInstanceAttributeOutput struct {
-	// The block device mapping of the instance.
-	BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// If the value is true, you can't terminate the instance through the Amazon
-	// EC2 console, CLI, or API; otherwise, you can.
-	DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"`
-
-	// Indicates whether the instance is optimized for EBS I/O.
-	EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"`
-
-	// The security groups associated with the instance.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// Indicates whether an instance stops or terminates when you initiate shutdown
-	// from the instance (using the operating system command for system shutdown).
-	InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"`
-
-	// The instance type.
-	InstanceType *AttributeValue `locationName:"instanceType" type:"structure"`
-
-	// The kernel ID.
-	KernelId *AttributeValue `locationName:"kernel" type:"structure"`
-
-	// A list of product codes.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// The RAM disk ID.
-	RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"`
-
-	// The name of the root device (for example, /dev/sda1 or /dev/xvda).
-	RootDeviceName *AttributeValue `locationName:"rootDeviceName" type:"structure"`
-
-	// Indicates whether source/destination checking is enabled. A value of true
-	// means checking is enabled, and false means checking is disabled. This value
-	// must be false for a NAT instance to perform NAT.
-	SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"`
-
-	// The value to use for a resource attribute.
-	SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"`
-
-	// The Base64-encoded MIME user data.
-	UserData *AttributeValue `locationName:"userData" type:"structure"`
-
-	metadataDescribeInstanceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstanceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstanceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstanceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeInstanceStatusInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   availability-zone - The Availability Zone of the instance.
-	//
-	//   event.code - The code for the scheduled event (instance-reboot | system-reboot
-	// | system-maintenance | instance-retirement | instance-stop).
-	//
-	//   event.description - A description of the event.
-	//
-	//   event.not-after - The latest end time for the scheduled event (for example,
-	// 2014-09-15T17:15:20.000Z).
-	//
-	//   event.not-before - The earliest start time for the scheduled event (for
-	// example, 2014-09-15T17:15:20.000Z).
-	//
-	//   instance-state-code - The code for the instance state, as a 16-bit unsigned
-	// integer. The high byte is an opaque internal value and should be ignored.
-	// The low byte is set based on the state represented. The valid values are
-	// 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping),
-	// and 80 (stopped).
-	//
-	//   instance-state-name - The state of the instance (pending | running | shutting-down
-	// | terminated | stopping | stopped).
-	//
-	//   instance-status.reachability - Filters on instance status where the name
-	// is reachability (passed | failed | initializing | insufficient-data).
-	//
-	//   instance-status.status - The status of the instance (ok | impaired | initializing
-	// | insufficient-data | not-applicable).
-	//
-	//   system-status.reachability - Filters on system status where the name is
-	// reachability (passed | failed | initializing | insufficient-data).
-	//
-	//   system-status.status - The system status of the instance (ok | impaired
-	// | initializing | insufficient-data | not-applicable).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// When true, includes the health status for all instances. When false, includes
-	// the health status for running instances only.
-	//
-	// Default: false
-	IncludeAllInstances *bool `locationName:"includeAllInstances" type:"boolean"`
-
-	// One or more instance IDs.
-	//
-	// Default: Describes all your instances.
-	//
-	// Constraints: Maximum 100 explicitly specified instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned. You cannot specify this parameter and the instance IDs parameter
-	// in the same request.
-	MaxResults *int64 `type:"integer"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `type:"string"`
-
-	metadataDescribeInstanceStatusInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstanceStatusInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstanceStatusInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstanceStatusInput) GoString() string {
-	return s.String()
-}
-
-type DescribeInstanceStatusOutput struct {
-	// One or more instance status descriptions.
-	InstanceStatuses []*InstanceStatus `locationName:"instanceStatusSet" locationNameList:"item" type:"list"`
-
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeInstanceStatusOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstanceStatusOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstanceStatusOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstanceStatusOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   architecture - The instance architecture (i386 | x86_64).
-	//
-	//   availability-zone - The Availability Zone of the instance.
-	//
-	//   block-device-mapping.attach-time - The attach time for an EBS volume mapped
-	// to the instance, for example, 2010-09-15T17:15:20.000Z.
-	//
-	//   block-device-mapping.delete-on-termination - A Boolean that indicates
-	// whether the EBS volume is deleted on instance termination.
-	//
-	//   block-device-mapping.device-name - The device name for the EBS volume
-	// (for example, /dev/sdh or xvdh).
-	//
-	//   block-device-mapping.status - The status for the EBS volume (attaching
-	// | attached | detaching | detached).
-	//
-	//   block-device-mapping.volume-id - The volume ID of the EBS volume.
-	//
-	//   client-token - The idempotency token you provided when you launched the
-	// instance.
-	//
-	//   dns-name - The public DNS name of the instance.
-	//
-	//   group-id - The ID of the security group for the instance. EC2-Classic
-	// only.
-	//
-	//   group-name - The name of the security group for the instance. EC2-Classic
-	// only.
-	//
-	//   hypervisor - The hypervisor type of the instance (ovm | xen).
-	//
-	//   iam-instance-profile.arn - The instance profile associated with the instance.
-	// Specified as an ARN.
-	//
-	//   image-id - The ID of the image used to launch the instance.
-	//
-	//   instance-id - The ID of the instance.
-	//
-	//   instance-lifecycle - Indicates whether this is a Spot Instance (spot).
-	//
-	//   instance-state-code - The state of the instance, as a 16-bit unsigned
-	// integer. The high byte is an opaque internal value and should be ignored.
-	// The low byte is set based on the state represented. The valid values are:
-	// 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping),
-	// and 80 (stopped).
-	//
-	//   instance-state-name - The state of the instance (pending | running | shutting-down
-	// | terminated | stopping | stopped).
-	//
-	//   instance-type - The type of instance (for example, t2.micro).
-	//
-	//   instance.group-id - The ID of the security group for the instance.
-	//
-	//   instance.group-name - The name of the security group for the instance.
-	//
-	//   ip-address - The public IP address of the instance.
-	//
-	//   kernel-id - The kernel ID.
-	//
-	//   key-name - The name of the key pair used when the instance was launched.
-	//
-	//   launch-index - When launching multiple instances, this is the index for
-	// the instance in the launch group (for example, 0, 1, 2, and so on).
-	//
-	//   launch-time - The time when the instance was launched.
-	//
-	//   monitoring-state - Indicates whether monitoring is enabled for the instance
-	// (disabled | enabled).
-	//
-	//   owner-id - The AWS account ID of the instance owner.
-	//
-	//   placement-group-name - The name of the placement group for the instance.
-	//
-	//   platform - The platform. Use windows if you have Windows instances; otherwise,
-	// leave blank.
-	//
-	//   private-dns-name - The private DNS name of the instance.
-	//
-	//   private-ip-address - The private IP address of the instance.
-	//
-	//   product-code - The product code associated with the AMI used to launch
-	// the instance.
-	//
-	//   product-code.type - The type of product code (devpay | marketplace).
-	//
-	//   ramdisk-id - The RAM disk ID.
-	//
-	//   reason - The reason for the current state of the instance (for example,
-	// shows "User Initiated [date]" when you stop or terminate the instance). Similar
-	// to the state-reason-code filter.
-	//
-	//   requester-id - The ID of the entity that launched the instance on your
-	// behalf (for example, AWS Management Console, Auto Scaling, and so on).
-	//
-	//   reservation-id - The ID of the instance's reservation. A reservation ID
-	// is created any time you launch an instance. A reservation ID has a one-to-one
-	// relationship with an instance launch request, but can be associated with
-	// more than one instance if you launch multiple instances using the same launch
-	// request. For example, if you launch one instance, you'll get one reservation
-	// ID. If you launch ten instances using the same launch request, you'll also
-	// get one reservation ID.
-	//
-	//   root-device-name - The name of the root device for the instance (for example,
-	// /dev/sda1 or /dev/xvda).
-	//
-	//   root-device-type - The type of root device that the instance uses (ebs
-	// | instance-store).
-	//
-	//   source-dest-check - Indicates whether the instance performs source/destination
-	// checking. A value of true means that checking is enabled, and false means
-	// checking is disabled. The value must be false for the instance to perform
-	// network address translation (NAT) in your VPC.
-	//
-	//   spot-instance-request-id - The ID of the Spot Instance request.
-	//
-	//   state-reason-code - The reason code for the state change.
-	//
-	//   state-reason-message - A message that describes the state change.
-	//
-	//   subnet-id - The ID of the subnet for the instance.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource,
-	// where tag:key is the tag's key.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   tenancy - The tenancy of an instance (dedicated | default).
-	//
-	//   virtualization-type - The virtualization type of the instance (paravirtual
-	// | hvm).
-	//
-	//   vpc-id - The ID of the VPC that the instance is running in.
-	//
-	//   network-interface.description - The description of the network interface.
-	//
-	//   network-interface.subnet-id - The ID of the subnet for the network interface.
-	//
-	//   network-interface.vpc-id - The ID of the VPC for the network interface.
-	//
-	//   network-interface.network-interface-id - The ID of the network interface.
-	//
-	//   network-interface.owner-id - The ID of the owner of the network interface.
-	//
-	//   network-interface.availability-zone - The Availability Zone for the network
-	// interface.
-	//
-	//   network-interface.requester-id - The requester ID for the network interface.
-	//
-	//   network-interface.requester-managed - Indicates whether the network interface
-	// is being managed by AWS.
-	//
-	//   network-interface.status - The status of the network interface (available)
-	// | in-use).
-	//
-	//   network-interface.mac-address - The MAC address of the network interface.
-	//
-	//   network-interface-private-dns-name - The private DNS name of the network
-	// interface.
-	//
-	//   network-interface.source-dest-check - Whether the network interface performs
-	// source/destination checking. A value of true means checking is enabled, and
-	// false means checking is disabled. The value must be false for the network
-	// interface to perform network address translation (NAT) in your VPC.
-	//
-	//   network-interface.group-id - The ID of a security group associated with
-	// the network interface.
-	//
-	//   network-interface.group-name - The name of a security group associated
-	// with the network interface.
-	//
-	//   network-interface.attachment.attachment-id - The ID of the interface attachment.
-	//
-	//   network-interface.attachment.instance-id - The ID of the instance to which
-	// the network interface is attached.
-	//
-	//   network-interface.attachment.instance-owner-id - The owner ID of the instance
-	// to which the network interface is attached.
-	//
-	//   network-interface.addresses.private-ip-address - The private IP address
-	// associated with the network interface.
-	//
-	//   network-interface.attachment.device-index - The device index to which
-	// the network interface is attached.
-	//
-	//   network-interface.attachment.status - The status of the attachment (attaching
-	// | attached | detaching | detached).
-	//
-	//   network-interface.attachment.attach-time - The time that the network interface
-	// was attached to an instance.
-	//
-	//   network-interface.attachment.delete-on-termination - Specifies whether
-	// the attachment is deleted when an instance is terminated.
-	//
-	//   network-interface.addresses.primary - Specifies whether the IP address
-	// of the network interface is the primary private IP address.
-	//
-	//   network-interface.addresses.association.public-ip - The ID of the association
-	// of an Elastic IP address with a network interface.
-	//
-	//   network-interface.addresses.association.ip-owner-id - The owner ID of
-	// the private IP address associated with the network interface.
-	//
-	//   association.public-ip - The address of the Elastic IP address bound to
-	// the network interface.
-	//
-	//   association.ip-owner-id - The owner of the Elastic IP address associated
-	// with the network interface.
-	//
-	//   association.allocation-id - The allocation ID returned when you allocated
-	// the Elastic IP address for your network interface.
-	//
-	//   association.association-id - The association ID returned when the network
-	// interface was associated with an IP address.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more instance IDs.
-	//
-	// Default: Describes all your instances.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned. You cannot specify this parameter and the instance IDs parameter
-	// in the same request.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token to request the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstancesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeInstancesOutput struct {
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// One or more reservations.
-	Reservations []*Reservation `locationName:"reservationSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInstancesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeInternetGatewaysInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   attachment.state - The current state of the attachment between the gateway
-	// and the VPC (available). Present only if a VPC is attached.
-	//
-	//   attachment.vpc-id - The ID of an attached VPC.
-	//
-	//   internet-gateway-id - The ID of the Internet gateway.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more Internet gateway IDs.
-	//
-	// Default: Describes all your Internet gateways.
-	InternetGatewayIds []*string `locationName:"internetGatewayId" locationNameList:"item" type:"list"`
-
-	metadataDescribeInternetGatewaysInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInternetGatewaysInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInternetGatewaysInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInternetGatewaysInput) GoString() string {
-	return s.String()
-}
-
-type DescribeInternetGatewaysOutput struct {
-	// Information about one or more Internet gateways.
-	InternetGateways []*InternetGateway `locationName:"internetGatewaySet" locationNameList:"item" type:"list"`
-
-	metadataDescribeInternetGatewaysOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeInternetGatewaysOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeInternetGatewaysOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeInternetGatewaysOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeKeyPairsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   fingerprint - The fingerprint of the key pair.
-	//
-	//   key-name - The name of the key pair.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more key pair names.
-	//
-	// Default: Describes all your key pairs.
-	KeyNames []*string `locationName:"KeyName" locationNameList:"KeyName" type:"list"`
-
-	metadataDescribeKeyPairsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeKeyPairsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeKeyPairsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeKeyPairsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeKeyPairsOutput struct {
-	// Information about one or more key pairs.
-	KeyPairs []*KeyPairInfo `locationName:"keySet" locationNameList:"item" type:"list"`
-
-	metadataDescribeKeyPairsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeKeyPairsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeKeyPairsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeKeyPairsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeMovingAddressesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   moving-status - The status of the Elastic IP address (MovingToVpc | RestoringToClassic).
-	Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value outside of this range, an error is returned.
-	//
-	// Default: If no value is provided, the default is 1000.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token to use to retrieve the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// One or more Elastic IP addresses.
-	PublicIps []*string `locationName:"publicIp" locationNameList:"item" type:"list"`
-
-	metadataDescribeMovingAddressesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeMovingAddressesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeMovingAddressesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeMovingAddressesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeMovingAddressesOutput struct {
-	// The status for each Elastic IP address.
-	MovingAddressStatuses []*MovingAddressStatus `locationName:"movingAddressStatusSet" locationNameList:"item" type:"list"`
-
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeMovingAddressesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeMovingAddressesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeMovingAddressesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeMovingAddressesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkAclsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   association.association-id - The ID of an association ID for the ACL.
-	//
-	//   association.network-acl-id - The ID of the network ACL involved in the
-	// association.
-	//
-	//   association.subnet-id - The ID of the subnet involved in the association.
-	//
-	//   default - Indicates whether the ACL is the default network ACL for the
-	// VPC.
-	//
-	//   entry.cidr - The CIDR range specified in the entry.
-	//
-	//   entry.egress - Indicates whether the entry applies to egress traffic.
-	//
-	//   entry.icmp.code - The ICMP code specified in the entry, if any.
-	//
-	//   entry.icmp.type - The ICMP type specified in the entry, if any.
-	//
-	//   entry.port-range.from - The start of the port range specified in the entry.
-	//
-	//   entry.port-range.to - The end of the port range specified in the entry.
-	//
-	//   entry.protocol - The protocol specified in the entry (tcp | udp | icmp
-	// or a protocol number).
-	//
-	//   entry.rule-action - Allows or denies the matching traffic (allow | deny).
-	//
-	//   entry.rule-number - The number of an entry (in other words, rule) in the
-	// ACL's set of entries.
-	//
-	//   network-acl-id - The ID of the network ACL.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC for the network ACL.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more network ACL IDs.
-	//
-	// Default: Describes all your network ACLs.
-	NetworkAclIds []*string `locationName:"NetworkAclId" locationNameList:"item" type:"list"`
-
-	metadataDescribeNetworkAclsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkAclsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkAclsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkAclsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkAclsOutput struct {
-	// Information about one or more network ACLs.
-	NetworkAcls []*NetworkAcl `locationName:"networkAclSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeNetworkAclsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkAclsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkAclsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkAclsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkInterfaceAttributeInput struct {
-	// The attribute of the network interface.
-	Attribute *string `locationName:"attribute" type:"string" enum:"NetworkInterfaceAttribute"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	metadataDescribeNetworkInterfaceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkInterfaceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkInterfaceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkInterfaceAttributeInput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkInterfaceAttributeOutput struct {
-	// The attachment (if any) of the network interface.
-	Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"`
-
-	// The description of the network interface.
-	Description *AttributeValue `locationName:"description" type:"structure"`
-
-	// The security groups associated with the network interface.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// Indicates whether source/destination checking is enabled.
-	SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"`
-
-	metadataDescribeNetworkInterfaceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkInterfaceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkInterfaceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkInterfaceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkInterfacesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   addresses.private-ip-address - The private IP addresses associated with
-	// the network interface.
-	//
-	//   addresses.primary - Whether the private IP address is the primary IP address
-	// associated with the network interface.
-	//
-	//   addresses.association.public-ip - The association ID returned when the
-	// network interface was associated with the Elastic IP address.
-	//
-	//   addresses.association.owner-id - The owner ID of the addresses associated
-	// with the network interface.
-	//
-	//   association.association-id - The association ID returned when the network
-	// interface was associated with an IP address.
-	//
-	//   association.allocation-id - The allocation ID returned when you allocated
-	// the Elastic IP address for your network interface.
-	//
-	//   association.ip-owner-id - The owner of the Elastic IP address associated
-	// with the network interface.
-	//
-	//   association.public-ip - The address of the Elastic IP address bound to
-	// the network interface.
-	//
-	//   association.public-dns-name - The public DNS name for the network interface.
-	//
-	//   attachment.attachment-id - The ID of the interface attachment.
-	//
-	//   attachment.instance-id - The ID of the instance to which the network interface
-	// is attached.
-	//
-	//   attachment.instance-owner-id - The owner ID of the instance to which the
-	// network interface is attached.
-	//
-	//   attachment.device-index - The device index to which the network interface
-	// is attached.
-	//
-	//   attachment.status - The status of the attachment (attaching | attached
-	// | detaching | detached).
-	//
-	//   attachment.attach.time - The time that the network interface was attached
-	// to an instance.
-	//
-	//   attachment.delete-on-termination - Indicates whether the attachment is
-	// deleted when an instance is terminated.
-	//
-	//   availability-zone - The Availability Zone of the network interface.
-	//
-	//   description - The description of the network interface.
-	//
-	//   group-id - The ID of a security group associated with the network interface.
-	//
-	//   group-name - The name of a security group associated with the network
-	// interface.
-	//
-	//   mac-address - The MAC address of the network interface.
-	//
-	//   network-interface-id - The ID of the network interface.
-	//
-	//   owner-id - The AWS account ID of the network interface owner.
-	//
-	//   private-ip-address - The private IP address or addresses of the network
-	// interface.
-	//
-	//   private-dns-name - The private DNS name of the network interface.
-	//
-	//   requester-id - The ID of the entity that launched the instance on your
-	// behalf (for example, AWS Management Console, Auto Scaling, and so on).
-	//
-	//   requester-managed - Indicates whether the network interface is being managed
-	// by an AWS service (for example, AWS Management Console, Auto Scaling, and
-	// so on).
-	//
-	//   source-desk-check - Indicates whether the network interface performs source/destination
-	// checking. A value of true means checking is enabled, and false means checking
-	// is disabled. The value must be false for the network interface to perform
-	// Network Address Translation (NAT) in your VPC.
-	//
-	//   status - The status of the network interface. If the network interface
-	// is not attached to an instance, the status is available; if a network interface
-	// is attached to an instance the status is in-use.
-	//
-	//   subnet-id - The ID of the subnet for the network interface.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC for the network interface.
-	Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"`
-
-	// One or more network interface IDs.
-	//
-	// Default: Describes all your network interfaces.
-	NetworkInterfaceIds []*string `locationName:"NetworkInterfaceId" locationNameList:"item" type:"list"`
-
-	metadataDescribeNetworkInterfacesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkInterfacesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkInterfacesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkInterfacesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeNetworkInterfacesOutput struct {
-	// Information about one or more network interfaces.
-	NetworkInterfaces []*NetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeNetworkInterfacesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeNetworkInterfacesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeNetworkInterfacesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeNetworkInterfacesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribePlacementGroupsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   group-name - The name of the placement group.
-	//
-	//   state - The state of the placement group (pending | available | deleting
-	// | deleted).
-	//
-	//   strategy - The strategy of the placement group (cluster).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more placement group names.
-	//
-	// Default: Describes all your placement groups, or only those otherwise specified.
-	GroupNames []*string `locationName:"groupName" type:"list"`
-
-	metadataDescribePlacementGroupsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribePlacementGroupsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribePlacementGroupsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribePlacementGroupsInput) GoString() string {
-	return s.String()
-}
-
-type DescribePlacementGroupsOutput struct {
-	// One or more placement groups.
-	PlacementGroups []*PlacementGroup `locationName:"placementGroupSet" locationNameList:"item" type:"list"`
-
-	metadataDescribePlacementGroupsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribePlacementGroupsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribePlacementGroupsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribePlacementGroupsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribePrefixListsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// One or more filters.
-	//
-	//   prefix-list-id: The ID of a prefix list.
-	//
-	//   prefix-list-name: The name of a prefix list.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of items to return for this request. The request returns
-	// a token that you can specify in a subsequent call to get the next set of
-	// results.
-	//
-	// Constraint: If the value specified is greater than 1000, we return only
-	// 1000 items.
-	MaxResults *int64 `type:"integer"`
-
-	// The token for the next set of items to return. (You received this token from
-	// a prior call.)
-	NextToken *string `type:"string"`
-
-	// One or more prefix list IDs.
-	PrefixListIds []*string `locationName:"PrefixListId" locationNameList:"item" type:"list"`
-
-	metadataDescribePrefixListsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribePrefixListsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribePrefixListsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribePrefixListsInput) GoString() string {
-	return s.String()
-}
-
-type DescribePrefixListsOutput struct {
-	// The token to use when requesting the next set of items. If there are no additional
-	// items to return, the string is empty.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// All available prefix lists.
-	PrefixLists []*PrefixList `locationName:"prefixListSet" locationNameList:"item" type:"list"`
-
-	metadataDescribePrefixListsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribePrefixListsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribePrefixListsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribePrefixListsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeRegionsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   endpoint - The endpoint of the region (for example, ec2.us-east-1.amazonaws.com).
-	//
-	//   region-name - The name of the region (for example, us-east-1).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The names of one or more regions.
-	RegionNames []*string `locationName:"RegionName" locationNameList:"RegionName" type:"list"`
-
-	metadataDescribeRegionsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeRegionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeRegionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeRegionsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeRegionsOutput struct {
-	// Information about one or more regions.
-	Regions []*Region `locationName:"regionInfo" locationNameList:"item" type:"list"`
-
-	metadataDescribeRegionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeRegionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeRegionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeRegionsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   availability-zone - The Availability Zone where the Reserved Instance
-	// can be used.
-	//
-	//   duration - The duration of the Reserved Instance (one year or three years),
-	// in seconds (31536000 | 94608000).
-	//
-	//   end - The time when the Reserved Instance expires (for example, 2015-08-07T11:54:42.000Z).
-	//
-	//   fixed-price - The purchase price of the Reserved Instance (for example,
-	// 9800.0).
-	//
-	//   instance-type - The instance type on which the Reserved Instance can be
-	// used.
-	//
-	//   product-description - The Reserved Instance product platform description.
-	// Instances that include (Amazon VPC) in the product platform description will
-	// only be displayed to EC2-Classic account holders and are for use with Amazon
-	// VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon
-	// VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) |
-	// Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows
-	// with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web | Windows
-	// with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows
-	// with SQL Server Enterprise (Amazon VPC)).
-	//
-	//   reserved-instances-id - The ID of the Reserved Instance.
-	//
-	//   start - The time at which the Reserved Instance purchase request was placed
-	// (for example, 2014-08-07T11:54:42.000Z).
-	//
-	//   state - The state of the Reserved Instance (payment-pending | active |
-	// payment-failed | retired).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   usage-price - The usage price of the Reserved Instance, per hour (for
-	// example, 0.84).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The Reserved Instance offering type. If you are using tools that predate
-	// the 2011-11-01 API version, you only have access to the Medium Utilization
-	// Reserved Instance offering type.
-	OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"`
-
-	// One or more Reserved Instance IDs.
-	//
-	// Default: Describes all your Reserved Instances, or only those otherwise
-	// specified.
-	ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list"`
-
-	metadataDescribeReservedInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesListingsInput struct {
-	// One or more filters.
-	//
-	//   reserved-instances-id - The ID of the Reserved Instances.
-	//
-	//   reserved-instances-listing-id - The ID of the Reserved Instances listing.
-	//
-	//   status - The status of the Reserved Instance listing (pending | active
-	// | cancelled | closed).
-	//
-	//   status-message - The reason for the status.
-	Filters []*Filter `locationName:"filters" locationNameList:"Filter" type:"list"`
-
-	// One or more Reserved Instance IDs.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	// One or more Reserved Instance Listing IDs.
-	ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"`
-
-	metadataDescribeReservedInstancesListingsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesListingsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesListingsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesListingsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesListingsOutput struct {
-	// Information about the Reserved Instance listing.
-	ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeReservedInstancesListingsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesListingsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesListingsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesListingsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesModificationsInput struct {
-	// One or more filters.
-	//
-	//   client-token - The idempotency token for the modification request.
-	//
-	//   create-date - The time when the modification request was created.
-	//
-	//   effective-date - The time when the modification becomes effective.
-	//
-	//   modification-result.reserved-instances-id - The ID for the Reserved Instances
-	// created as part of the modification request. This ID is only available when
-	// the status of the modification is fulfilled.
-	//
-	//   modification-result.target-configuration.availability-zone - The Availability
-	// Zone for the new Reserved Instances.
-	//
-	//   modification-result.target-configuration.instance-count  - The number
-	// of new Reserved Instances.
-	//
-	//   modification-result.target-configuration.instance-type - The instance
-	// type of the new Reserved Instances.
-	//
-	//   modification-result.target-configuration.platform - The network platform
-	// of the new Reserved Instances (EC2-Classic | EC2-VPC).
-	//
-	//   reserved-instances-id - The ID of the Reserved Instances modified.
-	//
-	//   reserved-instances-modification-id - The ID of the modification request.
-	//
-	//   status - The status of the Reserved Instances modification request (processing
-	// | fulfilled | failed).
-	//
-	//   status-message - The reason for the status.
-	//
-	//   update-date - The time when the modification request was last updated.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// IDs for the submitted modification request.
-	ReservedInstancesModificationIds []*string `locationName:"ReservedInstancesModificationId" locationNameList:"ReservedInstancesModificationId" type:"list"`
-
-	metadataDescribeReservedInstancesModificationsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesModificationsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesModificationsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesModificationsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesModificationsOutput struct {
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The Reserved Instance modification information.
-	ReservedInstancesModifications []*ReservedInstancesModification `locationName:"reservedInstancesModificationsSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeReservedInstancesModificationsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesModificationsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesModificationsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesModificationsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesOfferingsInput struct {
-	// The Availability Zone in which the Reserved Instance can be used.
-	AvailabilityZone *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   availability-zone - The Availability Zone where the Reserved Instance
-	// can be used.
-	//
-	//   duration - The duration of the Reserved Instance (for example, one year
-	// or three years), in seconds (31536000 | 94608000).
-	//
-	//   fixed-price - The purchase price of the Reserved Instance (for example,
-	// 9800.0).
-	//
-	//   instance-type - The instance type on which the Reserved Instance can be
-	// used.
-	//
-	//   marketplace - Set to true to show only Reserved Instance Marketplace offerings.
-	// When this filter is not used, which is the default behavior, all offerings
-	// from AWS and Reserved Instance Marketplace are listed.
-	//
-	//   product-description - The Reserved Instance product platform description.
-	// Instances that include (Amazon VPC) in the product platform description will
-	// only be displayed to EC2-Classic account holders and are for use with Amazon
-	// VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon
-	// VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) |
-	// Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows
-	// with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web |  Windows
-	// with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows
-	// with SQL Server Enterprise (Amazon VPC))
-	//
-	//   reserved-instances-offering-id - The Reserved Instances offering ID.
-	//
-	//   usage-price - The usage price of the Reserved Instance, per hour (for
-	// example, 0.84).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// Include Marketplace offerings in the response.
-	IncludeMarketplace *bool `type:"boolean"`
-
-	// The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated
-	// tenancy runs on single-tenant hardware and can only be launched within a
-	// VPC.
-	//
-	// Default: default
-	InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
-
-	// The instance type on which the Reserved Instance can be used. For more information,
-	// see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	InstanceType *string `type:"string" enum:"InstanceType"`
-
-	// The maximum duration (in seconds) to filter when searching for offerings.
-	//
-	// Default: 94608000 (3 years)
-	MaxDuration *int64 `type:"long"`
-
-	// The maximum number of instances to filter when searching for offerings.
-	//
-	// Default: 20
-	MaxInstanceCount *int64 `type:"integer"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. The maximum is 100.
-	//
-	// Default: 100
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The minimum duration (in seconds) to filter when searching for offerings.
-	//
-	// Default: 2592000 (1 month)
-	MinDuration *int64 `type:"long"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The Reserved Instance offering type. If you are using tools that predate
-	// the 2011-11-01 API version, you only have access to the Medium Utilization
-	// Reserved Instance offering type.
-	OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"`
-
-	// The Reserved Instance product platform description. Instances that include
-	// (Amazon VPC) in the description are for use with Amazon VPC.
-	ProductDescription *string `type:"string" enum:"RIProductDescription"`
-
-	// One or more Reserved Instances offering IDs.
-	ReservedInstancesOfferingIds []*string `locationName:"ReservedInstancesOfferingId" type:"list"`
-
-	metadataDescribeReservedInstancesOfferingsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesOfferingsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesOfferingsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesOfferingsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesOfferingsOutput struct {
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// A list of Reserved Instances offerings.
-	ReservedInstancesOfferings []*ReservedInstancesOffering `locationName:"reservedInstancesOfferingsSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeReservedInstancesOfferingsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesOfferingsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesOfferingsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesOfferingsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeReservedInstancesOutput struct {
-	// A list of Reserved Instances.
-	ReservedInstances []*ReservedInstances `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeReservedInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeReservedInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeReservedInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeReservedInstancesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeRouteTablesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   association.route-table-association-id - The ID of an association ID for
-	// the route table.
-	//
-	//   association.route-table-id - The ID of the route table involved in the
-	// association.
-	//
-	//   association.subnet-id - The ID of the subnet involved in the association.
-	//
-	//   association.main - Indicates whether the route table is the main route
-	// table for the VPC.
-	//
-	//   route-table-id - The ID of the route table.
-	//
-	//   route.destination-cidr-block - The CIDR range specified in a route in
-	// the table.
-	//
-	//   route.destination-prefix-list-id - The ID (prefix) of the AWS service
-	// specified in a route in the table.
-	//
-	//   route.gateway-id - The ID of a gateway specified in a route in the table.
-	//
-	//   route.instance-id - The ID of an instance specified in a route in the
-	// table.
-	//
-	//   route.origin - Describes how the route was created. CreateRouteTable indicates
-	// that the route was automatically created when the route table was created;
-	// CreateRoute indicates that the route was manually added to the route table;
-	// EnableVgwRoutePropagation indicates that the route was propagated by route
-	// propagation.
-	//
-	//   route.state - The state of a route in the route table (active | blackhole).
-	// The blackhole state indicates that the route's target isn't available (for
-	// example, the specified gateway isn't attached to the VPC, the specified NAT
-	// instance has been terminated, and so on).
-	//
-	//   route.vpc-peering-connection-id - The ID of a VPC peering connection specified
-	// in a route in the table.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC for the route table.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more route table IDs.
-	//
-	// Default: Describes all your route tables.
-	RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"`
-
-	metadataDescribeRouteTablesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeRouteTablesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeRouteTablesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeRouteTablesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeRouteTablesOutput struct {
-	// Information about one or more route tables.
-	RouteTables []*RouteTable `locationName:"routeTableSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeRouteTablesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeRouteTablesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeRouteTablesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeRouteTablesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeSecurityGroupsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters. If using multiple filters for rules, the results include
-	// security groups for which any combination of rules - not necessarily a single
-	// rule - match all filters.
-	//
-	//   description - The description of the security group.
-	//
-	//   egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service
-	// to which the security group allows access.
-	//
-	//   group-id - The ID of the security group.
-	//
-	//   group-name - The name of the security group.
-	//
-	//   ip-permission.cidr - A CIDR range that has been granted permission.
-	//
-	//   ip-permission.from-port - The start of port range for the TCP and UDP
-	// protocols, or an ICMP type number.
-	//
-	//   ip-permission.group-id - The ID of a security group that has been granted
-	// permission.
-	//
-	//   ip-permission.group-name - The name of a security group that has been
-	// granted permission.
-	//
-	//   ip-permission.protocol - The IP protocol for the permission (tcp | udp
-	// | icmp or a protocol number).
-	//
-	//   ip-permission.to-port - The end of port range for the TCP and UDP protocols,
-	// or an ICMP code.
-	//
-	//   ip-permission.user-id - The ID of an AWS account that has been granted
-	// permission.
-	//
-	//   owner-id - The AWS account ID of the owner of the security group.
-	//
-	//   tag-key - The key of a tag assigned to the security group.
-	//
-	//   tag-value - The value of a tag assigned to the security group.
-	//
-	//   vpc-id - The ID of the VPC specified when the security group was created.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more security group IDs. Required for security groups in a nondefault
-	// VPC.
-	//
-	// Default: Describes all your security groups.
-	GroupIds []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"`
-
-	// [EC2-Classic and default VPC only] One or more security group names. You
-	// can specify either the security group name or the security group ID. For
-	// security groups in a nondefault VPC, use the group-name filter to describe
-	// security groups by name.
-	//
-	// Default: Describes all your security groups.
-	GroupNames []*string `locationName:"GroupName" locationNameList:"GroupName" type:"list"`
-
-	metadataDescribeSecurityGroupsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSecurityGroupsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSecurityGroupsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSecurityGroupsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeSecurityGroupsOutput struct {
-	// Information about one or more security groups.
-	SecurityGroups []*SecurityGroup `locationName:"securityGroupInfo" locationNameList:"item" type:"list"`
-
-	metadataDescribeSecurityGroupsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSecurityGroupsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSecurityGroupsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSecurityGroupsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeSnapshotAttributeInput struct {
-	// The snapshot attribute you would like to view.
-	Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the EBS snapshot.
-	SnapshotId *string `type:"string" required:"true"`
-
-	metadataDescribeSnapshotAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSnapshotAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSnapshotAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSnapshotAttributeInput) GoString() string {
-	return s.String()
-}
-
-type DescribeSnapshotAttributeOutput struct {
-	// A list of permissions for creating volumes from the snapshot.
-	CreateVolumePermissions []*CreateVolumePermission `locationName:"createVolumePermission" locationNameList:"item" type:"list"`
-
-	// A list of product codes.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// The ID of the EBS snapshot.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	metadataDescribeSnapshotAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSnapshotAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSnapshotAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSnapshotAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeSnapshotsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   description - A description of the snapshot.
-	//
-	//   owner-alias - The AWS account alias (for example, amazon) that owns the
-	// snapshot.
-	//
-	//   owner-id - The ID of the AWS account that owns the snapshot.
-	//
-	//   progress - The progress of the snapshot, as a percentage (for example,
-	// 80%).
-	//
-	//   snapshot-id - The snapshot ID.
-	//
-	//   start-time - The time stamp when the snapshot was initiated.
-	//
-	//   status - The status of the snapshot (pending | completed | error).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   volume-id - The ID of the volume the snapshot is for.
-	//
-	//   volume-size - The size of the volume, in GiB.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of snapshot results returned by DescribeSnapshots in paginated
-	// output. When this parameter is used, DescribeSnapshots only returns MaxResults
-	// results in a single page along with a NextToken response element. The remaining
-	// results of the initial request can be seen by sending another DescribeSnapshots
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned. If this parameter is not used, then DescribeSnapshots returns
-	// all results. You cannot specify this parameter and the snapshot IDs parameter
-	// in the same request.
-	MaxResults *int64 `type:"integer"`
-
-	// The NextToken value returned from a previous paginated DescribeSnapshots
-	// request where MaxResults was used and the results exceeded the value of that
-	// parameter. Pagination continues from the end of the previous results that
-	// returned the NextToken value. This value is null when there are no more results
-	// to return.
-	NextToken *string `type:"string"`
-
-	// Returns the snapshots owned by the specified owner. Multiple owners can be
-	// specified.
-	OwnerIds []*string `locationName:"Owner" locationNameList:"Owner" type:"list"`
-
-	// One or more AWS accounts IDs that can create volumes from the snapshot.
-	RestorableByUserIds []*string `locationName:"RestorableBy" type:"list"`
-
-	// One or more snapshot IDs.
-	//
-	// Default: Describes snapshots for which you have launch permissions.
-	SnapshotIds []*string `locationName:"SnapshotId" locationNameList:"SnapshotId" type:"list"`
-
-	metadataDescribeSnapshotsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSnapshotsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSnapshotsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSnapshotsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeSnapshotsOutput struct {
-	// The NextToken value to include in a future DescribeSnapshots request. When
-	// the results of a DescribeSnapshots request exceed MaxResults, this value
-	// can be used to retrieve the next page of results. This value is null when
-	// there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// Information about the snapshots.
-	Snapshots []*Snapshot `locationName:"snapshotSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeSnapshotsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSnapshotsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSnapshotsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSnapshotsOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotDatafeedSubscription.
-type DescribeSpotDatafeedSubscriptionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDescribeSpotDatafeedSubscriptionInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotDatafeedSubscriptionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotDatafeedSubscriptionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotDatafeedSubscriptionInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotDatafeedSubscription.
-type DescribeSpotDatafeedSubscriptionOutput struct {
-	// The Spot instance data feed subscription.
-	SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"`
-
-	metadataDescribeSpotDatafeedSubscriptionOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotDatafeedSubscriptionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotDatafeedSubscriptionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotDatafeedSubscriptionOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotFleetInstances.
-type DescribeSpotFleetInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The maximum number of results to return in a single call. Specify a value
-	// between 1 and 1000. The default value is 1000. To retrieve the remaining
-	// results, make another call with the returned NextToken value.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token for the next set of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	metadataDescribeSpotFleetInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetInstancesInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotFleetInstances.
-type DescribeSpotFleetInstancesOutput struct {
-	// The running instances. Note that this list is refreshed periodically and
-	// might be out of date.
-	ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list" required:"true"`
-
-	// The token required to retrieve the next set of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	metadataDescribeSpotFleetInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotFleetRequestHistory.
-type DescribeSpotFleetRequestHistoryInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The type of events to describe. By default, all events are described.
-	EventType *string `locationName:"eventType" type:"string" enum:"EventType"`
-
-	// The maximum number of results to return in a single call. Specify a value
-	// between 1 and 1000. The default value is 1000. To retrieve the remaining
-	// results, make another call with the returned NextToken value.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token for the next set of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	// The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	metadataDescribeSpotFleetRequestHistoryInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetRequestHistoryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetRequestHistoryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetRequestHistoryInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotFleetRequestHistory.
-type DescribeSpotFleetRequestHistoryOutput struct {
-	// Information about the events in the history of the Spot fleet request.
-	HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list" required:"true"`
-
-	// The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	// All records up to this time were retrieved.
-	//
-	// If nextToken indicates that there are more results, this value is not present.
-	LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	// The token required to retrieve the next set of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	// The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	metadataDescribeSpotFleetRequestHistoryOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetRequestHistoryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetRequestHistoryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetRequestHistoryOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotFleetRequests.
-type DescribeSpotFleetRequestsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The maximum number of results to return in a single call. Specify a value
-	// between 1 and 1000. The default value is 1000. To retrieve the remaining
-	// results, make another call with the returned NextToken value.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token for the next set of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The IDs of the Spot fleet requests.
-	SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list"`
-
-	metadataDescribeSpotFleetRequestsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetRequestsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetRequestsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetRequestsInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotFleetRequests.
-type DescribeSpotFleetRequestsOutput struct {
-	// The token required to retrieve the next set of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// Information about the configuration of your Spot fleet.
-	SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list" required:"true"`
-
-	metadataDescribeSpotFleetRequestsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotFleetRequestsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotFleetRequestsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotFleetRequestsOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotInstanceRequests.
-type DescribeSpotInstanceRequestsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   availability-zone-group - The Availability Zone group.
-	//
-	//   create-time - The time stamp when the Spot instance request was created.
-	//
-	//   fault-code - The fault code related to the request.
-	//
-	//   fault-message - The fault message related to the request.
-	//
-	//   instance-id - The ID of the instance that fulfilled the request.
-	//
-	//   launch-group - The Spot instance launch group.
-	//
-	//   launch.block-device-mapping.delete-on-termination - Indicates whether
-	// the Amazon EBS volume is deleted on instance termination.
-	//
-	//   launch.block-device-mapping.device-name - The device name for the Amazon
-	// EBS volume (for example, /dev/sdh).
-	//
-	//   launch.block-device-mapping.snapshot-id - The ID of the snapshot used
-	// for the Amazon EBS volume.
-	//
-	//   launch.block-device-mapping.volume-size - The size of the Amazon EBS volume,
-	// in GiB.
-	//
-	//   launch.block-device-mapping.volume-type - The type of the Amazon EBS volume
-	// (gp2 | standard | io1).
-	//
-	//   launch.group-id - The security group for the instance.
-	//
-	//   launch.image-id - The ID of the AMI.
-	//
-	//   launch.instance-type - The type of instance (for example, m3.medium).
-	//
-	//   launch.kernel-id - The kernel ID.
-	//
-	//   launch.key-name - The name of the key pair the instance launched with.
-	//
-	//   launch.monitoring-enabled - Whether monitoring is enabled for the Spot
-	// instance.
-	//
-	//   launch.ramdisk-id - The RAM disk ID.
-	//
-	//   network-interface.network-interface-id - The ID of the network interface.
-	//
-	//   network-interface.device-index - The index of the device for the network
-	// interface attachment on the instance.
-	//
-	//   network-interface.subnet-id - The ID of the subnet for the instance.
-	//
-	//   network-interface.description - A description of the network interface.
-	//
-	//   network-interface.private-ip-address - The primary private IP address
-	// of the network interface.
-	//
-	//   network-interface.delete-on-termination - Indicates whether the network
-	// interface is deleted when the instance is terminated.
-	//
-	//   network-interface.group-id - The ID of the security group associated with
-	// the network interface.
-	//
-	//   network-interface.group-name - The name of the security group associated
-	// with the network interface.
-	//
-	//   network-interface.addresses.primary - Indicates whether the IP address
-	// is the primary private IP address.
-	//
-	//   product-description - The product description associated with the instance
-	// (Linux/UNIX | Windows).
-	//
-	//   spot-instance-request-id - The Spot instance request ID.
-	//
-	//   spot-price - The maximum hourly price for any Spot instance launched to
-	// fulfill the request.
-	//
-	//   state - The state of the Spot instance request (open | active | closed
-	// | cancelled | failed). Spot bid status information can help you track your
-	// Amazon EC2 Spot instance requests. For more information, see Spot Bid Status
-	// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	//
-	//   status-code - The short code describing the most recent evaluation of
-	// your Spot instance request.
-	//
-	//   status-message - The message explaining the status of the Spot instance
-	// request.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   type - The type of Spot instance request (one-time | persistent).
-	//
-	//   launched-availability-zone - The Availability Zone in which the bid is
-	// launched.
-	//
-	//   valid-from - The start date of the request.
-	//
-	//   valid-until - The end date of the request.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more Spot instance request IDs.
-	SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list"`
-
-	metadataDescribeSpotInstanceRequestsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotInstanceRequestsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotInstanceRequestsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotInstanceRequestsInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotInstanceRequests.
-type DescribeSpotInstanceRequestsOutput struct {
-	// One or more Spot instance requests.
-	SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeSpotInstanceRequestsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotInstanceRequestsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotInstanceRequestsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotInstanceRequestsOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for DescribeSpotPriceHistory.
-type DescribeSpotPriceHistoryInput struct {
-	// Filters the results by the specified Availability Zone.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The date and time, up to the current date, from which to stop retrieving
-	// the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// One or more filters.
-	//
-	//   availability-zone - The Availability Zone for which prices should be returned.
-	//
-	//   instance-type - The type of instance (for example, m3.medium).
-	//
-	//   product-description - The product description for the Spot price (Linux/UNIX
-	// | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC)
-	// | Windows (Amazon VPC)).
-	//
-	//   spot-price - The Spot price. The value must match exactly (or use wildcards;
-	// greater than or less than comparison is not supported).
-	//
-	//   timestamp - The timestamp of the Spot price history, in UTC format (for
-	// example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). Greater
-	// than or less than comparison is not supported.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// Filters the results by the specified instance types.
-	InstanceTypes []*string `locationName:"InstanceType" type:"list"`
-
-	// The maximum number of results to return in a single call. Specify a value
-	// between 1 and 1000. The default value is 1000. To retrieve the remaining
-	// results, make another call with the returned NextToken value.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token for the next set of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// Filters the results by the specified basic product descriptions.
-	ProductDescriptions []*string `locationName:"ProductDescription" type:"list"`
-
-	// The date and time, up to the past 90 days, from which to start retrieving
-	// the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataDescribeSpotPriceHistoryInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotPriceHistoryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotPriceHistoryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotPriceHistoryInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of DescribeSpotPriceHistory.
-type DescribeSpotPriceHistoryOutput struct {
-	// The token required to retrieve the next set of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// The historical Spot prices.
-	SpotPriceHistory []*SpotPrice `locationName:"spotPriceHistorySet" locationNameList:"item" type:"list"`
-
-	metadataDescribeSpotPriceHistoryOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSpotPriceHistoryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSpotPriceHistoryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSpotPriceHistoryOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeSubnetsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   availabilityZone - The Availability Zone for the subnet. You can also
-	// use availability-zone as the filter name.
-	//
-	//   available-ip-address-count - The number of IP addresses in the subnet
-	// that are available.
-	//
-	//   cidrBlock - The CIDR block of the subnet. The CIDR block you specify must
-	// exactly match the subnet's CIDR block for information to be returned for
-	// the subnet. You can also use cidr or cidr-block as the filter names.
-	//
-	//   defaultForAz - Indicates whether this is the default subnet for the Availability
-	// Zone. You can also use default-for-az as the filter name.
-	//
-	//   state - The state of the subnet (pending | available).
-	//
-	//   subnet-id - The ID of the subnet.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC for the subnet.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more subnet IDs.
-	//
-	// Default: Describes all your subnets.
-	SubnetIds []*string `locationName:"SubnetId" locationNameList:"SubnetId" type:"list"`
-
-	metadataDescribeSubnetsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSubnetsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSubnetsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSubnetsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeSubnetsOutput struct {
-	// Information about one or more subnets.
-	Subnets []*Subnet `locationName:"subnetSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeSubnetsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeSubnetsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeSubnetsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeSubnetsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeTagsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   key - The tag key.
-	//
-	//   resource-id - The resource ID.
-	//
-	//   resource-type - The resource type (customer-gateway | dhcp-options | image
-	// | instance | internet-gateway | network-acl | network-interface | reserved-instances
-	// | route-table | security-group | snapshot | spot-instances-request | subnet
-	// | volume | vpc | vpn-connection | vpn-gateway).
-	//
-	//   value - The tag value.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of results to return for the request in a single page.
-	// The remaining results of the initial request can be seen by sending another
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The token to retrieve the next page of results.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	metadataDescribeTagsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeTagsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeTagsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeTagsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeTagsOutput struct {
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return..
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// A list of tags.
-	Tags []*TagDescription `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeTagsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeTagsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeTagsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeTagsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumeAttributeInput struct {
-	// The instance attribute.
-	Attribute *string `type:"string" enum:"VolumeAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the volume.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataDescribeVolumeAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumeAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumeAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumeAttributeInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumeAttributeOutput struct {
-	// The state of autoEnableIO attribute.
-	AutoEnableIO *AttributeBooleanValue `locationName:"autoEnableIO" type:"structure"`
-
-	// A list of product codes.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// The ID of the volume.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	metadataDescribeVolumeAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumeAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumeAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumeAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumeStatusInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   action.code - The action code for the event (for example, enable-volume-io).
-	//
-	//   action.description - A description of the action.
-	//
-	//   action.event-id - The event ID associated with the action.
-	//
-	//   availability-zone - The Availability Zone of the instance.
-	//
-	//   event.description - A description of the event.
-	//
-	//   event.event-id - The event ID.
-	//
-	//   event.event-type - The event type (for io-enabled: passed | failed; for
-	// io-performance: io-performance:degraded | io-performance:severely-degraded
-	// | io-performance:stalled).
-	//
-	//   event.not-after - The latest end time for the event.
-	//
-	//   event.not-before - The earliest start time for the event.
-	//
-	//   volume-status.details-name - The cause for volume-status.status (io-enabled
-	// | io-performance).
-	//
-	//   volume-status.details-status - The status of volume-status.details-name
-	// (for io-enabled: passed | failed; for io-performance: normal | degraded |
-	// severely-degraded | stalled).
-	//
-	//   volume-status.status - The status of the volume (ok | impaired | warning
-	// | insufficient-data).
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of volume results returned by DescribeVolumeStatus in
-	// paginated output. When this parameter is used, the request only returns MaxResults
-	// results in a single page along with a NextToken response element. The remaining
-	// results of the initial request can be seen by sending another request with
-	// the returned NextToken value. This value can be between 5 and 1000; if MaxResults
-	// is given a value larger than 1000, only 1000 results are returned. If this
-	// parameter is not used, then DescribeVolumeStatus returns all results. You
-	// cannot specify this parameter and the volume IDs parameter in the same request.
-	MaxResults *int64 `type:"integer"`
-
-	// The NextToken value to include in a future DescribeVolumeStatus request.
-	// When the results of the request exceed MaxResults, this value can be used
-	// to retrieve the next page of results. This value is null when there are no
-	// more results to return.
-	NextToken *string `type:"string"`
-
-	// One or more volume IDs.
-	//
-	// Default: Describes all your volumes.
-	VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"`
-
-	metadataDescribeVolumeStatusInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumeStatusInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumeStatusInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumeStatusInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumeStatusOutput struct {
-	// The token to use to retrieve the next page of results. This value is null
-	// when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// A list of volumes.
-	VolumeStatuses []*VolumeStatusItem `locationName:"volumeStatusSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVolumeStatusOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumeStatusOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumeStatusOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumeStatusOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   attachment.attach-time - The time stamp when the attachment initiated.
-	//
-	//   attachment.delete-on-termination - Whether the volume is deleted on instance
-	// termination.
-	//
-	//   attachment.device - The device name that is exposed to the instance (for
-	// example, /dev/sda1).
-	//
-	//   attachment.instance-id - The ID of the instance the volume is attached
-	// to.
-	//
-	//   attachment.status - The attachment state (attaching | attached | detaching
-	// | detached).
-	//
-	//   availability-zone - The Availability Zone in which the volume was created.
-	//
-	//   create-time - The time stamp when the volume was created.
-	//
-	//   encrypted - The encryption status of the volume.
-	//
-	//   size - The size of the volume, in GiB.
-	//
-	//   snapshot-id - The snapshot from which the volume was created.
-	//
-	//   status - The status of the volume (creating | available | in-use | deleting
-	// | deleted | error).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   volume-id - The volume ID.
-	//
-	//   volume-type - The Amazon EBS volume type. This can be gp2 for General
-	// Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard
-	// for Magnetic volumes.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of volume results returned by DescribeVolumes in paginated
-	// output. When this parameter is used, DescribeVolumes only returns MaxResults
-	// results in a single page along with a NextToken response element. The remaining
-	// results of the initial request can be seen by sending another DescribeVolumes
-	// request with the returned NextToken value. This value can be between 5 and
-	// 1000; if MaxResults is given a value larger than 1000, only 1000 results
-	// are returned. If this parameter is not used, then DescribeVolumes returns
-	// all results. You cannot specify this parameter and the volume IDs parameter
-	// in the same request.
-	MaxResults *int64 `locationName:"maxResults" type:"integer"`
-
-	// The NextToken value returned from a previous paginated DescribeVolumes request
-	// where MaxResults was used and the results exceeded the value of that parameter.
-	// Pagination continues from the end of the previous results that returned the
-	// NextToken value. This value is null when there are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// One or more volume IDs.
-	VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"`
-
-	metadataDescribeVolumesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVolumesOutput struct {
-	// The NextToken value to include in a future DescribeVolumes request. When
-	// the results of a DescribeVolumes request exceed MaxResults, this value can
-	// be used to retrieve the next page of results. This value is null when there
-	// are no more results to return.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// Information about the volumes.
-	Volumes []*Volume `locationName:"volumeSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVolumesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVolumesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVolumesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVolumesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcAttributeInput struct {
-	// The VPC attribute.
-	Attribute *string `type:"string" enum:"VpcAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	metadataDescribeVpcAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcAttributeInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcAttributeOutput struct {
-	// Indicates whether the instances launched in the VPC get DNS hostnames. If
-	// this attribute is true, instances in the VPC get DNS hostnames; otherwise,
-	// they do not.
-	EnableDnsHostnames *AttributeBooleanValue `locationName:"enableDnsHostnames" type:"structure"`
-
-	// Indicates whether DNS resolution is enabled for the VPC. If this attribute
-	// is true, the Amazon DNS server resolves DNS hostnames for your instances
-	// to their corresponding IP addresses; otherwise, it does not.
-	EnableDnsSupport *AttributeBooleanValue `locationName:"enableDnsSupport" type:"structure"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataDescribeVpcAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcClassicLinkInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   is-classic-link-enabled - Whether the VPC is enabled for ClassicLink (true
-	// | false).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more VPCs for which you want to describe the ClassicLink status.
-	VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"`
-
-	metadataDescribeVpcClassicLinkInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcClassicLinkInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcClassicLinkInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcClassicLinkInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcClassicLinkOutput struct {
-	// The ClassicLink status of one or more VPCs.
-	Vpcs []*VpcClassicLink `locationName:"vpcSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcClassicLinkOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcClassicLinkOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcClassicLinkOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcClassicLinkOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcEndpointServicesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// The maximum number of items to return for this request. The request returns
-	// a token that you can specify in a subsequent call to get the next set of
-	// results.
-	//
-	// Constraint: If the value is greater than 1000, we return only 1000 items.
-	MaxResults *int64 `type:"integer"`
-
-	// The token for the next set of items to return. (You received this token from
-	// a prior call.)
-	NextToken *string `type:"string"`
-
-	metadataDescribeVpcEndpointServicesInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcEndpointServicesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcEndpointServicesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcEndpointServicesInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcEndpointServicesOutput struct {
-	// The token to use when requesting the next set of items. If there are no additional
-	// items to return, the string is empty.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// A list of supported AWS services.
-	ServiceNames []*string `locationName:"serviceNameSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcEndpointServicesOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcEndpointServicesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcEndpointServicesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcEndpointServicesOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcEndpointsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// One or more filters.
-	//
-	//   service-name: The name of the AWS service.
-	//
-	//   vpc-id: The ID of the VPC in which the endpoint resides.
-	//
-	//   vpc-endpoint-id: The ID of the endpoint.
-	//
-	//   vpc-endpoint-state: The state of the endpoint. (pending | available |
-	// deleting | deleted)
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// The maximum number of items to return for this request. The request returns
-	// a token that you can specify in a subsequent call to get the next set of
-	// results.
-	//
-	// Constraint: If the value is greater than 1000, we return only 1000 items.
-	MaxResults *int64 `type:"integer"`
-
-	// The token for the next set of items to return. (You received this token from
-	// a prior call.)
-	NextToken *string `type:"string"`
-
-	// One or more endpoint IDs.
-	VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcEndpointsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcEndpointsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcEndpointsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcEndpointsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcEndpointsOutput struct {
-	// The token to use when requesting the next set of items. If there are no additional
-	// items to return, the string is empty.
-	NextToken *string `locationName:"nextToken" type:"string"`
-
-	// Information about the endpoints.
-	VpcEndpoints []*VpcEndpoint `locationName:"vpcEndpointSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcEndpointsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcEndpointsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcEndpointsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcEndpointsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcPeeringConnectionsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   accepter-vpc-info.cidr-block - The CIDR block of the peer VPC.
-	//
-	//   accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer
-	// VPC.
-	//
-	//   accepter-vpc-info.vpc-id - The ID of the peer VPC.
-	//
-	//   expiration-time - The expiration date and time for the VPC peering connection.
-	//
-	//   requester-vpc-info.cidr-block - The CIDR block of the requester's VPC.
-	//
-	//   requester-vpc-info.owner-id - The AWS account ID of the owner of the requester
-	// VPC.
-	//
-	//   requester-vpc-info.vpc-id - The ID of the requester VPC.
-	//
-	//   status-code - The status of the VPC peering connection (pending-acceptance
-	// | failed | expired | provisioning | active | deleted | rejected).
-	//
-	//   status-message - A message that provides more information about the status
-	// of the VPC peering connection, if applicable.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-peering-connection-id - The ID of the VPC peering connection.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more VPC peering connection IDs.
-	//
-	// Default: Describes all your VPC peering connections.
-	VpcPeeringConnectionIds []*string `locationName:"VpcPeeringConnectionId" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcPeeringConnectionsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcPeeringConnectionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcPeeringConnectionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcPeeringConnectionsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcPeeringConnectionsOutput struct {
-	// Information about the VPC peering connections.
-	VpcPeeringConnections []*VpcPeeringConnection `locationName:"vpcPeeringConnectionSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcPeeringConnectionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcPeeringConnectionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcPeeringConnectionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcPeeringConnectionsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   cidr - The CIDR block of the VPC. The CIDR block you specify must exactly
-	// match the VPC's CIDR block for information to be returned for the VPC. Must
-	// contain the slash followed by one or two digits (for example, /28).
-	//
-	//   dhcp-options-id - The ID of a set of DHCP options.
-	//
-	//   isDefault - Indicates whether the VPC is the default VPC.
-	//
-	//   state - The state of the VPC (pending | available).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   vpc-id - The ID of the VPC.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more VPC IDs.
-	//
-	// Default: Describes all your VPCs.
-	VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"`
-
-	metadataDescribeVpcsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpcsOutput struct {
-	// Information about one or more VPCs.
-	Vpcs []*Vpc `locationName:"vpcSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpcsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpcsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpcsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpcsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpnConnectionsInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   customer-gateway-configuration - The configuration information for the
-	// customer gateway.
-	//
-	//   customer-gateway-id - The ID of a customer gateway associated with the
-	// VPN connection.
-	//
-	//   state - The state of the VPN connection (pending | available | deleting
-	// | deleted).
-	//
-	//   option.static-routes-only - Indicates whether the connection has static
-	// routes only. Used for devices that do not support Border Gateway Protocol
-	// (BGP).
-	//
-	//   route.destination-cidr-block - The destination CIDR block. This corresponds
-	// to the subnet used in a customer data center.
-	//
-	//   bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP
-	// device.
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   type - The type of VPN connection. Currently the only supported type is
-	// ipsec.1.
-	//
-	//   vpn-connection-id - The ID of the VPN connection.
-	//
-	//   vpn-gateway-id - The ID of a virtual private gateway associated with the
-	// VPN connection.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more VPN connection IDs.
-	//
-	// Default: Describes your VPN connections.
-	VpnConnectionIds []*string `locationName:"VpnConnectionId" locationNameList:"VpnConnectionId" type:"list"`
-
-	metadataDescribeVpnConnectionsInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpnConnectionsInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpnConnectionsInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpnConnectionsInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpnConnectionsOutput struct {
-	// Information about one or more VPN connections.
-	VpnConnections []*VpnConnection `locationName:"vpnConnectionSet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpnConnectionsOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpnConnectionsOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpnConnectionsOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpnConnectionsOutput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpnGatewaysInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more filters.
-	//
-	//   attachment.state - The current state of the attachment between the gateway
-	// and the VPC (attaching | attached | detaching | detached).
-	//
-	//   attachment.vpc-id - The ID of an attached VPC.
-	//
-	//   availability-zone - The Availability Zone for the virtual private gateway.
-	//
-	//   state - The state of the virtual private gateway (pending | available
-	// | deleting | deleted).
-	//
-	//   tag:key=value - The key/value combination of a tag assigned to the resource.
-	//
-	//   tag-key - The key of a tag assigned to the resource. This filter is independent
-	// of the tag-value filter. For example, if you use both the filter "tag-key=Purpose"
-	// and the filter "tag-value=X", you get any resources assigned both the tag
-	// key Purpose (regardless of what the tag's value is), and the tag value X
-	// (regardless of what the tag's key is). If you want to list only resources
-	// where Purpose is X, see the tag:key=value filter.
-	//
-	//   tag-value - The value of a tag assigned to the resource. This filter is
-	// independent of the tag-key filter.
-	//
-	//   type - The type of virtual private gateway. Currently the only supported
-	// type is ipsec.1.
-	//
-	//   vpn-gateway-id - The ID of the virtual private gateway.
-	Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
-
-	// One or more virtual private gateway IDs.
-	//
-	// Default: Describes all your virtual private gateways.
-	VpnGatewayIds []*string `locationName:"VpnGatewayId" locationNameList:"VpnGatewayId" type:"list"`
-
-	metadataDescribeVpnGatewaysInput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpnGatewaysInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpnGatewaysInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpnGatewaysInput) GoString() string {
-	return s.String()
-}
-
-type DescribeVpnGatewaysOutput struct {
-	// Information about one or more virtual private gateways.
-	VpnGateways []*VpnGateway `locationName:"vpnGatewaySet" locationNameList:"item" type:"list"`
-
-	metadataDescribeVpnGatewaysOutput `json:"-" xml:"-"`
-}
-
-type metadataDescribeVpnGatewaysOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DescribeVpnGatewaysOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DescribeVpnGatewaysOutput) GoString() string {
-	return s.String()
-}
-
-type DetachClassicLinkVpcInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance to unlink from the VPC.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// The ID of the VPC to which the instance is linked.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataDetachClassicLinkVpcInput `json:"-" xml:"-"`
-}
-
-type metadataDetachClassicLinkVpcInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachClassicLinkVpcInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachClassicLinkVpcInput) GoString() string {
-	return s.String()
-}
-
-type DetachClassicLinkVpcOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataDetachClassicLinkVpcOutput `json:"-" xml:"-"`
-}
-
-type metadataDetachClassicLinkVpcOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachClassicLinkVpcOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachClassicLinkVpcOutput) GoString() string {
-	return s.String()
-}
-
-type DetachInternetGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the Internet gateway.
-	InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataDetachInternetGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataDetachInternetGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachInternetGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachInternetGatewayInput) GoString() string {
-	return s.String()
-}
-
-type DetachInternetGatewayOutput struct {
-	metadataDetachInternetGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataDetachInternetGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachInternetGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachInternetGatewayOutput) GoString() string {
-	return s.String()
-}
-
-type DetachNetworkInterfaceInput struct {
-	// The ID of the attachment.
-	AttachmentId *string `locationName:"attachmentId" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Specifies whether to force a detachment.
-	Force *bool `locationName:"force" type:"boolean"`
-
-	metadataDetachNetworkInterfaceInput `json:"-" xml:"-"`
-}
-
-type metadataDetachNetworkInterfaceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachNetworkInterfaceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachNetworkInterfaceInput) GoString() string {
-	return s.String()
-}
-
-type DetachNetworkInterfaceOutput struct {
-	metadataDetachNetworkInterfaceOutput `json:"-" xml:"-"`
-}
-
-type metadataDetachNetworkInterfaceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachNetworkInterfaceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachNetworkInterfaceOutput) GoString() string {
-	return s.String()
-}
-
-type DetachVolumeInput struct {
-	// The device name.
-	Device *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Forces detachment if the previous detachment attempt did not occur cleanly
-	// (for example, logging into an instance, unmounting the volume, and detaching
-	// normally). This option can lead to data loss or a corrupted file system.
-	// Use this option only as a last resort to detach a volume from a failed instance.
-	// The instance won't have an opportunity to flush file system caches or file
-	// system metadata. If you use this option, you must perform file system check
-	// and repair procedures.
-	Force *bool `type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `type:"string"`
-
-	// The ID of the volume.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataDetachVolumeInput `json:"-" xml:"-"`
-}
-
-type metadataDetachVolumeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachVolumeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachVolumeInput) GoString() string {
-	return s.String()
-}
-
-type DetachVpnGatewayInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `type:"string" required:"true"`
-
-	// The ID of the virtual private gateway.
-	VpnGatewayId *string `type:"string" required:"true"`
-
-	metadataDetachVpnGatewayInput `json:"-" xml:"-"`
-}
-
-type metadataDetachVpnGatewayInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachVpnGatewayInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachVpnGatewayInput) GoString() string {
-	return s.String()
-}
-
-type DetachVpnGatewayOutput struct {
-	metadataDetachVpnGatewayOutput `json:"-" xml:"-"`
-}
-
-type metadataDetachVpnGatewayOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DetachVpnGatewayOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DetachVpnGatewayOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a DHCP configuration option.
-type DhcpConfiguration struct {
-	// The name of a DHCP option.
-	Key *string `locationName:"key" type:"string"`
-
-	// One or more values for the DHCP option.
-	Values []*AttributeValue `locationName:"valueSet" locationNameList:"item" type:"list"`
-
-	metadataDhcpConfiguration `json:"-" xml:"-"`
-}
-
-type metadataDhcpConfiguration struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DhcpConfiguration) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DhcpConfiguration) GoString() string {
-	return s.String()
-}
-
-// Describes a set of DHCP options.
-type DhcpOptions struct {
-	// One or more DHCP options in the set.
-	DhcpConfigurations []*DhcpConfiguration `locationName:"dhcpConfigurationSet" locationNameList:"item" type:"list"`
-
-	// The ID of the set of DHCP options.
-	DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"`
-
-	// Any tags assigned to the DHCP options set.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	metadataDhcpOptions `json:"-" xml:"-"`
-}
-
-type metadataDhcpOptions struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DhcpOptions) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DhcpOptions) GoString() string {
-	return s.String()
-}
-
-type DisableVgwRoutePropagationInput struct {
-	// The ID of the virtual private gateway.
-	GatewayId *string `type:"string" required:"true"`
-
-	// The ID of the route table.
-	RouteTableId *string `type:"string" required:"true"`
-
-	metadataDisableVgwRoutePropagationInput `json:"-" xml:"-"`
-}
-
-type metadataDisableVgwRoutePropagationInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableVgwRoutePropagationInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableVgwRoutePropagationInput) GoString() string {
-	return s.String()
-}
-
-type DisableVgwRoutePropagationOutput struct {
-	metadataDisableVgwRoutePropagationOutput `json:"-" xml:"-"`
-}
-
-type metadataDisableVgwRoutePropagationOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableVgwRoutePropagationOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableVgwRoutePropagationOutput) GoString() string {
-	return s.String()
-}
-
-type DisableVpcClassicLinkInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataDisableVpcClassicLinkInput `json:"-" xml:"-"`
-}
-
-type metadataDisableVpcClassicLinkInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableVpcClassicLinkInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableVpcClassicLinkInput) GoString() string {
-	return s.String()
-}
-
-type DisableVpcClassicLinkOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataDisableVpcClassicLinkOutput `json:"-" xml:"-"`
-}
-
-type metadataDisableVpcClassicLinkOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisableVpcClassicLinkOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisableVpcClassicLinkOutput) GoString() string {
-	return s.String()
-}
-
-type DisassociateAddressInput struct {
-	// [EC2-VPC] The association ID. Required for EC2-VPC.
-	AssociationId *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// [EC2-Classic] The Elastic IP address. Required for EC2-Classic.
-	PublicIp *string `type:"string"`
-
-	metadataDisassociateAddressInput `json:"-" xml:"-"`
-}
-
-type metadataDisassociateAddressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisassociateAddressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisassociateAddressInput) GoString() string {
-	return s.String()
-}
-
-type DisassociateAddressOutput struct {
-	metadataDisassociateAddressOutput `json:"-" xml:"-"`
-}
-
-type metadataDisassociateAddressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisassociateAddressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisassociateAddressOutput) GoString() string {
-	return s.String()
-}
-
-type DisassociateRouteTableInput struct {
-	// The association ID representing the current association between the route
-	// table and subnet.
-	AssociationId *string `locationName:"associationId" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	metadataDisassociateRouteTableInput `json:"-" xml:"-"`
-}
-
-type metadataDisassociateRouteTableInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisassociateRouteTableInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisassociateRouteTableInput) GoString() string {
-	return s.String()
-}
-
-type DisassociateRouteTableOutput struct {
-	metadataDisassociateRouteTableOutput `json:"-" xml:"-"`
-}
-
-type metadataDisassociateRouteTableOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DisassociateRouteTableOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DisassociateRouteTableOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a disk image.
-type DiskImage struct {
-	// A description of the disk image.
-	Description *string `type:"string"`
-
-	// Information about the disk image.
-	Image *DiskImageDetail `type:"structure"`
-
-	// Information about the volume.
-	Volume *VolumeDetail `type:"structure"`
-
-	metadataDiskImage `json:"-" xml:"-"`
-}
-
-type metadataDiskImage struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DiskImage) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DiskImage) GoString() string {
-	return s.String()
-}
-
-// Describes a disk image.
-type DiskImageDescription struct {
-	// The checksum computed for the disk image.
-	Checksum *string `locationName:"checksum" type:"string"`
-
-	// The disk image format.
-	Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"`
-
-	// A presigned URL for the import manifest stored in Amazon S3. For information
-	// about creating a presigned URL for an Amazon S3 object, read the "Query String
-	// Request Authentication Alternative" section of the Authenticating REST Requests
-	// (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
-	// topic in the Amazon Simple Storage Service Developer Guide.
-	ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"`
-
-	// The size of the disk image, in GiB.
-	Size *int64 `locationName:"size" type:"long" required:"true"`
-
-	metadataDiskImageDescription `json:"-" xml:"-"`
-}
-
-type metadataDiskImageDescription struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DiskImageDescription) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DiskImageDescription) GoString() string {
-	return s.String()
-}
-
-// Describes a disk image.
-type DiskImageDetail struct {
-	// The size of the disk image, in GiB.
-	Bytes *int64 `locationName:"bytes" type:"long" required:"true"`
-
-	// The disk image format.
-	Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"`
-
-	// A presigned URL for the import manifest stored in Amazon S3 and presented
-	// here as an Amazon S3 presigned URL. For information about creating a presigned
-	// URL for an Amazon S3 object, read the "Query String Request Authentication
-	// Alternative" section of the Authenticating REST Requests (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
-	// topic in the Amazon Simple Storage Service Developer Guide.
-	ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"`
-
-	metadataDiskImageDetail `json:"-" xml:"-"`
-}
-
-type metadataDiskImageDetail struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DiskImageDetail) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DiskImageDetail) GoString() string {
-	return s.String()
-}
-
-// Describes a disk image volume.
-type DiskImageVolumeDescription struct {
-	// The volume identifier.
-	Id *string `locationName:"id" type:"string" required:"true"`
-
-	// The size of the volume, in GiB.
-	Size *int64 `locationName:"size" type:"long"`
-
-	metadataDiskImageVolumeDescription `json:"-" xml:"-"`
-}
-
-type metadataDiskImageVolumeDescription struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s DiskImageVolumeDescription) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s DiskImageVolumeDescription) GoString() string {
-	return s.String()
-}
-
-// Describes a block device for an EBS volume.
-type EbsBlockDevice struct {
-	// Indicates whether the EBS volume is deleted on instance termination.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS volumes
-	// may only be attached to instances that support Amazon EBS encryption.
-	Encrypted *bool `locationName:"encrypted" type:"boolean"`
-
-	// The number of I/O operations per second (IOPS) that the volume supports.
-	// For Provisioned IOPS (SSD) volumes, this represents the number of IOPS that
-	// are provisioned for the volume. For General Purpose (SSD) volumes, this represents
-	// the baseline performance of the volume and the rate at which the volume accumulates
-	// I/O credits for bursting. For more information on General Purpose (SSD) baseline
-	// performance, I/O credits, and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	//
-	// Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
-	// 3 to 10000 for General Purpose (SSD) volumes.
-	//
-	// Condition: This parameter is required for requests to create io1 volumes;
-	// it is not used in requests to create standard or gp2 volumes.
-	Iops *int64 `locationName:"iops" type:"integer"`
-
-	// The ID of the snapshot.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	// The size of the volume, in GiB.
-	//
-	// Constraints: 1-1024 for standard volumes, 1-16384 for gp2 volumes, and 4-16384
-	// for io1 volumes. If you specify a snapshot, the volume size must be equal
-	// to or larger than the snapshot size.
-	//
-	// Default: If you're creating the volume from a snapshot and don't specify
-	// a volume size, the default is the snapshot size.
-	VolumeSize *int64 `locationName:"volumeSize" type:"integer"`
-
-	// The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned
-	// IOPS (SSD) volumes, and standard for Magnetic volumes.
-	//
-	// Default: standard
-	VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"`
-
-	metadataEbsBlockDevice `json:"-" xml:"-"`
-}
-
-type metadataEbsBlockDevice struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EbsBlockDevice) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EbsBlockDevice) GoString() string {
-	return s.String()
-}
-
-// Describes a parameter used to set up an EBS volume in a block device mapping.
-type EbsInstanceBlockDevice struct {
-	// The time stamp when the attachment initiated.
-	AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// Indicates whether the volume is deleted on instance termination.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The attachment state.
-	Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"`
-
-	// The ID of the EBS volume.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	metadataEbsInstanceBlockDevice `json:"-" xml:"-"`
-}
-
-type metadataEbsInstanceBlockDevice struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EbsInstanceBlockDevice) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EbsInstanceBlockDevice) GoString() string {
-	return s.String()
-}
-
-type EbsInstanceBlockDeviceSpecification struct {
-	// Indicates whether the volume is deleted on instance termination.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The ID of the EBS volume.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	metadataEbsInstanceBlockDeviceSpecification `json:"-" xml:"-"`
-}
-
-type metadataEbsInstanceBlockDeviceSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EbsInstanceBlockDeviceSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EbsInstanceBlockDeviceSpecification) GoString() string {
-	return s.String()
-}
-
-type EnableVgwRoutePropagationInput struct {
-	// The ID of the virtual private gateway.
-	GatewayId *string `type:"string" required:"true"`
-
-	// The ID of the route table.
-	RouteTableId *string `type:"string" required:"true"`
-
-	metadataEnableVgwRoutePropagationInput `json:"-" xml:"-"`
-}
-
-type metadataEnableVgwRoutePropagationInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVgwRoutePropagationInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVgwRoutePropagationInput) GoString() string {
-	return s.String()
-}
-
-type EnableVgwRoutePropagationOutput struct {
-	metadataEnableVgwRoutePropagationOutput `json:"-" xml:"-"`
-}
-
-type metadataEnableVgwRoutePropagationOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVgwRoutePropagationOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVgwRoutePropagationOutput) GoString() string {
-	return s.String()
-}
-
-type EnableVolumeIOInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the volume.
-	VolumeId *string `locationName:"volumeId" type:"string" required:"true"`
-
-	metadataEnableVolumeIOInput `json:"-" xml:"-"`
-}
-
-type metadataEnableVolumeIOInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVolumeIOInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVolumeIOInput) GoString() string {
-	return s.String()
-}
-
-type EnableVolumeIOOutput struct {
-	metadataEnableVolumeIOOutput `json:"-" xml:"-"`
-}
-
-type metadataEnableVolumeIOOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVolumeIOOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVolumeIOOutput) GoString() string {
-	return s.String()
-}
-
-type EnableVpcClassicLinkInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataEnableVpcClassicLinkInput `json:"-" xml:"-"`
-}
-
-type metadataEnableVpcClassicLinkInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVpcClassicLinkInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVpcClassicLinkInput) GoString() string {
-	return s.String()
-}
-
-type EnableVpcClassicLinkOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataEnableVpcClassicLinkOutput `json:"-" xml:"-"`
-}
-
-type metadataEnableVpcClassicLinkOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EnableVpcClassicLinkOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EnableVpcClassicLinkOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot fleet event.
-type EventInformation struct {
-	// The description of the event.
-	EventDescription *string `locationName:"eventDescription" type:"string"`
-
-	// The event.
-	//
-	// The following are the error events.
-	//
-	//   iamFleetRoleInvalid - The Spot fleet did not have the required permissions
-	// either to launch or terminate an instance.
-	//
-	//   launchSpecTemporarilyBlacklisted - The configuration is not valid and
-	// several attempts to launch instances have failed. For more information, see
-	// the description of the event.
-	//
-	//   spotFleetRequestConfigurationInvalid - The configuration is not valid.
-	// For more information, see the description of the event.
-	//
-	//   spotInstanceCountLimitExceeded - You've reached the limit on the number
-	// of Spot instances that you can launch.
-	//
-	//   The following are the fleetRequestChange events.
-	//
-	//   active - The Spot fleet has been validated and Amazon EC2 is attempting
-	// to maintain the target number of running Spot instances.
-	//
-	//   cancelled - The Spot fleet is canceled and has no running Spot instances.
-	// The Spot fleet will be deleted two days after its instances were terminated.
-	//
-	//   cancelled_running - The Spot fleet is canceled and will not launch additional
-	// Spot instances, but its existing Spot instances continue to run until they
-	// are interrupted or terminated.
-	//
-	//   cancelled_terminating - The Spot fleet is canceled and its Spot instances
-	// are terminating.
-	//
-	//   expired - The Spot fleet request has expired. A subsequent event indicates
-	// that the instances were terminated, if the request was created with TerminateInstancesWithExpiration
-	// set.
-	//
-	//   modify_in_progress - A request to modify the Spot fleet request was accepted
-	// and is in progress.
-	//
-	//   modify_successful - The Spot fleet request was modified.
-	//
-	//   price_update - The bid price for a launch configuration was adjusted because
-	// it was too high. This change is permanent.
-	//
-	//   submitted - The Spot fleet request is being evaluated and Amazon EC2 is
-	// preparing to launch the target number of Spot instances.
-	//
-	//   The following are the instanceChange events.
-	//
-	//   launched - A bid was fulfilled and a new instance was launched.
-	//
-	//   terminated - An instance was terminated by the user.
-	EventSubType *string `locationName:"eventSubType" type:"string"`
-
-	// The ID of the instance. This information is available only for instanceChange
-	// events.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	metadataEventInformation `json:"-" xml:"-"`
-}
-
-type metadataEventInformation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s EventInformation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s EventInformation) GoString() string {
-	return s.String()
-}
-
-// Describes an instance export task.
-type ExportTask struct {
-	// A description of the resource being exported.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of the export task.
-	ExportTaskId *string `locationName:"exportTaskId" type:"string"`
-
-	// Information about the export task.
-	ExportToS3Task *ExportToS3Task `locationName:"exportToS3" type:"structure"`
-
-	// Information about the instance to export.
-	InstanceExportDetails *InstanceExportDetails `locationName:"instanceExport" type:"structure"`
-
-	// The state of the export task.
-	State *string `locationName:"state" type:"string" enum:"ExportTaskState"`
-
-	// The status message related to the export task.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	metadataExportTask `json:"-" xml:"-"`
-}
-
-type metadataExportTask struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ExportTask) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ExportTask) GoString() string {
-	return s.String()
-}
-
-// Describes the format and location for an instance export task.
-type ExportToS3Task struct {
-	// The container format used to combine disk images with metadata (such as OVF).
-	// If absent, only the disk image is exported.
-	ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"`
-
-	// The format for the exported image.
-	DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"`
-
-	// The S3 bucket for the destination image. The destination bucket must exist
-	// and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com.
-	S3Bucket *string `locationName:"s3Bucket" type:"string"`
-
-	// The encryption key for your S3 bucket.
-	S3Key *string `locationName:"s3Key" type:"string"`
-
-	metadataExportToS3Task `json:"-" xml:"-"`
-}
-
-type metadataExportToS3Task struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ExportToS3Task) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ExportToS3Task) GoString() string {
-	return s.String()
-}
-
-// Describes an instance export task.
-type ExportToS3TaskSpecification struct {
-	// The container format used to combine disk images with metadata (such as OVF).
-	// If absent, only the disk image is exported.
-	ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"`
-
-	// The format for the exported image.
-	DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"`
-
-	// The S3 bucket for the destination image. The destination bucket must exist
-	// and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com.
-	S3Bucket *string `locationName:"s3Bucket" type:"string"`
-
-	// The image is written to a single object in the S3 bucket at the S3 key s3prefix
-	// + exportTaskId + '.' + diskImageFormat.
-	S3Prefix *string `locationName:"s3Prefix" type:"string"`
-
-	metadataExportToS3TaskSpecification `json:"-" xml:"-"`
-}
-
-type metadataExportToS3TaskSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ExportToS3TaskSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ExportToS3TaskSpecification) GoString() string {
-	return s.String()
-}
-
-// A filter name and value pair that is used to return a more specific list
-// of results. Filters can be used to match a set of resources by various criteria,
-// such as tags, attributes, or IDs.
-type Filter struct {
-	// The name of the filter. Filter names are case-sensitive.
-	Name *string `type:"string"`
-
-	// One or more filter values. Filter values are case-sensitive.
-	Values []*string `locationName:"Value" locationNameList:"item" type:"list"`
-
-	metadataFilter `json:"-" xml:"-"`
-}
-
-type metadataFilter struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Filter) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Filter) GoString() string {
-	return s.String()
-}
-
-// Describes a flow log.
-type FlowLog struct {
-	// The date and time the flow log was created.
-	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// Information about the error that occurred. Rate limited indicates that CloudWatch
-	// logs throttling has been applied for one or more network interfaces. Access
-	// error indicates that the IAM role associated with the flow log does not have
-	// sufficient permissions to publish to CloudWatch Logs. Unknown error indicates
-	// an internal error.
-	DeliverLogsErrorMessage *string `locationName:"deliverLogsErrorMessage" type:"string"`
-
-	// The ARN of the IAM role that posts logs to CloudWatch Logs.
-	DeliverLogsPermissionArn *string `locationName:"deliverLogsPermissionArn" type:"string"`
-
-	// The status of the logs delivery (SUCCESS | FAILED).
-	DeliverLogsStatus *string `locationName:"deliverLogsStatus" type:"string"`
-
-	// The flow log ID.
-	FlowLogId *string `locationName:"flowLogId" type:"string"`
-
-	// The status of the flow log (ACTIVE).
-	FlowLogStatus *string `locationName:"flowLogStatus" type:"string"`
-
-	// The name of the flow log group.
-	LogGroupName *string `locationName:"logGroupName" type:"string"`
-
-	// The ID of the resource on which the flow log was created.
-	ResourceId *string `locationName:"resourceId" type:"string"`
-
-	// The type of traffic captured for the flow log.
-	TrafficType *string `locationName:"trafficType" type:"string" enum:"TrafficType"`
-
-	metadataFlowLog `json:"-" xml:"-"`
-}
-
-type metadataFlowLog struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s FlowLog) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s FlowLog) GoString() string {
-	return s.String()
-}
-
-type GetConsoleOutputInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `type:"string" required:"true"`
-
-	metadataGetConsoleOutputInput `json:"-" xml:"-"`
-}
-
-type metadataGetConsoleOutputInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetConsoleOutputInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetConsoleOutputInput) GoString() string {
-	return s.String()
-}
-
-type GetConsoleOutputOutput struct {
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The console output, Base64 encoded.
-	Output *string `locationName:"output" type:"string"`
-
-	// The time the output was last updated.
-	Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataGetConsoleOutputOutput `json:"-" xml:"-"`
-}
-
-type metadataGetConsoleOutputOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetConsoleOutputOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetConsoleOutputOutput) GoString() string {
-	return s.String()
-}
-
-type GetPasswordDataInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the Windows instance.
-	InstanceId *string `type:"string" required:"true"`
-
-	metadataGetPasswordDataInput `json:"-" xml:"-"`
-}
-
-type metadataGetPasswordDataInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetPasswordDataInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetPasswordDataInput) GoString() string {
-	return s.String()
-}
-
-type GetPasswordDataOutput struct {
-	// The ID of the Windows instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The password of the instance.
-	PasswordData *string `locationName:"passwordData" type:"string"`
-
-	// The time the data was last updated.
-	Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataGetPasswordDataOutput `json:"-" xml:"-"`
-}
-
-type metadataGetPasswordDataOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GetPasswordDataOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GetPasswordDataOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a security group.
-type GroupIdentifier struct {
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string"`
-
-	// The name of the security group.
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	metadataGroupIdentifier `json:"-" xml:"-"`
-}
-
-type metadataGroupIdentifier struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s GroupIdentifier) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s GroupIdentifier) GoString() string {
-	return s.String()
-}
-
-// Describes an event in the history of the Spot fleet request.
-type HistoryRecord struct {
-	// Information about the event.
-	EventInformation *EventInformation `locationName:"eventInformation" type:"structure" required:"true"`
-
-	// The event type.
-	//
-	//   error - Indicates an error with the Spot fleet request.
-	//
-	//   fleetRequestChange - Indicates a change in the status or configuration
-	// of the Spot fleet request.
-	//
-	//   instanceChange - Indicates that an instance was launched or terminated.
-	EventType *string `locationName:"eventType" type:"string" required:"true" enum:"EventType"`
-
-	// The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	metadataHistoryRecord `json:"-" xml:"-"`
-}
-
-type metadataHistoryRecord struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s HistoryRecord) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s HistoryRecord) GoString() string {
-	return s.String()
-}
-
-// Describes an IAM instance profile.
-type IamInstanceProfile struct {
-	// The Amazon Resource Name (ARN) of the instance profile.
-	Arn *string `locationName:"arn" type:"string"`
-
-	// The ID of the instance profile.
-	Id *string `locationName:"id" type:"string"`
-
-	metadataIamInstanceProfile `json:"-" xml:"-"`
-}
-
-type metadataIamInstanceProfile struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s IamInstanceProfile) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s IamInstanceProfile) GoString() string {
-	return s.String()
-}
-
-// Describes an IAM instance profile.
-type IamInstanceProfileSpecification struct {
-	// The Amazon Resource Name (ARN) of the instance profile.
-	Arn *string `locationName:"arn" type:"string"`
-
-	// The name of the instance profile.
-	Name *string `locationName:"name" type:"string"`
-
-	metadataIamInstanceProfileSpecification `json:"-" xml:"-"`
-}
-
-type metadataIamInstanceProfileSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s IamInstanceProfileSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s IamInstanceProfileSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes the ICMP type and code.
-type IcmpTypeCode struct {
-	// The ICMP type. A value of -1 means all types.
-	Code *int64 `locationName:"code" type:"integer"`
-
-	// The ICMP code. A value of -1 means all codes for the specified ICMP type.
-	Type *int64 `locationName:"type" type:"integer"`
-
-	metadataIcmpTypeCode `json:"-" xml:"-"`
-}
-
-type metadataIcmpTypeCode struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s IcmpTypeCode) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s IcmpTypeCode) GoString() string {
-	return s.String()
-}
-
-// Describes an image.
-type Image struct {
-	// The architecture of the image.
-	Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"`
-
-	// Any block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// The date and time the image was created.
-	CreationDate *string `locationName:"creationDate" type:"string"`
-
-	// The description of the AMI that was provided during image creation.
-	Description *string `locationName:"description" type:"string"`
-
-	// The hypervisor type of the image.
-	Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"`
-
-	// The ID of the AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The location of the AMI.
-	ImageLocation *string `locationName:"imageLocation" type:"string"`
-
-	// The AWS account alias (for example, amazon, self) or the AWS account ID of
-	// the AMI owner.
-	ImageOwnerAlias *string `locationName:"imageOwnerAlias" type:"string"`
-
-	// The type of image.
-	ImageType *string `locationName:"imageType" type:"string" enum:"ImageTypeValues"`
-
-	// The kernel associated with the image, if any. Only applicable for machine
-	// images.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// The name of the AMI that was provided during image creation.
-	Name *string `locationName:"name" type:"string"`
-
-	// The AWS account ID of the image owner.
-	OwnerId *string `locationName:"imageOwnerId" type:"string"`
-
-	// The value is Windows for Windows AMIs; otherwise blank.
-	Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"`
-
-	// Any product codes associated with the AMI.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// Indicates whether the image has public launch permissions. The value is true
-	// if this image has public launch permissions or false if it has only implicit
-	// and explicit launch permissions.
-	Public *bool `locationName:"isPublic" type:"boolean"`
-
-	// The RAM disk associated with the image, if any. Only applicable for machine
-	// images.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	// The device name of the root device (for example, /dev/sda1 or /dev/xvda).
-	RootDeviceName *string `locationName:"rootDeviceName" type:"string"`
-
-	// The type of root device used by the AMI. The AMI can use an EBS volume or
-	// an instance store volume.
-	RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"`
-
-	// Specifies whether enhanced networking is enabled.
-	SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"`
-
-	// The current state of the AMI. If the state is available, the image is successfully
-	// registered and can be used to launch an instance.
-	State *string `locationName:"imageState" type:"string" enum:"ImageState"`
-
-	// The reason for the state change.
-	StateReason *StateReason `locationName:"stateReason" type:"structure"`
-
-	// Any tags assigned to the image.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The type of virtualization of the AMI.
-	VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"`
-
-	metadataImage `json:"-" xml:"-"`
-}
-
-type metadataImage struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Image) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Image) GoString() string {
-	return s.String()
-}
-
-// Describes the disk container object for an import image task.
-type ImageDiskContainer struct {
-	// The description of the disk image.
-	Description *string `type:"string"`
-
-	// The block device mapping for the disk.
-	DeviceName *string `type:"string"`
-
-	// The format of the disk image being imported.
-	//
-	// Valid values: RAW | VHD | VMDK | OVA
-	Format *string `type:"string"`
-
-	// The ID of the EBS snapshot to be used for importing the snapshot.
-	SnapshotId *string `type:"string"`
-
-	// The URL to the Amazon S3-based disk image being imported. The URL can either
-	// be a https URL (https://..) or an Amazon S3 URL (s3://..)
-	Url *string `type:"string"`
-
-	// The S3 bucket for the disk image.
-	UserBucket *UserBucket `type:"structure"`
-
-	metadataImageDiskContainer `json:"-" xml:"-"`
-}
-
-type metadataImageDiskContainer struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImageDiskContainer) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImageDiskContainer) GoString() string {
-	return s.String()
-}
-
-type ImportImageInput struct {
-	// The architecture of the virtual machine.
-	//
-	// Valid values: i386 | x86_64
-	Architecture *string `type:"string"`
-
-	// The client-specific data.
-	ClientData *ClientData `type:"structure"`
-
-	// The token to enable idempotency for VM import requests.
-	ClientToken *string `type:"string"`
-
-	// A description string for the import image task.
-	Description *string `type:"string"`
-
-	// Information about the disk containers.
-	DiskContainers []*ImageDiskContainer `locationName:"DiskContainer" locationNameList:"item" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// The target hypervisor platform.
-	//
-	// Valid values: xen
-	Hypervisor *string `type:"string"`
-
-	// The license type to be used for the Amazon Machine Image (AMI) after importing.
-	//
-	// Note: You may only use BYOL if you have existing licenses with rights to
-	// use these licenses in a third party cloud like AWS. For more information,
-	// see VM Import/Export Prerequisites (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	//
-	// Valid values: AWS | BYOL
-	LicenseType *string `type:"string"`
-
-	// The operating system of the virtual machine.
-	//
-	// Valid values: Windows | Linux
-	Platform *string `type:"string"`
-
-	// The name of the role to use when not using the default role, 'vmimport'.
-	RoleName *string `type:"string"`
-
-	metadataImportImageInput `json:"-" xml:"-"`
-}
-
-type metadataImportImageInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportImageInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportImageInput) GoString() string {
-	return s.String()
-}
-
-type ImportImageOutput struct {
-	// The architecture of the virtual machine.
-	Architecture *string `locationName:"architecture" type:"string"`
-
-	// A description of the import task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The target hypervisor of the import task.
-	Hypervisor *string `locationName:"hypervisor" type:"string"`
-
-	// The ID of the Amazon Machine Image (AMI) created by the import task.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The task ID of the import image task.
-	ImportTaskId *string `locationName:"importTaskId" type:"string"`
-
-	// The license type of the virtual machine.
-	LicenseType *string `locationName:"licenseType" type:"string"`
-
-	// The operating system of the virtual machine.
-	Platform *string `locationName:"platform" type:"string"`
-
-	// The progress of the task.
-	Progress *string `locationName:"progress" type:"string"`
-
-	// Information about the snapshots.
-	SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"`
-
-	// A brief status of the task.
-	Status *string `locationName:"status" type:"string"`
-
-	// A detailed status message of the import task.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	metadataImportImageOutput `json:"-" xml:"-"`
-}
-
-type metadataImportImageOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportImageOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportImageOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an import image task.
-type ImportImageTask struct {
-	// The architecture of the virtual machine.
-	//
-	// Valid values: i386 | x86_64
-	Architecture *string `locationName:"architecture" type:"string"`
-
-	// A description of the import task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The target hypervisor for the import task.
-	//
-	// Valid values: xen
-	Hypervisor *string `locationName:"hypervisor" type:"string"`
-
-	// The ID of the Amazon Machine Image (AMI) of the imported virtual machine.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The ID of the import image task.
-	ImportTaskId *string `locationName:"importTaskId" type:"string"`
-
-	// The license type of the virtual machine.
-	LicenseType *string `locationName:"licenseType" type:"string"`
-
-	// The description string for the import image task.
-	Platform *string `locationName:"platform" type:"string"`
-
-	// The percentage of progress of the import image task.
-	Progress *string `locationName:"progress" type:"string"`
-
-	// Information about the snapshots.
-	SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"`
-
-	// A brief status for the import image task.
-	Status *string `locationName:"status" type:"string"`
-
-	// A descriptive status message for the import image task.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	metadataImportImageTask `json:"-" xml:"-"`
-}
-
-type metadataImportImageTask struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportImageTask) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportImageTask) GoString() string {
-	return s.String()
-}
-
-type ImportInstanceInput struct {
-	// A description for the instance being imported.
-	Description *string `locationName:"description" type:"string"`
-
-	// The disk image.
-	DiskImages []*DiskImage `locationName:"diskImage" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The launch specification.
-	LaunchSpecification *ImportInstanceLaunchSpecification `locationName:"launchSpecification" type:"structure"`
-
-	// The instance operating system.
-	Platform *string `locationName:"platform" type:"string" required:"true" enum:"PlatformValues"`
-
-	metadataImportInstanceInput `json:"-" xml:"-"`
-}
-
-type metadataImportInstanceInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportInstanceInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportInstanceInput) GoString() string {
-	return s.String()
-}
-
-// Describes the launch specification for VM import.
-type ImportInstanceLaunchSpecification struct {
-	// Reserved.
-	AdditionalInfo *string `locationName:"additionalInfo" type:"string"`
-
-	// The architecture of the instance.
-	Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"`
-
-	// One or more security group IDs.
-	GroupIds []*string `locationName:"GroupId" locationNameList:"SecurityGroupId" type:"list"`
-
-	// One or more security group names.
-	GroupNames []*string `locationName:"GroupName" locationNameList:"SecurityGroup" type:"list"`
-
-	// Indicates whether an instance stops or terminates when you initiate shutdown
-	// from the instance (using the operating system command for system shutdown).
-	InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"`
-
-	// The instance type. For more information about the instance types that you
-	// can import, see Before You Get Started (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// Indicates whether monitoring is enabled.
-	Monitoring *bool `locationName:"monitoring" type:"boolean"`
-
-	// The placement information for the instance.
-	Placement *Placement `locationName:"placement" type:"structure"`
-
-	// [EC2-VPC] An available IP address from the IP address range of the subnet.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// [EC2-VPC] The ID of the subnet in which to launch the instance.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// The Base64-encoded MIME user data to be made available to the instance.
-	UserData *UserData `locationName:"userData" type:"structure"`
-
-	metadataImportInstanceLaunchSpecification `json:"-" xml:"-"`
-}
-
-type metadataImportInstanceLaunchSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportInstanceLaunchSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportInstanceLaunchSpecification) GoString() string {
-	return s.String()
-}
-
-type ImportInstanceOutput struct {
-	// Information about the conversion task.
-	ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"`
-
-	metadataImportInstanceOutput `json:"-" xml:"-"`
-}
-
-type metadataImportInstanceOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportInstanceOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportInstanceOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an import instance task.
-type ImportInstanceTaskDetails struct {
-	// A description of the task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The instance operating system.
-	Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"`
-
-	// One or more volumes.
-	Volumes []*ImportInstanceVolumeDetailItem `locationName:"volumes" locationNameList:"item" type:"list" required:"true"`
-
-	metadataImportInstanceTaskDetails `json:"-" xml:"-"`
-}
-
-type metadataImportInstanceTaskDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportInstanceTaskDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportInstanceTaskDetails) GoString() string {
-	return s.String()
-}
-
-// Describes an import volume task.
-type ImportInstanceVolumeDetailItem struct {
-	// The Availability Zone where the resulting instance will reside.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`
-
-	// The number of bytes converted so far.
-	BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"`
-
-	// A description of the task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The image.
-	Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"`
-
-	// The status of the import of this particular disk image.
-	Status *string `locationName:"status" type:"string" required:"true"`
-
-	// The status information or errors related to the disk image.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// The volume.
-	Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"`
-
-	metadataImportInstanceVolumeDetailItem `json:"-" xml:"-"`
-}
-
-type metadataImportInstanceVolumeDetailItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportInstanceVolumeDetailItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportInstanceVolumeDetailItem) GoString() string {
-	return s.String()
-}
-
-type ImportKeyPairInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// A unique name for the key pair.
-	KeyName *string `locationName:"keyName" type:"string" required:"true"`
-
-	// The public key. You must base64 encode the public key material before sending
-	// it to AWS.
-	PublicKeyMaterial []byte `locationName:"publicKeyMaterial" type:"blob" required:"true"`
-
-	metadataImportKeyPairInput `json:"-" xml:"-"`
-}
-
-type metadataImportKeyPairInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportKeyPairInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportKeyPairInput) GoString() string {
-	return s.String()
-}
-
-type ImportKeyPairOutput struct {
-	// The MD5 public key fingerprint as specified in section 4 of RFC 4716.
-	KeyFingerprint *string `locationName:"keyFingerprint" type:"string"`
-
-	// The key pair name you provided.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	metadataImportKeyPairOutput `json:"-" xml:"-"`
-}
-
-type metadataImportKeyPairOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportKeyPairOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportKeyPairOutput) GoString() string {
-	return s.String()
-}
-
-type ImportSnapshotInput struct {
-	// The client-specific data.
-	ClientData *ClientData `type:"structure"`
-
-	// Token to enable idempotency for VM import requests.
-	ClientToken *string `type:"string"`
-
-	// The description string for the import snapshot task.
-	Description *string `type:"string"`
-
-	// Information about the disk container.
-	DiskContainer *SnapshotDiskContainer `type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// The name of the role to use when not using the default role, 'vmimport'.
-	RoleName *string `type:"string"`
-
-	metadataImportSnapshotInput `json:"-" xml:"-"`
-}
-
-type metadataImportSnapshotInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportSnapshotInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportSnapshotInput) GoString() string {
-	return s.String()
-}
-
-type ImportSnapshotOutput struct {
-	// A description of the import snapshot task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of the import snapshot task.
-	ImportTaskId *string `locationName:"importTaskId" type:"string"`
-
-	// Information about the import snapshot task.
-	SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"`
-
-	metadataImportSnapshotOutput `json:"-" xml:"-"`
-}
-
-type metadataImportSnapshotOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportSnapshotOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportSnapshotOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an import snapshot task.
-type ImportSnapshotTask struct {
-	// A description of the import snapshot task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of the import snapshot task.
-	ImportTaskId *string `locationName:"importTaskId" type:"string"`
-
-	// Describes an import snapshot task.
-	SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"`
-
-	metadataImportSnapshotTask `json:"-" xml:"-"`
-}
-
-type metadataImportSnapshotTask struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportSnapshotTask) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportSnapshotTask) GoString() string {
-	return s.String()
-}
-
-type ImportVolumeInput struct {
-	// The Availability Zone for the resulting EBS volume.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`
-
-	// A description of the volume.
-	Description *string `locationName:"description" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The disk image.
-	Image *DiskImageDetail `locationName:"image" type:"structure" required:"true"`
-
-	// The volume size.
-	Volume *VolumeDetail `locationName:"volume" type:"structure" required:"true"`
-
-	metadataImportVolumeInput `json:"-" xml:"-"`
-}
-
-type metadataImportVolumeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportVolumeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportVolumeInput) GoString() string {
-	return s.String()
-}
-
-type ImportVolumeOutput struct {
-	// Information about the conversion task.
-	ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"`
-
-	metadataImportVolumeOutput `json:"-" xml:"-"`
-}
-
-type metadataImportVolumeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportVolumeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportVolumeOutput) GoString() string {
-	return s.String()
-}
-
-// Describes an import volume task.
-type ImportVolumeTaskDetails struct {
-	// The Availability Zone where the resulting volume will reside.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`
-
-	// The number of bytes converted so far.
-	BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"`
-
-	// The description you provided when starting the import volume task.
-	Description *string `locationName:"description" type:"string"`
-
-	// The image.
-	Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"`
-
-	// The volume.
-	Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"`
-
-	metadataImportVolumeTaskDetails `json:"-" xml:"-"`
-}
-
-type metadataImportVolumeTaskDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ImportVolumeTaskDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ImportVolumeTaskDetails) GoString() string {
-	return s.String()
-}
-
-// Describes an instance.
-type Instance struct {
-	// The AMI launch index, which can be used to find this instance in the launch
-	// group.
-	AmiLaunchIndex *int64 `locationName:"amiLaunchIndex" type:"integer"`
-
-	// The architecture of the image.
-	Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"`
-
-	// Any block device mapping entries for the instance.
-	BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// The idempotency token you provided when you launched the instance, if applicable.
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// Indicates whether the instance is optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS
-	// Optimized instance.
-	EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
-
-	// The hypervisor type of the instance.
-	Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"`
-
-	// The IAM instance profile associated with the instance, if applicable.
-	IamInstanceProfile *IamInstanceProfile `locationName:"iamInstanceProfile" type:"structure"`
-
-	// The ID of the AMI used to launch the instance.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// Indicates whether this is a Spot Instance.
-	InstanceLifecycle *string `locationName:"instanceLifecycle" type:"string" enum:"InstanceLifecycleType"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The kernel associated with this instance, if applicable.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// The name of the key pair, if this instance was launched with an associated
-	// key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	// The time the instance was launched.
-	LaunchTime *time.Time `locationName:"launchTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The monitoring information for the instance.
-	Monitoring *Monitoring `locationName:"monitoring" type:"structure"`
-
-	// [EC2-VPC] One or more network interfaces for the instance.
-	NetworkInterfaces []*InstanceNetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"`
-
-	// The location where the instance launched, if applicable.
-	Placement *Placement `locationName:"placement" type:"structure"`
-
-	// The value is Windows for Windows instances; otherwise blank.
-	Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"`
-
-	// The private DNS name assigned to the instance. This DNS name can only be
-	// used inside the Amazon EC2 network. This name is not available until the
-	// instance enters the running state. For EC2-VPC, this name is only available
-	// if you've enabled DNS hostnames for your VPC.
-	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
-
-	// The private IP address assigned to the instance.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The product codes attached to this instance, if applicable.
-	ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"`
-
-	// The public DNS name assigned to the instance. This name is not available
-	// until the instance enters the running state. For EC2-VPC, this name is only
-	// available if you've enabled DNS hostnames for your VPC.
-	PublicDnsName *string `locationName:"dnsName" type:"string"`
-
-	// The public IP address assigned to the instance, if applicable.
-	PublicIpAddress *string `locationName:"ipAddress" type:"string"`
-
-	// The RAM disk associated with this instance, if applicable.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	// The root device name (for example, /dev/sda1 or /dev/xvda).
-	RootDeviceName *string `locationName:"rootDeviceName" type:"string"`
-
-	// The root device type used by the AMI. The AMI can use an EBS volume or an
-	// instance store volume.
-	RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"`
-
-	// One or more security groups for the instance.
-	SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// Specifies whether to enable an instance launched in a VPC to perform NAT.
-	// This controls whether source/destination checking is enabled on the instance.
-	// A value of true means checking is enabled, and false means checking is disabled.
-	// The value must be false for the instance to perform NAT. For more information,
-	// see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
-	// in the Amazon Virtual Private Cloud User Guide.
-	SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"`
-
-	// If the request is a Spot instance request, the ID of the request.
-	SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"`
-
-	// Specifies whether enhanced networking is enabled.
-	SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"`
-
-	// The current state of the instance.
-	State *InstanceState `locationName:"instanceState" type:"structure"`
-
-	// The reason for the most recent state transition.
-	StateReason *StateReason `locationName:"stateReason" type:"structure"`
-
-	// The reason for the most recent state transition. This might be an empty string.
-	StateTransitionReason *string `locationName:"reason" type:"string"`
-
-	// [EC2-VPC] The ID of the subnet in which the instance is running.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// Any tags assigned to the instance.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The virtualization type of the instance.
-	VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"`
-
-	// [EC2-VPC] The ID of the VPC in which the instance is running.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataInstance `json:"-" xml:"-"`
-}
-
-type metadataInstance struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Instance) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Instance) GoString() string {
-	return s.String()
-}
-
-// Describes a block device mapping.
-type InstanceBlockDeviceMapping struct {
-	// The device name exposed to the instance (for example, /dev/sdh or xvdh).
-	DeviceName *string `locationName:"deviceName" type:"string"`
-
-	// Parameters used to automatically set up EBS volumes when the instance is
-	// launched.
-	Ebs *EbsInstanceBlockDevice `locationName:"ebs" type:"structure"`
-
-	metadataInstanceBlockDeviceMapping `json:"-" xml:"-"`
-}
-
-type metadataInstanceBlockDeviceMapping struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceBlockDeviceMapping) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceBlockDeviceMapping) GoString() string {
-	return s.String()
-}
-
-// Describes a block device mapping entry.
-type InstanceBlockDeviceMappingSpecification struct {
-	// The device name exposed to the instance (for example, /dev/sdh or xvdh).
-	DeviceName *string `locationName:"deviceName" type:"string"`
-
-	// Parameters used to automatically set up EBS volumes when the instance is
-	// launched.
-	Ebs *EbsInstanceBlockDeviceSpecification `locationName:"ebs" type:"structure"`
-
-	// suppress the specified device included in the block device mapping.
-	NoDevice *string `locationName:"noDevice" type:"string"`
-
-	// The virtual device name.
-	VirtualName *string `locationName:"virtualName" type:"string"`
-
-	metadataInstanceBlockDeviceMappingSpecification `json:"-" xml:"-"`
-}
-
-type metadataInstanceBlockDeviceMappingSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceBlockDeviceMappingSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceBlockDeviceMappingSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance listing state.
-type InstanceCount struct {
-	// The number of listed Reserved Instances in the state specified by the state.
-	InstanceCount *int64 `locationName:"instanceCount" type:"integer"`
-
-	// The states of the listed Reserved Instances.
-	State *string `locationName:"state" type:"string" enum:"ListingState"`
-
-	metadataInstanceCount `json:"-" xml:"-"`
-}
-
-type metadataInstanceCount struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceCount) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceCount) GoString() string {
-	return s.String()
-}
-
-// Describes an instance to export.
-type InstanceExportDetails struct {
-	// The ID of the resource being exported.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The target virtualization environment.
-	TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"`
-
-	metadataInstanceExportDetails `json:"-" xml:"-"`
-}
-
-type metadataInstanceExportDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceExportDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceExportDetails) GoString() string {
-	return s.String()
-}
-
-// Describes the monitoring information of the instance.
-type InstanceMonitoring struct {
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The monitoring information.
-	Monitoring *Monitoring `locationName:"monitoring" type:"structure"`
-
-	metadataInstanceMonitoring `json:"-" xml:"-"`
-}
-
-type metadataInstanceMonitoring struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceMonitoring) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceMonitoring) GoString() string {
-	return s.String()
-}
-
-// Describes a network interface.
-type InstanceNetworkInterface struct {
-	// The association information for an Elastic IP associated with the network
-	// interface.
-	Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"`
-
-	// The network interface attachment.
-	Attachment *InstanceNetworkInterfaceAttachment `locationName:"attachment" type:"structure"`
-
-	// The description.
-	Description *string `locationName:"description" type:"string"`
-
-	// One or more security groups.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The MAC address.
-	MacAddress *string `locationName:"macAddress" type:"string"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The ID of the AWS account that created the network interface.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The private DNS name.
-	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
-
-	// The IP address of the network interface within the subnet.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The private IP addresses associated with the network interface.
-	PrivateIpAddresses []*InstancePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"`
-
-	// Indicates whether to validate network traffic to or from this network interface.
-	SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"`
-
-	// The status of the network interface.
-	Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataInstanceNetworkInterface `json:"-" xml:"-"`
-}
-
-type metadataInstanceNetworkInterface struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceNetworkInterface) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceNetworkInterface) GoString() string {
-	return s.String()
-}
-
-// Describes association information for an Elastic IP address.
-type InstanceNetworkInterfaceAssociation struct {
-	// The ID of the owner of the Elastic IP address.
-	IpOwnerId *string `locationName:"ipOwnerId" type:"string"`
-
-	// The public DNS name.
-	PublicDnsName *string `locationName:"publicDnsName" type:"string"`
-
-	// The public IP address or Elastic IP address bound to the network interface.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	metadataInstanceNetworkInterfaceAssociation `json:"-" xml:"-"`
-}
-
-type metadataInstanceNetworkInterfaceAssociation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceNetworkInterfaceAssociation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceNetworkInterfaceAssociation) GoString() string {
-	return s.String()
-}
-
-// Describes a network interface attachment.
-type InstanceNetworkInterfaceAttachment struct {
-	// The time stamp when the attachment initiated.
-	AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The ID of the network interface attachment.
-	AttachmentId *string `locationName:"attachmentId" type:"string"`
-
-	// Indicates whether the network interface is deleted when the instance is terminated.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The index of the device on the instance for the network interface attachment.
-	DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"`
-
-	// The attachment state.
-	Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"`
-
-	metadataInstanceNetworkInterfaceAttachment `json:"-" xml:"-"`
-}
-
-type metadataInstanceNetworkInterfaceAttachment struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceNetworkInterfaceAttachment) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceNetworkInterfaceAttachment) GoString() string {
-	return s.String()
-}
-
-// Describes a network interface.
-type InstanceNetworkInterfaceSpecification struct {
-	// Indicates whether to assign a public IP address to an instance you launch
-	// in a VPC. The public IP address can only be assigned to a network interface
-	// for eth0, and can only be assigned to a new network interface, not an existing
-	// one. You cannot specify more than one network interface in the request. If
-	// launching into a default subnet, the default value is true.
-	AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"`
-
-	// If set to true, the interface is deleted when the instance is terminated.
-	// You can specify true only if creating a new network interface when launching
-	// an instance.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The description of the network interface. Applies only if creating a network
-	// interface when launching an instance.
-	Description *string `locationName:"description" type:"string"`
-
-	// The index of the device on the instance for the network interface attachment.
-	// If you are specifying a network interface in a RunInstances request, you
-	// must provide the device index.
-	DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"`
-
-	// The IDs of the security groups for the network interface. Applies only if
-	// creating a network interface when launching an instance.
-	Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The private IP address of the network interface. Applies only if creating
-	// a network interface when launching an instance.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// One or more private IP addresses to assign to the network interface. Only
-	// one private IP address can be designated as primary.
-	PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddressesSet" queryName:"PrivateIpAddresses" locationNameList:"item" type:"list"`
-
-	// The number of secondary private IP addresses. You can't specify this option
-	// and specify more than one private IP address using the private IP addresses
-	// option.
-	SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"`
-
-	// The ID of the subnet associated with the network string. Applies only if
-	// creating a network interface when launching an instance.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	metadataInstanceNetworkInterfaceSpecification `json:"-" xml:"-"`
-}
-
-type metadataInstanceNetworkInterfaceSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceNetworkInterfaceSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceNetworkInterfaceSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a private IP address.
-type InstancePrivateIpAddress struct {
-	// The association information for an Elastic IP address for the network interface.
-	Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"`
-
-	// Indicates whether this IP address is the primary private IP address of the
-	// network interface.
-	Primary *bool `locationName:"primary" type:"boolean"`
-
-	// The private DNS name.
-	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
-
-	// The private IP address of the network interface.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	metadataInstancePrivateIpAddress `json:"-" xml:"-"`
-}
-
-type metadataInstancePrivateIpAddress struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstancePrivateIpAddress) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstancePrivateIpAddress) GoString() string {
-	return s.String()
-}
-
-// Describes the current state of the instance.
-type InstanceState struct {
-	// The low byte represents the state. The high byte is an opaque internal value
-	// and should be ignored.
-	//
-	//  0 : pending
-	//
-	// 16 : running
-	//
-	// 32 : shutting-down
-	//
-	// 48 : terminated
-	//
-	// 64 : stopping
-	//
-	// 80 : stopped
-	Code *int64 `locationName:"code" type:"integer"`
-
-	// The current state of the instance.
-	Name *string `locationName:"name" type:"string" enum:"InstanceStateName"`
-
-	metadataInstanceState `json:"-" xml:"-"`
-}
-
-type metadataInstanceState struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceState) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceState) GoString() string {
-	return s.String()
-}
-
-// Describes an instance state change.
-type InstanceStateChange struct {
-	// The current state of the instance.
-	CurrentState *InstanceState `locationName:"currentState" type:"structure"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The previous state of the instance.
-	PreviousState *InstanceState `locationName:"previousState" type:"structure"`
-
-	metadataInstanceStateChange `json:"-" xml:"-"`
-}
-
-type metadataInstanceStateChange struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceStateChange) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceStateChange) GoString() string {
-	return s.String()
-}
-
-// Describes the status of an instance.
-type InstanceStatus struct {
-	// The Availability Zone of the instance.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// Any scheduled events associated with the instance.
-	Events []*InstanceStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The intended state of the instance. DescribeInstanceStatus requires that
-	// an instance be in the running state.
-	InstanceState *InstanceState `locationName:"instanceState" type:"structure"`
-
-	// Reports impaired functionality that stems from issues internal to the instance,
-	// such as impaired reachability.
-	InstanceStatus *InstanceStatusSummary `locationName:"instanceStatus" type:"structure"`
-
-	// Reports impaired functionality that stems from issues related to the systems
-	// that support an instance, such as hardware failures and network connectivity
-	// problems.
-	SystemStatus *InstanceStatusSummary `locationName:"systemStatus" type:"structure"`
-
-	metadataInstanceStatus `json:"-" xml:"-"`
-}
-
-type metadataInstanceStatus struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceStatus) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceStatus) GoString() string {
-	return s.String()
-}
-
-// Describes the instance status.
-type InstanceStatusDetails struct {
-	// The time when a status check failed. For an instance that was launched and
-	// impaired, this is the time when the instance was launched.
-	ImpairedSince *time.Time `locationName:"impairedSince" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The type of instance status.
-	Name *string `locationName:"name" type:"string" enum:"StatusName"`
-
-	// The status.
-	Status *string `locationName:"status" type:"string" enum:"StatusType"`
-
-	metadataInstanceStatusDetails `json:"-" xml:"-"`
-}
-
-type metadataInstanceStatusDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceStatusDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceStatusDetails) GoString() string {
-	return s.String()
-}
-
-// Describes a scheduled event for an instance.
-type InstanceStatusEvent struct {
-	// The event code.
-	Code *string `locationName:"code" type:"string" enum:"EventCode"`
-
-	// A description of the event.
-	//
-	// After a scheduled event is completed, it can still be described for up to
-	// a week. If the event has been completed, this description starts with the
-	// following text: [Completed].
-	Description *string `locationName:"description" type:"string"`
-
-	// The latest scheduled end time for the event.
-	NotAfter *time.Time `locationName:"notAfter" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The earliest scheduled start time for the event.
-	NotBefore *time.Time `locationName:"notBefore" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataInstanceStatusEvent `json:"-" xml:"-"`
-}
-
-type metadataInstanceStatusEvent struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceStatusEvent) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceStatusEvent) GoString() string {
-	return s.String()
-}
-
-// Describes the status of an instance.
-type InstanceStatusSummary struct {
-	// The system instance health or application instance health.
-	Details []*InstanceStatusDetails `locationName:"details" locationNameList:"item" type:"list"`
-
-	// The status.
-	Status *string `locationName:"status" type:"string" enum:"SummaryStatus"`
-
-	metadataInstanceStatusSummary `json:"-" xml:"-"`
-}
-
-type metadataInstanceStatusSummary struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InstanceStatusSummary) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InstanceStatusSummary) GoString() string {
-	return s.String()
-}
-
-// Describes an Internet gateway.
-type InternetGateway struct {
-	// Any VPCs attached to the Internet gateway.
-	Attachments []*InternetGatewayAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"`
-
-	// The ID of the Internet gateway.
-	InternetGatewayId *string `locationName:"internetGatewayId" type:"string"`
-
-	// Any tags assigned to the Internet gateway.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	metadataInternetGateway `json:"-" xml:"-"`
-}
-
-type metadataInternetGateway struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InternetGateway) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InternetGateway) GoString() string {
-	return s.String()
-}
-
-// Describes the attachment of a VPC to an Internet gateway.
-type InternetGatewayAttachment struct {
-	// The current state of the attachment.
-	State *string `locationName:"state" type:"string" enum:"AttachmentStatus"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataInternetGatewayAttachment `json:"-" xml:"-"`
-}
-
-type metadataInternetGatewayAttachment struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s InternetGatewayAttachment) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s InternetGatewayAttachment) GoString() string {
-	return s.String()
-}
-
-// Describes a security group rule.
-type IpPermission struct {
-	// The start of port range for the TCP and UDP protocols, or an ICMP type number.
-	// A value of -1 indicates all ICMP types.
-	FromPort *int64 `locationName:"fromPort" type:"integer"`
-
-	// The protocol.
-	//
-	// When you call DescribeSecurityGroups, the protocol value returned is the
-	// number. Exception: For TCP, UDP, and ICMP, the value returned is the name
-	// (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol
-	// Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml).
-	// (VPC only) When you call AuthorizeSecurityGroupIngress, you can use -1 to
-	// specify all.
-	IpProtocol *string `locationName:"ipProtocol" type:"string"`
-
-	// One or more IP ranges.
-	IpRanges []*IpRange `locationName:"ipRanges" locationNameList:"item" type:"list"`
-
-	// (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and DescribeSecurityGroups
-	// only) One or more prefix list IDs for an AWS service. In an AuthorizeSecurityGroupEgress
-	// request, this is the AWS service that you want to access through a VPC endpoint
-	// from instances associated with the security group.
-	PrefixListIds []*PrefixListId `locationName:"prefixListIds" locationNameList:"item" type:"list"`
-
-	// The end of port range for the TCP and UDP protocols, or an ICMP code. A value
-	// of -1 indicates all ICMP codes for the specified ICMP type.
-	ToPort *int64 `locationName:"toPort" type:"integer"`
-
-	// One or more security group and AWS account ID pairs.
-	UserIdGroupPairs []*UserIdGroupPair `locationName:"groups" locationNameList:"item" type:"list"`
-
-	metadataIpPermission `json:"-" xml:"-"`
-}
-
-type metadataIpPermission struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s IpPermission) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s IpPermission) GoString() string {
-	return s.String()
-}
-
-// Describes an IP range.
-type IpRange struct {
-	// The CIDR range. You can either specify a CIDR range or a source security
-	// group, not both.
-	CidrIp *string `locationName:"cidrIp" type:"string"`
-
-	metadataIpRange `json:"-" xml:"-"`
-}
-
-type metadataIpRange struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s IpRange) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s IpRange) GoString() string {
-	return s.String()
-}
-
-// Describes a key pair.
-type KeyPairInfo struct {
-	// If you used CreateKeyPair to create the key pair, this is the SHA-1 digest
-	// of the DER encoded private key. If you used ImportKeyPair to provide AWS
-	// the public key, this is the MD5 public key fingerprint as specified in section
-	// 4 of RFC4716.
-	KeyFingerprint *string `locationName:"keyFingerprint" type:"string"`
-
-	// The name of the key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	metadataKeyPairInfo `json:"-" xml:"-"`
-}
-
-type metadataKeyPairInfo struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s KeyPairInfo) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s KeyPairInfo) GoString() string {
-	return s.String()
-}
-
-// Describes a launch permission.
-type LaunchPermission struct {
-	// The name of the group.
-	Group *string `locationName:"group" type:"string" enum:"PermissionGroup"`
-
-	// The AWS account ID.
-	UserId *string `locationName:"userId" type:"string"`
-
-	metadataLaunchPermission `json:"-" xml:"-"`
-}
-
-type metadataLaunchPermission struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s LaunchPermission) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s LaunchPermission) GoString() string {
-	return s.String()
-}
-
-// Describes a launch permission modification.
-type LaunchPermissionModifications struct {
-	// The AWS account ID to add to the list of launch permissions for the AMI.
-	Add []*LaunchPermission `locationNameList:"item" type:"list"`
-
-	// The AWS account ID to remove from the list of launch permissions for the
-	// AMI.
-	Remove []*LaunchPermission `locationNameList:"item" type:"list"`
-
-	metadataLaunchPermissionModifications `json:"-" xml:"-"`
-}
-
-type metadataLaunchPermissionModifications struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s LaunchPermissionModifications) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s LaunchPermissionModifications) GoString() string {
-	return s.String()
-}
-
-// Describes the launch specification for an instance.
-type LaunchSpecification struct {
-	// Deprecated.
-	AddressingType *string `locationName:"addressingType" type:"string"`
-
-	// One or more block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// Indicates whether the instance is optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal EBS I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS
-	// Optimized instance.
-	//
-	// Default: false
-	EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
-
-	// The IAM instance profile.
-	IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
-
-	// The ID of the AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The ID of the kernel.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// The name of the key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	// Describes the monitoring for the instance.
-	Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"`
-
-	// One or more network interfaces.
-	NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"`
-
-	// The placement information for the instance.
-	Placement *SpotPlacement `locationName:"placement" type:"structure"`
-
-	// The ID of the RAM disk.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	// One or more security groups. When requesting instances in a VPC, you must
-	// specify the IDs of the security groups. When requesting instances in EC2-Classic,
-	// you can specify the names or the IDs of the security groups.
-	SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The ID of the subnet in which to launch the instance.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// The Base64-encoded MIME user data to make available to the instances.
-	UserData *string `locationName:"userData" type:"string"`
-
-	metadataLaunchSpecification `json:"-" xml:"-"`
-}
-
-type metadataLaunchSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s LaunchSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s LaunchSpecification) GoString() string {
-	return s.String()
-}
-
-type ModifyImageAttributeInput struct {
-	// The name of the attribute to modify.
-	Attribute *string `type:"string"`
-
-	// A description for the AMI.
-	Description *AttributeValue `type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the AMI.
-	ImageId *string `type:"string" required:"true"`
-
-	// A launch permission modification.
-	LaunchPermission *LaunchPermissionModifications `type:"structure"`
-
-	// The operation type.
-	OperationType *string `type:"string" enum:"OperationType"`
-
-	// One or more product codes. After you add a product code to an AMI, it can't
-	// be removed. This is only valid when modifying the productCodes attribute.
-	ProductCodes []*string `locationName:"ProductCode" locationNameList:"ProductCode" type:"list"`
-
-	// One or more user groups. This is only valid when modifying the launchPermission
-	// attribute.
-	UserGroups []*string `locationName:"UserGroup" locationNameList:"UserGroup" type:"list"`
-
-	// One or more AWS account IDs. This is only valid when modifying the launchPermission
-	// attribute.
-	UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"`
-
-	// The value of the attribute being modified. This is only valid when modifying
-	// the description attribute.
-	Value *string `type:"string"`
-
-	metadataModifyImageAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifyImageAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyImageAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyImageAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifyImageAttributeOutput struct {
-	metadataModifyImageAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyImageAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyImageAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyImageAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyInstanceAttributeInput struct {
-	// The name of the attribute.
-	Attribute *string `locationName:"attribute" type:"string" enum:"InstanceAttributeName"`
-
-	// Modifies the DeleteOnTermination attribute for volumes that are currently
-	// attached. The volume must be owned by the caller. If no value is specified
-	// for DeleteOnTermination, the default is true and the volume is deleted when
-	// the instance is terminated.
-	//
-	// To add instance store volumes to an Amazon EBS-backed instance, you must
-	// add them when you launch the instance. For more information, see Updating
-	// the Block Device Mapping when Launching an Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	BlockDeviceMappings []*InstanceBlockDeviceMappingSpecification `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// If the value is true, you can't terminate the instance using the Amazon EC2
-	// console, CLI, or API; otherwise, you can. You cannot use this paramater for
-	// Spot Instances.
-	DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Specifies whether the instance is optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal EBS I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS
-	// Optimized instance.
-	EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"`
-
-	// [EC2-VPC] Changes the security groups of the instance. You must specify at
-	// least one security group, even if it's just the default security group for
-	// the VPC. You must specify the security group ID, not the security group name.
-	Groups []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	// Specifies whether an instance stops or terminates when you initiate shutdown
-	// from the instance (using the operating system command for system shutdown).
-	InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"`
-
-	// Changes the instance type to the specified value. For more information, see
-	// Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
-	// If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.
-	InstanceType *AttributeValue `locationName:"instanceType" type:"structure"`
-
-	// Changes the instance's kernel to the specified value. We recommend that you
-	// use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB
-	// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
-	Kernel *AttributeValue `locationName:"kernel" type:"structure"`
-
-	// Changes the instance's RAM disk to the specified value. We recommend that
-	// you use PV-GRUB instead of kernels and RAM disks. For more information, see
-	// PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
-	Ramdisk *AttributeValue `locationName:"ramdisk" type:"structure"`
-
-	// Specifies whether source/destination checking is enabled. A value of true
-	// means that checking is enabled, and false means checking is disabled. This
-	// value must be false for a NAT instance to perform NAT.
-	SourceDestCheck *AttributeBooleanValue `type:"structure"`
-
-	// Set to simple to enable enhanced networking for the instance.
-	//
-	// There is no way to disable enhanced networking at this time.
-	//
-	// This option is supported only for HVM instances. Specifying this option
-	// with a PV instance can make it unreachable.
-	SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"`
-
-	// Changes the instance's user data to the specified value.
-	UserData *BlobAttributeValue `locationName:"userData" type:"structure"`
-
-	// A new value for the attribute. Use only with the kernel, ramdisk, userData,
-	// disableApiTermination, or instanceInitiatedShutdownBehavior attribute.
-	Value *string `locationName:"value" type:"string"`
-
-	metadataModifyInstanceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifyInstanceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyInstanceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyInstanceAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifyInstanceAttributeOutput struct {
-	metadataModifyInstanceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyInstanceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyInstanceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyInstanceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyNetworkInterfaceAttributeInput struct {
-	// Information about the interface attachment. If modifying the 'delete on termination'
-	// attribute, you must specify the ID of the interface attachment.
-	Attachment *NetworkInterfaceAttachmentChanges `locationName:"attachment" type:"structure"`
-
-	// A description for the network interface.
-	Description *AttributeValue `locationName:"description" type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Changes the security groups for the network interface. The new set of groups
-	// you specify replaces the current set. You must specify at least one group,
-	// even if it's just the default security group in the VPC. You must specify
-	// the ID of the security group, not the name.
-	Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	// Indicates whether source/destination checking is enabled. A value of true
-	// means checking is enabled, and false means checking is disabled. This value
-	// must be false for a NAT instance to perform NAT. For more information, see
-	// NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
-	// in the Amazon Virtual Private Cloud User Guide.
-	SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"`
-
-	metadataModifyNetworkInterfaceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifyNetworkInterfaceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyNetworkInterfaceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyNetworkInterfaceAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifyNetworkInterfaceAttributeOutput struct {
-	metadataModifyNetworkInterfaceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyNetworkInterfaceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyNetworkInterfaceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyNetworkInterfaceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyReservedInstancesInput struct {
-	// A unique, case-sensitive token you provide to ensure idempotency of your
-	// modification request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// The IDs of the Reserved Instances to modify.
-	ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list" required:"true"`
-
-	// The configuration settings for the Reserved Instances to modify.
-	TargetConfigurations []*ReservedInstancesConfiguration `locationName:"ReservedInstancesConfigurationSetItemType" locationNameList:"item" type:"list" required:"true"`
-
-	metadataModifyReservedInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataModifyReservedInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyReservedInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyReservedInstancesInput) GoString() string {
-	return s.String()
-}
-
-type ModifyReservedInstancesOutput struct {
-	// The ID for the modification.
-	ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"`
-
-	metadataModifyReservedInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyReservedInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyReservedInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyReservedInstancesOutput) GoString() string {
-	return s.String()
-}
-
-type ModifySnapshotAttributeInput struct {
-	// The snapshot attribute to modify.
-	//
-	//  Only volume creation permissions may be modified at the customer level.
-	Attribute *string `type:"string" enum:"SnapshotAttributeName"`
-
-	// A JSON representation of the snapshot attribute modification.
-	CreateVolumePermission *CreateVolumePermissionModifications `type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The group to modify for the snapshot.
-	GroupNames []*string `locationName:"UserGroup" locationNameList:"GroupName" type:"list"`
-
-	// The type of operation to perform to the attribute.
-	OperationType *string `type:"string" enum:"OperationType"`
-
-	// The ID of the snapshot.
-	SnapshotId *string `type:"string" required:"true"`
-
-	// The account ID to modify for the snapshot.
-	UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"`
-
-	metadataModifySnapshotAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifySnapshotAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySnapshotAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySnapshotAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifySnapshotAttributeOutput struct {
-	metadataModifySnapshotAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifySnapshotAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySnapshotAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySnapshotAttributeOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for ModifySpotFleetRequest.
-type ModifySpotFleetRequestInput struct {
-	// Indicates whether running Spot instances should be terminated if the target
-	// capacity of the Spot fleet request is decreased below the current size of
-	// the Spot fleet.
-	ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	// The size of the fleet.
-	TargetCapacity *int64 `locationName:"targetCapacity" type:"integer"`
-
-	metadataModifySpotFleetRequestInput `json:"-" xml:"-"`
-}
-
-type metadataModifySpotFleetRequestInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySpotFleetRequestInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySpotFleetRequestInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of ModifySpotFleetRequest.
-type ModifySpotFleetRequestOutput struct {
-	// Is true if the request succeeds, and an error otherwise.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataModifySpotFleetRequestOutput `json:"-" xml:"-"`
-}
-
-type metadataModifySpotFleetRequestOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySpotFleetRequestOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySpotFleetRequestOutput) GoString() string {
-	return s.String()
-}
-
-type ModifySubnetAttributeInput struct {
-	// Specify true to indicate that instances launched into the specified subnet
-	// should be assigned public IP address.
-	MapPublicIpOnLaunch *AttributeBooleanValue `type:"structure"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string" required:"true"`
-
-	metadataModifySubnetAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifySubnetAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySubnetAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySubnetAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifySubnetAttributeOutput struct {
-	metadataModifySubnetAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifySubnetAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifySubnetAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifySubnetAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyVolumeAttributeInput struct {
-	// Indicates whether the volume should be auto-enabled for I/O operations.
-	AutoEnableIO *AttributeBooleanValue `type:"structure"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the volume.
-	VolumeId *string `type:"string" required:"true"`
-
-	metadataModifyVolumeAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifyVolumeAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVolumeAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVolumeAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifyVolumeAttributeOutput struct {
-	metadataModifyVolumeAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyVolumeAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVolumeAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVolumeAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyVpcAttributeInput struct {
-	// Indicates whether the instances launched in the VPC get DNS hostnames. If
-	// enabled, instances in the VPC get DNS hostnames; otherwise, they do not.
-	//
-	// You cannot modify the DNS resolution and DNS hostnames attributes in the
-	// same request. Use separate requests for each attribute. You can only enable
-	// DNS hostnames if you've enabled DNS support.
-	EnableDnsHostnames *AttributeBooleanValue `type:"structure"`
-
-	// Indicates whether the DNS resolution is supported for the VPC. If enabled,
-	// queries to the Amazon provided DNS server at the 169.254.169.253 IP address,
-	// or the reserved IP address at the base of the VPC network range "plus two"
-	// will succeed. If disabled, the Amazon provided DNS service in the VPC that
-	// resolves public DNS hostnames to IP addresses is not enabled.
-	//
-	// You cannot modify the DNS resolution and DNS hostnames attributes in the
-	// same request. Use separate requests for each attribute.
-	EnableDnsSupport *AttributeBooleanValue `type:"structure"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string" required:"true"`
-
-	metadataModifyVpcAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataModifyVpcAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVpcAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVpcAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ModifyVpcAttributeOutput struct {
-	metadataModifyVpcAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyVpcAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVpcAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVpcAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ModifyVpcEndpointInput struct {
-	// One or more route tables IDs to associate with the endpoint.
-	AddRouteTableIds []*string `locationName:"AddRouteTableId" locationNameList:"item" type:"list"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `type:"boolean"`
-
-	// A policy document to attach to the endpoint. The policy must be in valid
-	// JSON format.
-	PolicyDocument *string `type:"string"`
-
-	// One or more route table IDs to disassociate from the endpoint.
-	RemoveRouteTableIds []*string `locationName:"RemoveRouteTableId" locationNameList:"item" type:"list"`
-
-	// Specify true to reset the policy document to the default policy. The default
-	// policy allows access to the service.
-	ResetPolicy *bool `type:"boolean"`
-
-	// The ID of the endpoint.
-	VpcEndpointId *string `type:"string" required:"true"`
-
-	metadataModifyVpcEndpointInput `json:"-" xml:"-"`
-}
-
-type metadataModifyVpcEndpointInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVpcEndpointInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVpcEndpointInput) GoString() string {
-	return s.String()
-}
-
-type ModifyVpcEndpointOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataModifyVpcEndpointOutput `json:"-" xml:"-"`
-}
-
-type metadataModifyVpcEndpointOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ModifyVpcEndpointOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ModifyVpcEndpointOutput) GoString() string {
-	return s.String()
-}
-
-type MonitorInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataMonitorInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataMonitorInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MonitorInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MonitorInstancesInput) GoString() string {
-	return s.String()
-}
-
-type MonitorInstancesOutput struct {
-	// Monitoring information for one or more instances.
-	InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	metadataMonitorInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataMonitorInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MonitorInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MonitorInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Describes the monitoring for the instance.
-type Monitoring struct {
-	// Indicates whether monitoring is enabled for the instance.
-	State *string `locationName:"state" type:"string" enum:"MonitoringState"`
-
-	metadataMonitoring `json:"-" xml:"-"`
-}
-
-type metadataMonitoring struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Monitoring) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Monitoring) GoString() string {
-	return s.String()
-}
-
-type MoveAddressToVpcInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string" required:"true"`
-
-	metadataMoveAddressToVpcInput `json:"-" xml:"-"`
-}
-
-type metadataMoveAddressToVpcInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MoveAddressToVpcInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MoveAddressToVpcInput) GoString() string {
-	return s.String()
-}
-
-type MoveAddressToVpcOutput struct {
-	// The allocation ID for the Elastic IP address.
-	AllocationId *string `locationName:"allocationId" type:"string"`
-
-	// The status of the move of the IP address.
-	Status *string `locationName:"status" type:"string" enum:"Status"`
-
-	metadataMoveAddressToVpcOutput `json:"-" xml:"-"`
-}
-
-type metadataMoveAddressToVpcOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MoveAddressToVpcOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MoveAddressToVpcOutput) GoString() string {
-	return s.String()
-}
-
-// Describes the status of a moving Elastic IP address.
-type MovingAddressStatus struct {
-	// The status of the Elastic IP address that's being moved to the EC2-VPC platform,
-	// or restored to the EC2-Classic platform.
-	MoveStatus *string `locationName:"moveStatus" type:"string" enum:"MoveStatus"`
-
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	metadataMovingAddressStatus `json:"-" xml:"-"`
-}
-
-type metadataMovingAddressStatus struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s MovingAddressStatus) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s MovingAddressStatus) GoString() string {
-	return s.String()
-}
-
-// Describes a network ACL.
-type NetworkAcl struct {
-	// Any associations between the network ACL and one or more subnets
-	Associations []*NetworkAclAssociation `locationName:"associationSet" locationNameList:"item" type:"list"`
-
-	// One or more entries (rules) in the network ACL.
-	Entries []*NetworkAclEntry `locationName:"entrySet" locationNameList:"item" type:"list"`
-
-	// Indicates whether this is the default network ACL for the VPC.
-	IsDefault *bool `locationName:"default" type:"boolean"`
-
-	// The ID of the network ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string"`
-
-	// Any tags assigned to the network ACL.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC for the network ACL.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataNetworkAcl `json:"-" xml:"-"`
-}
-
-type metadataNetworkAcl struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkAcl) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkAcl) GoString() string {
-	return s.String()
-}
-
-// Describes an association between a network ACL and a subnet.
-type NetworkAclAssociation struct {
-	// The ID of the association between a network ACL and a subnet.
-	NetworkAclAssociationId *string `locationName:"networkAclAssociationId" type:"string"`
-
-	// The ID of the network ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	metadataNetworkAclAssociation `json:"-" xml:"-"`
-}
-
-type metadataNetworkAclAssociation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkAclAssociation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkAclAssociation) GoString() string {
-	return s.String()
-}
-
-// Describes an entry in a network ACL.
-type NetworkAclEntry struct {
-	// The network range to allow or deny, in CIDR notation.
-	CidrBlock *string `locationName:"cidrBlock" type:"string"`
-
-	// Indicates whether the rule is an egress rule (applied to traffic leaving
-	// the subnet).
-	Egress *bool `locationName:"egress" type:"boolean"`
-
-	// ICMP protocol: The ICMP type and code.
-	IcmpTypeCode *IcmpTypeCode `locationName:"icmpTypeCode" type:"structure"`
-
-	// TCP or UDP protocols: The range of ports the rule applies to.
-	PortRange *PortRange `locationName:"portRange" type:"structure"`
-
-	// The protocol. A value of -1 means all protocols.
-	Protocol *string `locationName:"protocol" type:"string"`
-
-	// Indicates whether to allow or deny the traffic that matches the rule.
-	RuleAction *string `locationName:"ruleAction" type:"string" enum:"RuleAction"`
-
-	// The rule number for the entry. ACL entries are processed in ascending order
-	// by rule number.
-	RuleNumber *int64 `locationName:"ruleNumber" type:"integer"`
-
-	metadataNetworkAclEntry `json:"-" xml:"-"`
-}
-
-type metadataNetworkAclEntry struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkAclEntry) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkAclEntry) GoString() string {
-	return s.String()
-}
-
-// Describes a network interface.
-type NetworkInterface struct {
-	// The association information for an Elastic IP associated with the network
-	// interface.
-	Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"`
-
-	// The network interface attachment.
-	Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"`
-
-	// The Availability Zone.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// A description.
-	Description *string `locationName:"description" type:"string"`
-
-	// Any security groups for the network interface.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The MAC address.
-	MacAddress *string `locationName:"macAddress" type:"string"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The AWS account ID of the owner of the network interface.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The private DNS name.
-	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
-
-	// The IP address of the network interface within the subnet.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The private IP addresses associated with the network interface.
-	PrivateIpAddresses []*NetworkInterfacePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"`
-
-	// The ID of the entity that launched the instance on your behalf (for example,
-	// AWS Management Console or Auto Scaling).
-	RequesterId *string `locationName:"requesterId" type:"string"`
-
-	// Indicates whether the network interface is being managed by AWS.
-	RequesterManaged *bool `locationName:"requesterManaged" type:"boolean"`
-
-	// Indicates whether traffic to or from the instance is validated.
-	SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"`
-
-	// The status of the network interface.
-	Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// Any tags assigned to the network interface.
-	TagSet []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataNetworkInterface `json:"-" xml:"-"`
-}
-
-type metadataNetworkInterface struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkInterface) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkInterface) GoString() string {
-	return s.String()
-}
-
-// Describes association information for an Elastic IP address.
-type NetworkInterfaceAssociation struct {
-	// The allocation ID.
-	AllocationId *string `locationName:"allocationId" type:"string"`
-
-	// The association ID.
-	AssociationId *string `locationName:"associationId" type:"string"`
-
-	// The ID of the Elastic IP address owner.
-	IpOwnerId *string `locationName:"ipOwnerId" type:"string"`
-
-	// The public DNS name.
-	PublicDnsName *string `locationName:"publicDnsName" type:"string"`
-
-	// The address of the Elastic IP address bound to the network interface.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	metadataNetworkInterfaceAssociation `json:"-" xml:"-"`
-}
-
-type metadataNetworkInterfaceAssociation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkInterfaceAssociation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkInterfaceAssociation) GoString() string {
-	return s.String()
-}
-
-// Describes a network interface attachment.
-type NetworkInterfaceAttachment struct {
-	// The timestamp indicating when the attachment initiated.
-	AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The ID of the network interface attachment.
-	AttachmentId *string `locationName:"attachmentId" type:"string"`
-
-	// Indicates whether the network interface is deleted when the instance is terminated.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The device index of the network interface attachment on the instance.
-	DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The AWS account ID of the owner of the instance.
-	InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"`
-
-	// The attachment state.
-	Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"`
-
-	metadataNetworkInterfaceAttachment `json:"-" xml:"-"`
-}
-
-type metadataNetworkInterfaceAttachment struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkInterfaceAttachment) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkInterfaceAttachment) GoString() string {
-	return s.String()
-}
-
-// Describes an attachment change.
-type NetworkInterfaceAttachmentChanges struct {
-	// The ID of the network interface attachment.
-	AttachmentId *string `locationName:"attachmentId" type:"string"`
-
-	// Indicates whether the network interface is deleted when the instance is terminated.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	metadataNetworkInterfaceAttachmentChanges `json:"-" xml:"-"`
-}
-
-type metadataNetworkInterfaceAttachmentChanges struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkInterfaceAttachmentChanges) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkInterfaceAttachmentChanges) GoString() string {
-	return s.String()
-}
-
-// Describes the private IP address of a network interface.
-type NetworkInterfacePrivateIpAddress struct {
-	// The association information for an Elastic IP address associated with the
-	// network interface.
-	Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"`
-
-	// Indicates whether this IP address is the primary private IP address of the
-	// network interface.
-	Primary *bool `locationName:"primary" type:"boolean"`
-
-	// The private DNS name.
-	PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
-
-	// The private IP address.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	metadataNetworkInterfacePrivateIpAddress `json:"-" xml:"-"`
-}
-
-type metadataNetworkInterfacePrivateIpAddress struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NetworkInterfacePrivateIpAddress) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NetworkInterfacePrivateIpAddress) GoString() string {
-	return s.String()
-}
-
-type NewDhcpConfiguration struct {
-	Key *string `locationName:"key" type:"string"`
-
-	Values []*string `locationName:"Value" locationNameList:"item" type:"list"`
-
-	metadataNewDhcpConfiguration `json:"-" xml:"-"`
-}
-
-type metadataNewDhcpConfiguration struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s NewDhcpConfiguration) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s NewDhcpConfiguration) GoString() string {
-	return s.String()
-}
-
-// Describes the placement for the instance.
-type Placement struct {
-	// The Availability Zone of the instance.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The name of the placement group the instance is in (for cluster compute instances).
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	// The tenancy of the instance (if the instance is running in a VPC). An instance
-	// with a tenancy of dedicated runs on single-tenant hardware.
-	Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"`
-
-	metadataPlacement `json:"-" xml:"-"`
-}
-
-type metadataPlacement struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Placement) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Placement) GoString() string {
-	return s.String()
-}
-
-// Describes a placement group.
-type PlacementGroup struct {
-	// The name of the placement group.
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	// The state of the placement group.
-	State *string `locationName:"state" type:"string" enum:"PlacementGroupState"`
-
-	// The placement strategy.
-	Strategy *string `locationName:"strategy" type:"string" enum:"PlacementStrategy"`
-
-	metadataPlacementGroup `json:"-" xml:"-"`
-}
-
-type metadataPlacementGroup struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PlacementGroup) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PlacementGroup) GoString() string {
-	return s.String()
-}
-
-// Describes a range of ports.
-type PortRange struct {
-	// The first port in the range.
-	From *int64 `locationName:"from" type:"integer"`
-
-	// The last port in the range.
-	To *int64 `locationName:"to" type:"integer"`
-
-	metadataPortRange `json:"-" xml:"-"`
-}
-
-type metadataPortRange struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PortRange) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PortRange) GoString() string {
-	return s.String()
-}
-
-// Describes prefixes for AWS services.
-type PrefixList struct {
-	// The IP address range of the AWS service.
-	Cidrs []*string `locationName:"cidrSet" locationNameList:"item" type:"list"`
-
-	// The ID of the prefix.
-	PrefixListId *string `locationName:"prefixListId" type:"string"`
-
-	// The name of the prefix.
-	PrefixListName *string `locationName:"prefixListName" type:"string"`
-
-	metadataPrefixList `json:"-" xml:"-"`
-}
-
-type metadataPrefixList struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PrefixList) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PrefixList) GoString() string {
-	return s.String()
-}
-
-// The ID of the prefix.
-type PrefixListId struct {
-	// The ID of the prefix.
-	PrefixListId *string `locationName:"prefixListId" type:"string"`
-
-	metadataPrefixListId `json:"-" xml:"-"`
-}
-
-type metadataPrefixListId struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PrefixListId) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PrefixListId) GoString() string {
-	return s.String()
-}
-
-// Describes the price for a Reserved Instance.
-type PriceSchedule struct {
-	// The current price schedule, as determined by the term remaining for the Reserved
-	// Instance in the listing.
-	//
-	// A specific price schedule is always in effect, but only one price schedule
-	// can be active at any time. Take, for example, a Reserved Instance listing
-	// that has five months remaining in its term. When you specify price schedules
-	// for five months and two months, this means that schedule 1, covering the
-	// first three months of the remaining term, will be active during months 5,
-	// 4, and 3. Then schedule 2, covering the last two months of the term, will
-	// be active for months 2 and 1.
-	Active *bool `locationName:"active" type:"boolean"`
-
-	// The currency for transacting the Reserved Instance resale. At this time,
-	// the only supported currency is USD.
-	CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"`
-
-	// The fixed price for the term.
-	Price *float64 `locationName:"price" type:"double"`
-
-	// The number of months remaining in the reservation. For example, 2 is the
-	// second to the last month before the capacity reservation expires.
-	Term *int64 `locationName:"term" type:"long"`
-
-	metadataPriceSchedule `json:"-" xml:"-"`
-}
-
-type metadataPriceSchedule struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PriceSchedule) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PriceSchedule) GoString() string {
-	return s.String()
-}
-
-// Describes the price for a Reserved Instance.
-type PriceScheduleSpecification struct {
-	// The currency for transacting the Reserved Instance resale. At this time,
-	// the only supported currency is USD.
-	CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"`
-
-	// The fixed price for the term.
-	Price *float64 `locationName:"price" type:"double"`
-
-	// The number of months remaining in the reservation. For example, 2 is the
-	// second to the last month before the capacity reservation expires.
-	Term *int64 `locationName:"term" type:"long"`
-
-	metadataPriceScheduleSpecification `json:"-" xml:"-"`
-}
-
-type metadataPriceScheduleSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PriceScheduleSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PriceScheduleSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance offering.
-type PricingDetail struct {
-	// The number of instances available for the price.
-	Count *int64 `locationName:"count" type:"integer"`
-
-	// The price per instance.
-	Price *float64 `locationName:"price" type:"double"`
-
-	metadataPricingDetail `json:"-" xml:"-"`
-}
-
-type metadataPricingDetail struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PricingDetail) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PricingDetail) GoString() string {
-	return s.String()
-}
-
-// Describes a secondary private IP address for a network interface.
-type PrivateIpAddressSpecification struct {
-	// Indicates whether the private IP address is the primary private IP address.
-	// Only one IP address can be designated as primary.
-	Primary *bool `locationName:"primary" type:"boolean"`
-
-	// The private IP addresses.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string" required:"true"`
-
-	metadataPrivateIpAddressSpecification `json:"-" xml:"-"`
-}
-
-type metadataPrivateIpAddressSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PrivateIpAddressSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PrivateIpAddressSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a product code.
-type ProductCode struct {
-	// The product code.
-	ProductCodeId *string `locationName:"productCode" type:"string"`
-
-	// The type of product code.
-	ProductCodeType *string `locationName:"type" type:"string" enum:"ProductCodeValues"`
-
-	metadataProductCode `json:"-" xml:"-"`
-}
-
-type metadataProductCode struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ProductCode) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ProductCode) GoString() string {
-	return s.String()
-}
-
-// Describes a virtual private gateway propagating route.
-type PropagatingVgw struct {
-	// The ID of the virtual private gateway (VGW).
-	GatewayId *string `locationName:"gatewayId" type:"string"`
-
-	metadataPropagatingVgw `json:"-" xml:"-"`
-}
-
-type metadataPropagatingVgw struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PropagatingVgw) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PropagatingVgw) GoString() string {
-	return s.String()
-}
-
-type PurchaseReservedInstancesOfferingInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The number of Reserved Instances to purchase.
-	InstanceCount *int64 `type:"integer" required:"true"`
-
-	// Specified for Reserved Instance Marketplace offerings to limit the total
-	// order and ensure that the Reserved Instances are not purchased at unexpected
-	// prices.
-	LimitPrice *ReservedInstanceLimitPrice `locationName:"limitPrice" type:"structure"`
-
-	// The ID of the Reserved Instance offering to purchase.
-	ReservedInstancesOfferingId *string `type:"string" required:"true"`
-
-	metadataPurchaseReservedInstancesOfferingInput `json:"-" xml:"-"`
-}
-
-type metadataPurchaseReservedInstancesOfferingInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PurchaseReservedInstancesOfferingInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PurchaseReservedInstancesOfferingInput) GoString() string {
-	return s.String()
-}
-
-type PurchaseReservedInstancesOfferingOutput struct {
-	// The IDs of the purchased Reserved Instances.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	metadataPurchaseReservedInstancesOfferingOutput `json:"-" xml:"-"`
-}
-
-type metadataPurchaseReservedInstancesOfferingOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s PurchaseReservedInstancesOfferingOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s PurchaseReservedInstancesOfferingOutput) GoString() string {
-	return s.String()
-}
-
-type RebootInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataRebootInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataRebootInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RebootInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RebootInstancesInput) GoString() string {
-	return s.String()
-}
-
-type RebootInstancesOutput struct {
-	metadataRebootInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataRebootInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RebootInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RebootInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a recurring charge.
-type RecurringCharge struct {
-	// The amount of the recurring charge.
-	Amount *float64 `locationName:"amount" type:"double"`
-
-	// The frequency of the recurring charge.
-	Frequency *string `locationName:"frequency" type:"string" enum:"RecurringChargeFrequency"`
-
-	metadataRecurringCharge `json:"-" xml:"-"`
-}
-
-type metadataRecurringCharge struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RecurringCharge) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RecurringCharge) GoString() string {
-	return s.String()
-}
-
-// Describes a region.
-type Region struct {
-	// The region service endpoint.
-	Endpoint *string `locationName:"regionEndpoint" type:"string"`
-
-	// The name of the region.
-	RegionName *string `locationName:"regionName" type:"string"`
-
-	metadataRegion `json:"-" xml:"-"`
-}
-
-type metadataRegion struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Region) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Region) GoString() string {
-	return s.String()
-}
-
-type RegisterImageInput struct {
-	// The architecture of the AMI.
-	//
-	// Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs,
-	// the architecture specified in the manifest file.
-	Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"`
-
-	// One or more block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
-
-	// A description for your AMI.
-	Description *string `locationName:"description" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The full path to your AMI manifest in Amazon S3 storage.
-	ImageLocation *string `type:"string"`
-
-	// The ID of the kernel.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// A name for your AMI.
-	//
-	// Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets
-	// ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('),
-	// at-signs (@), or underscores(_)
-	Name *string `locationName:"name" type:"string" required:"true"`
-
-	// The ID of the RAM disk.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	// The name of the root device (for example, /dev/sda1, or /dev/xvda).
-	RootDeviceName *string `locationName:"rootDeviceName" type:"string"`
-
-	// Set to simple to enable enhanced networking for the AMI and any instances
-	// that you launch from the AMI.
-	//
-	// There is no way to disable enhanced networking at this time.
-	//
-	// This option is supported only for HVM AMIs. Specifying this option with
-	// a PV AMI can make instances launched from the AMI unreachable.
-	SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"`
-
-	// The type of virtualization.
-	//
-	// Default: paravirtual
-	VirtualizationType *string `locationName:"virtualizationType" type:"string"`
-
-	metadataRegisterImageInput `json:"-" xml:"-"`
-}
-
-type metadataRegisterImageInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RegisterImageInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RegisterImageInput) GoString() string {
-	return s.String()
-}
-
-type RegisterImageOutput struct {
-	// The ID of the newly registered AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	metadataRegisterImageOutput `json:"-" xml:"-"`
-}
-
-type metadataRegisterImageOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RegisterImageOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RegisterImageOutput) GoString() string {
-	return s.String()
-}
-
-type RejectVpcPeeringConnectionInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"`
-
-	metadataRejectVpcPeeringConnectionInput `json:"-" xml:"-"`
-}
-
-type metadataRejectVpcPeeringConnectionInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RejectVpcPeeringConnectionInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RejectVpcPeeringConnectionInput) GoString() string {
-	return s.String()
-}
-
-type RejectVpcPeeringConnectionOutput struct {
-	// Returns true if the request succeeds; otherwise, it returns an error.
-	Return *bool `locationName:"return" type:"boolean"`
-
-	metadataRejectVpcPeeringConnectionOutput `json:"-" xml:"-"`
-}
-
-type metadataRejectVpcPeeringConnectionOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RejectVpcPeeringConnectionOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RejectVpcPeeringConnectionOutput) GoString() string {
-	return s.String()
-}
-
-type ReleaseAddressInput struct {
-	// [EC2-VPC] The allocation ID. Required for EC2-VPC.
-	AllocationId *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// [EC2-Classic] The Elastic IP address. Required for EC2-Classic.
-	PublicIp *string `type:"string"`
-
-	metadataReleaseAddressInput `json:"-" xml:"-"`
-}
-
-type metadataReleaseAddressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReleaseAddressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReleaseAddressInput) GoString() string {
-	return s.String()
-}
-
-type ReleaseAddressOutput struct {
-	metadataReleaseAddressOutput `json:"-" xml:"-"`
-}
-
-type metadataReleaseAddressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReleaseAddressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReleaseAddressOutput) GoString() string {
-	return s.String()
-}
-
-type ReplaceNetworkAclAssociationInput struct {
-	// The ID of the current association between the original network ACL and the
-	// subnet.
-	AssociationId *string `locationName:"associationId" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the new network ACL to associate with the subnet.
-	NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
-
-	metadataReplaceNetworkAclAssociationInput `json:"-" xml:"-"`
-}
-
-type metadataReplaceNetworkAclAssociationInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceNetworkAclAssociationInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceNetworkAclAssociationInput) GoString() string {
-	return s.String()
-}
-
-type ReplaceNetworkAclAssociationOutput struct {
-	// The ID of the new association.
-	NewAssociationId *string `locationName:"newAssociationId" type:"string"`
-
-	metadataReplaceNetworkAclAssociationOutput `json:"-" xml:"-"`
-}
-
-type metadataReplaceNetworkAclAssociationOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceNetworkAclAssociationOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceNetworkAclAssociationOutput) GoString() string {
-	return s.String()
-}
-
-type ReplaceNetworkAclEntryInput struct {
-	// The network range to allow or deny, in CIDR notation.
-	CidrBlock *string `locationName:"cidrBlock" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Indicates whether to replace the egress rule.
-	//
-	// Default: If no value is specified, we replace the ingress rule.
-	Egress *bool `locationName:"egress" type:"boolean" required:"true"`
-
-	// ICMP protocol: The ICMP type and code. Required if specifying 1 (ICMP) for
-	// the protocol.
-	IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"`
-
-	// The ID of the ACL.
-	NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
-
-	// TCP or UDP protocols: The range of ports the rule applies to. Required if
-	// specifying 6 (TCP) or 17 (UDP) for the protocol.
-	PortRange *PortRange `locationName:"portRange" type:"structure"`
-
-	// The IP protocol. You can specify all or -1 to mean all protocols.
-	Protocol *string `locationName:"protocol" type:"string" required:"true"`
-
-	// Indicates whether to allow or deny the traffic that matches the rule.
-	RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"`
-
-	// The rule number of the entry to replace.
-	RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"`
-
-	metadataReplaceNetworkAclEntryInput `json:"-" xml:"-"`
-}
-
-type metadataReplaceNetworkAclEntryInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceNetworkAclEntryInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceNetworkAclEntryInput) GoString() string {
-	return s.String()
-}
-
-type ReplaceNetworkAclEntryOutput struct {
-	metadataReplaceNetworkAclEntryOutput `json:"-" xml:"-"`
-}
-
-type metadataReplaceNetworkAclEntryOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceNetworkAclEntryOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceNetworkAclEntryOutput) GoString() string {
-	return s.String()
-}
-
-type ReplaceRouteInput struct {
-	// The CIDR address block used for the destination match. The value you provide
-	// must match the CIDR of an existing route in the table.
-	DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of an Internet gateway or virtual private gateway.
-	GatewayId *string `locationName:"gatewayId" type:"string"`
-
-	// The ID of a NAT instance in your VPC.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The ID of a network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	// The ID of a VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
-
-	metadataReplaceRouteInput `json:"-" xml:"-"`
-}
-
-type metadataReplaceRouteInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceRouteInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceRouteInput) GoString() string {
-	return s.String()
-}
-
-type ReplaceRouteOutput struct {
-	metadataReplaceRouteOutput `json:"-" xml:"-"`
-}
-
-type metadataReplaceRouteOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceRouteOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceRouteOutput) GoString() string {
-	return s.String()
-}
-
-type ReplaceRouteTableAssociationInput struct {
-	// The association ID.
-	AssociationId *string `locationName:"associationId" type:"string" required:"true"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the new route table to associate with the subnet.
-	RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
-
-	metadataReplaceRouteTableAssociationInput `json:"-" xml:"-"`
-}
-
-type metadataReplaceRouteTableAssociationInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceRouteTableAssociationInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceRouteTableAssociationInput) GoString() string {
-	return s.String()
-}
-
-type ReplaceRouteTableAssociationOutput struct {
-	// The ID of the new association.
-	NewAssociationId *string `locationName:"newAssociationId" type:"string"`
-
-	metadataReplaceRouteTableAssociationOutput `json:"-" xml:"-"`
-}
-
-type metadataReplaceRouteTableAssociationOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReplaceRouteTableAssociationOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReplaceRouteTableAssociationOutput) GoString() string {
-	return s.String()
-}
-
-type ReportInstanceStatusInput struct {
-	// Descriptive text about the health state of your instance.
-	Description *string `locationName:"description" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The time at which the reported instance health state ended.
-	EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// One or more instances.
-	Instances []*string `locationName:"instanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	// One or more reason codes that describes the health state of your instance.
-	//
-	//  instance-stuck-in-state: My instance is stuck in a state.
-	//
-	// unresponsive: My instance is unresponsive.
-	//
-	// not-accepting-credentials: My instance is not accepting my credentials.
-	//
-	// password-not-available: A password is not available for my instance.
-	//
-	// performance-network: My instance is experiencing performance problems which
-	// I believe are network related.
-	//
-	// performance-instance-store: My instance is experiencing performance problems
-	// which I believe are related to the instance stores.
-	//
-	// performance-ebs-volume: My instance is experiencing performance problems
-	// which I believe are related to an EBS volume.
-	//
-	// performance-other: My instance is experiencing performance problems.
-	//
-	// other: [explain using the description parameter]
-	ReasonCodes []*string `locationName:"reasonCode" locationNameList:"item" type:"list" required:"true"`
-
-	// The time at which the reported instance health state began.
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The status of all instances listed.
-	Status *string `locationName:"status" type:"string" required:"true" enum:"ReportStatusType"`
-
-	metadataReportInstanceStatusInput `json:"-" xml:"-"`
-}
-
-type metadataReportInstanceStatusInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReportInstanceStatusInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReportInstanceStatusInput) GoString() string {
-	return s.String()
-}
-
-type ReportInstanceStatusOutput struct {
-	metadataReportInstanceStatusOutput `json:"-" xml:"-"`
-}
-
-type metadataReportInstanceStatusOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReportInstanceStatusOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReportInstanceStatusOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for RequestSpotFleet.
-type RequestSpotFleetInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The configuration for the Spot fleet request.
-	SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"`
-
-	metadataRequestSpotFleetInput `json:"-" xml:"-"`
-}
-
-type metadataRequestSpotFleetInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RequestSpotFleetInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RequestSpotFleetInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of RequestSpotFleet.
-type RequestSpotFleetOutput struct {
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	metadataRequestSpotFleetOutput `json:"-" xml:"-"`
-}
-
-type metadataRequestSpotFleetOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RequestSpotFleetOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RequestSpotFleetOutput) GoString() string {
-	return s.String()
-}
-
-// Contains the parameters for RequestSpotInstances.
-type RequestSpotInstancesInput struct {
-	// The user-specified name for a logical grouping of bids.
-	//
-	// When you specify an Availability Zone group in a Spot Instance request,
-	// all Spot instances in the request are launched in the same Availability Zone.
-	// Instance proximity is maintained with this parameter, but the choice of Availability
-	// Zone is not. The group applies only to bids for Spot Instances of the same
-	// instance type. Any additional Spot instance requests that are specified with
-	// the same Availability Zone group name are launched in that same Availability
-	// Zone, as long as at least one instance from the group is still active.
-	//
-	// If there is no active instance running in the Availability Zone group that
-	// you specify for a new Spot instance request (all instances are terminated,
-	// the bid is expired, or the bid falls below current market), then Amazon EC2
-	// launches the instance in any Availability Zone where the constraint can be
-	// met. Consequently, the subsequent set of Spot instances could be placed in
-	// a different zone from the original request, even if you specified the same
-	// Availability Zone group.
-	//
-	// Default: Instances are launched in any available Availability Zone.
-	AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"`
-
-	// The required duration for the Spot instances, in minutes. This value must
-	// be a multiple of 60 (60, 120, 180, 240, 300, or 360).
-	//
-	// The duration period starts as soon as your Spot instance receives its instance
-	// ID. At the end of the duration period, Amazon EC2 marks the Spot instance
-	// for termination and provides a Spot instance termination notice, which gives
-	// the instance a two-minute warning before it terminates.
-	//
-	// Note that you can't specify an Availability Zone group or a launch group
-	// if you specify a duration.
-	BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
-
-	// Unique, case-sensitive identifier that you provide to ensure the idempotency
-	// of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The maximum number of Spot instances to launch.
-	//
-	// Default: 1
-	InstanceCount *int64 `locationName:"instanceCount" type:"integer"`
-
-	// The instance launch group. Launch groups are Spot instances that launch together
-	// and terminate together.
-	//
-	// Default: Instances are launched and terminated individually
-	LaunchGroup *string `locationName:"launchGroup" type:"string"`
-
-	// Describes the launch specification for an instance.
-	LaunchSpecification *RequestSpotLaunchSpecification `type:"structure"`
-
-	// The maximum hourly price (bid) for any Spot instance launched to fulfill
-	// the request.
-	SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"`
-
-	// The Spot instance request type.
-	//
-	// Default: one-time
-	Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"`
-
-	// The start date of the request. If this is a one-time request, the request
-	// becomes active at this date and time and remains active until all instances
-	// launch, the request expires, or the request is canceled. If the request is
-	// persistent, the request becomes active at this date and time and remains
-	// active until it expires or is canceled.
-	//
-	// Default: The request is effective indefinitely.
-	ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The end date of the request. If this is a one-time request, the request remains
-	// active until all instances launch, the request is canceled, or this date
-	// is reached. If the request is persistent, it remains active until it is canceled
-	// or this date and time is reached.
-	//
-	// Default: The request is effective indefinitely.
-	ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataRequestSpotInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataRequestSpotInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RequestSpotInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RequestSpotInstancesInput) GoString() string {
-	return s.String()
-}
-
-// Contains the output of RequestSpotInstances.
-type RequestSpotInstancesOutput struct {
-	// One or more Spot instance requests.
-	SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"`
-
-	metadataRequestSpotInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataRequestSpotInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RequestSpotInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RequestSpotInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Describes the launch specification for an instance.
-type RequestSpotLaunchSpecification struct {
-	// Deprecated.
-	AddressingType *string `locationName:"addressingType" type:"string"`
-
-	// One or more block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// Indicates whether the instance is optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal EBS I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS
-	// Optimized instance.
-	//
-	// Default: false
-	EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
-
-	// The IAM instance profile.
-	IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
-
-	// The ID of the AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The ID of the kernel.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// The name of the key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	// Describes the monitoring for the instance.
-	Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"`
-
-	// One or more network interfaces.
-	NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"NetworkInterface" locationNameList:"item" type:"list"`
-
-	// The placement information for the instance.
-	Placement *SpotPlacement `locationName:"placement" type:"structure"`
-
-	// The ID of the RAM disk.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"`
-
-	SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"item" type:"list"`
-
-	// The ID of the subnet in which to launch the instance.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// The Base64-encoded MIME user data to make available to the instances.
-	UserData *string `locationName:"userData" type:"string"`
-
-	metadataRequestSpotLaunchSpecification `json:"-" xml:"-"`
-}
-
-type metadataRequestSpotLaunchSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RequestSpotLaunchSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RequestSpotLaunchSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a reservation.
-type Reservation struct {
-	// One or more security groups.
-	Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// One or more instances.
-	Instances []*Instance `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	// The ID of the AWS account that owns the reservation.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The ID of the requester that launched the instances on your behalf (for example,
-	// AWS Management Console or Auto Scaling).
-	RequesterId *string `locationName:"requesterId" type:"string"`
-
-	// The ID of the reservation.
-	ReservationId *string `locationName:"reservationId" type:"string"`
-
-	metadataReservation `json:"-" xml:"-"`
-}
-
-type metadataReservation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Reservation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Reservation) GoString() string {
-	return s.String()
-}
-
-// Describes the limit price of a Reserved Instance offering.
-type ReservedInstanceLimitPrice struct {
-	// Used for Reserved Instance Marketplace offerings. Specifies the limit price
-	// on the total order (instanceCount * price).
-	Amount *float64 `locationName:"amount" type:"double"`
-
-	// The currency in which the limitPrice amount is specified. At this time, the
-	// only supported currency is USD.
-	CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"`
-
-	metadataReservedInstanceLimitPrice `json:"-" xml:"-"`
-}
-
-type metadataReservedInstanceLimitPrice struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstanceLimitPrice) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstanceLimitPrice) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance.
-type ReservedInstances struct {
-	// The Availability Zone in which the Reserved Instance can be used.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The currency of the Reserved Instance. It's specified using ISO 4217 standard
-	// currency codes. At this time, the only supported currency is USD.
-	CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"`
-
-	// The duration of the Reserved Instance, in seconds.
-	Duration *int64 `locationName:"duration" type:"long"`
-
-	// The time when the Reserved Instance expires.
-	End *time.Time `locationName:"end" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The purchase price of the Reserved Instance.
-	FixedPrice *float64 `locationName:"fixedPrice" type:"float"`
-
-	// The number of Reserved Instances purchased.
-	InstanceCount *int64 `locationName:"instanceCount" type:"integer"`
-
-	// The tenancy of the reserved instance.
-	InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
-
-	// The instance type on which the Reserved Instance can be used.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The Reserved Instance offering type.
-	OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"`
-
-	// The Reserved Instance product platform description.
-	ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"`
-
-	// The recurring charge tag assigned to the resource.
-	RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"`
-
-	// The ID of the Reserved Instance.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	// The date and time the Reserved Instance started.
-	Start *time.Time `locationName:"start" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The state of the Reserved Instance purchase.
-	State *string `locationName:"state" type:"string" enum:"ReservedInstanceState"`
-
-	// Any tags assigned to the resource.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The usage price of the Reserved Instance, per hour.
-	UsagePrice *float64 `locationName:"usagePrice" type:"float"`
-
-	metadataReservedInstances `json:"-" xml:"-"`
-}
-
-type metadataReservedInstances struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstances) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstances) GoString() string {
-	return s.String()
-}
-
-// Describes the configuration settings for the modified Reserved Instances.
-type ReservedInstancesConfiguration struct {
-	// The Availability Zone for the modified Reserved Instances.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The number of modified Reserved Instances.
-	InstanceCount *int64 `locationName:"instanceCount" type:"integer"`
-
-	// The instance type for the modified Reserved Instances.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The network platform of the modified Reserved Instances, which is either
-	// EC2-Classic or EC2-VPC.
-	Platform *string `locationName:"platform" type:"string"`
-
-	metadataReservedInstancesConfiguration `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesConfiguration struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesConfiguration) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesConfiguration) GoString() string {
-	return s.String()
-}
-
-// Describes the ID of a Reserved Instance.
-type ReservedInstancesId struct {
-	// The ID of the Reserved Instance.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	metadataReservedInstancesId `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesId struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesId) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesId) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance listing.
-type ReservedInstancesListing struct {
-	// A unique, case-sensitive key supplied by the client to ensure that the request
-	// is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// The time the listing was created.
-	CreateDate *time.Time `locationName:"createDate" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The number of instances in this state.
-	InstanceCounts []*InstanceCount `locationName:"instanceCounts" locationNameList:"item" type:"list"`
-
-	// The price of the Reserved Instance listing.
-	PriceSchedules []*PriceSchedule `locationName:"priceSchedules" locationNameList:"item" type:"list"`
-
-	// The ID of the Reserved Instance.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	// The ID of the Reserved Instance listing.
-	ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"`
-
-	// The status of the Reserved Instance listing.
-	Status *string `locationName:"status" type:"string" enum:"ListingStatus"`
-
-	// The reason for the current status of the Reserved Instance listing. The response
-	// can be blank.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// Any tags assigned to the resource.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The last modified timestamp of the listing.
-	UpdateDate *time.Time `locationName:"updateDate" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataReservedInstancesListing `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesListing struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesListing) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesListing) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance modification.
-type ReservedInstancesModification struct {
-	// A unique, case-sensitive key supplied by the client to ensure that the request
-	// is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// The time when the modification request was created.
-	CreateDate *time.Time `locationName:"createDate" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The time for the modification to become effective.
-	EffectiveDate *time.Time `locationName:"effectiveDate" type:"timestamp" timestampFormat:"iso8601"`
-
-	// Contains target configurations along with their corresponding new Reserved
-	// Instance IDs.
-	ModificationResults []*ReservedInstancesModificationResult `locationName:"modificationResultSet" locationNameList:"item" type:"list"`
-
-	// The IDs of one or more Reserved Instances.
-	ReservedInstancesIds []*ReservedInstancesId `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"`
-
-	// A unique ID for the Reserved Instance modification.
-	ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"`
-
-	// The status of the Reserved Instances modification request.
-	Status *string `locationName:"status" type:"string"`
-
-	// The reason for the status.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// The time when the modification request was last updated.
-	UpdateDate *time.Time `locationName:"updateDate" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataReservedInstancesModification `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesModification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesModification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesModification) GoString() string {
-	return s.String()
-}
-
-type ReservedInstancesModificationResult struct {
-	// The ID for the Reserved Instances that were created as part of the modification
-	// request. This field is only available when the modification is fulfilled.
-	ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"`
-
-	// The target Reserved Instances configurations supplied as part of the modification
-	// request.
-	TargetConfiguration *ReservedInstancesConfiguration `locationName:"targetConfiguration" type:"structure"`
-
-	metadataReservedInstancesModificationResult `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesModificationResult struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesModificationResult) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesModificationResult) GoString() string {
-	return s.String()
-}
-
-// Describes a Reserved Instance offering.
-type ReservedInstancesOffering struct {
-	// The Availability Zone in which the Reserved Instance can be used.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The currency of the Reserved Instance offering you are purchasing. It's specified
-	// using ISO 4217 standard currency codes. At this time, the only supported
-	// currency is USD.
-	CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"`
-
-	// The duration of the Reserved Instance, in seconds.
-	Duration *int64 `locationName:"duration" type:"long"`
-
-	// The purchase price of the Reserved Instance.
-	FixedPrice *float64 `locationName:"fixedPrice" type:"float"`
-
-	// The tenancy of the reserved instance.
-	InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
-
-	// The instance type on which the Reserved Instance can be used.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// Indicates whether the offering is available through the Reserved Instance
-	// Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering,
-	// this is true.
-	Marketplace *bool `locationName:"marketplace" type:"boolean"`
-
-	// The Reserved Instance offering type.
-	OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"`
-
-	// The pricing details of the Reserved Instance offering.
-	PricingDetails []*PricingDetail `locationName:"pricingDetailsSet" locationNameList:"item" type:"list"`
-
-	// The Reserved Instance product platform description.
-	ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"`
-
-	// The recurring charge tag assigned to the resource.
-	RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"`
-
-	// The ID of the Reserved Instance offering.
-	ReservedInstancesOfferingId *string `locationName:"reservedInstancesOfferingId" type:"string"`
-
-	// The usage price of the Reserved Instance, per hour.
-	UsagePrice *float64 `locationName:"usagePrice" type:"float"`
-
-	metadataReservedInstancesOffering `json:"-" xml:"-"`
-}
-
-type metadataReservedInstancesOffering struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ReservedInstancesOffering) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ReservedInstancesOffering) GoString() string {
-	return s.String()
-}
-
-type ResetImageAttributeInput struct {
-	// The attribute to reset (currently you can only reset the launch permission
-	// attribute).
-	Attribute *string `type:"string" required:"true" enum:"ResetImageAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the AMI.
-	ImageId *string `type:"string" required:"true"`
-
-	metadataResetImageAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataResetImageAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetImageAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetImageAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ResetImageAttributeOutput struct {
-	metadataResetImageAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataResetImageAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetImageAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetImageAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ResetInstanceAttributeInput struct {
-	// The attribute to reset.
-	Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
-
-	metadataResetInstanceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataResetInstanceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetInstanceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetInstanceAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ResetInstanceAttributeOutput struct {
-	metadataResetInstanceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataResetInstanceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetInstanceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetInstanceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ResetNetworkInterfaceAttributeInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	// The source/destination checking attribute. Resets the value to true.
-	SourceDestCheck *string `locationName:"sourceDestCheck" type:"string"`
-
-	metadataResetNetworkInterfaceAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataResetNetworkInterfaceAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetNetworkInterfaceAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetNetworkInterfaceAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ResetNetworkInterfaceAttributeOutput struct {
-	metadataResetNetworkInterfaceAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataResetNetworkInterfaceAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetNetworkInterfaceAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetNetworkInterfaceAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type ResetSnapshotAttributeInput struct {
-	// The attribute to reset. Currently, only the attribute for permission to create
-	// volumes can be reset.
-	Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The ID of the snapshot.
-	SnapshotId *string `type:"string" required:"true"`
-
-	metadataResetSnapshotAttributeInput `json:"-" xml:"-"`
-}
-
-type metadataResetSnapshotAttributeInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetSnapshotAttributeInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetSnapshotAttributeInput) GoString() string {
-	return s.String()
-}
-
-type ResetSnapshotAttributeOutput struct {
-	metadataResetSnapshotAttributeOutput `json:"-" xml:"-"`
-}
-
-type metadataResetSnapshotAttributeOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s ResetSnapshotAttributeOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s ResetSnapshotAttributeOutput) GoString() string {
-	return s.String()
-}
-
-type RestoreAddressToClassicInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string" required:"true"`
-
-	metadataRestoreAddressToClassicInput `json:"-" xml:"-"`
-}
-
-type metadataRestoreAddressToClassicInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RestoreAddressToClassicInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RestoreAddressToClassicInput) GoString() string {
-	return s.String()
-}
-
-type RestoreAddressToClassicOutput struct {
-	// The Elastic IP address.
-	PublicIp *string `locationName:"publicIp" type:"string"`
-
-	// The move status for the IP address.
-	Status *string `locationName:"status" type:"string" enum:"Status"`
-
-	metadataRestoreAddressToClassicOutput `json:"-" xml:"-"`
-}
-
-type metadataRestoreAddressToClassicOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RestoreAddressToClassicOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RestoreAddressToClassicOutput) GoString() string {
-	return s.String()
-}
-
-type RevokeSecurityGroupEgressInput struct {
-	// The CIDR IP address range. You can't specify this parameter when specifying
-	// a source security group.
-	CidrIp *string `locationName:"cidrIp" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The start of port range for the TCP and UDP protocols, or an ICMP type number.
-	// For the ICMP type number, use -1 to specify all ICMP types.
-	FromPort *int64 `locationName:"fromPort" type:"integer"`
-
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string" required:"true"`
-
-	// A set of IP permissions. You can't specify a destination security group and
-	// a CIDR IP address range.
-	IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"`
-
-	// The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).
-	// Use -1 to specify all.
-	IpProtocol *string `locationName:"ipProtocol" type:"string"`
-
-	// The name of a destination security group. To revoke outbound access to a
-	// destination security group, we recommend that you use a set of IP permissions
-	// instead.
-	SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"`
-
-	// The AWS account number for a destination security group. To revoke outbound
-	// access to a destination security group, we recommend that you use a set of
-	// IP permissions instead.
-	SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"`
-
-	// The end of port range for the TCP and UDP protocols, or an ICMP code number.
-	// For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.
-	ToPort *int64 `locationName:"toPort" type:"integer"`
-
-	metadataRevokeSecurityGroupEgressInput `json:"-" xml:"-"`
-}
-
-type metadataRevokeSecurityGroupEgressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RevokeSecurityGroupEgressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RevokeSecurityGroupEgressInput) GoString() string {
-	return s.String()
-}
-
-type RevokeSecurityGroupEgressOutput struct {
-	metadataRevokeSecurityGroupEgressOutput `json:"-" xml:"-"`
-}
-
-type metadataRevokeSecurityGroupEgressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RevokeSecurityGroupEgressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RevokeSecurityGroupEgressOutput) GoString() string {
-	return s.String()
-}
-
-type RevokeSecurityGroupIngressInput struct {
-	// The CIDR IP address range. You can't specify this parameter when specifying
-	// a source security group.
-	CidrIp *string `type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// The start of port range for the TCP and UDP protocols, or an ICMP type number.
-	// For the ICMP type number, use -1 to specify all ICMP types.
-	FromPort *int64 `type:"integer"`
-
-	// The ID of the security group. Required for a security group in a nondefault
-	// VPC.
-	GroupId *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The name of the security group.
-	GroupName *string `type:"string"`
-
-	// A set of IP permissions. You can't specify a source security group and a
-	// CIDR IP address range.
-	IpPermissions []*IpPermission `locationNameList:"item" type:"list"`
-
-	// The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).
-	// Use -1 to specify all.
-	IpProtocol *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The name of the source security group. You can't
-	// specify this parameter in combination with the following parameters: the
-	// CIDR IP address range, the start of the port range, the IP protocol, and
-	// the end of the port range. For EC2-VPC, the source security group must be
-	// in the same VPC.
-	SourceSecurityGroupName *string `type:"string"`
-
-	// [EC2-Classic, default VPC] The AWS account ID of the source security group.
-	// For EC2-VPC, the source security group must be in the same VPC. You can't
-	// specify this parameter in combination with the following parameters: the
-	// CIDR IP address range, the IP protocol, the start of the port range, and
-	// the end of the port range. To revoke a specific rule for an IP protocol and
-	// port range, use a set of IP permissions instead.
-	SourceSecurityGroupOwnerId *string `type:"string"`
-
-	// The end of port range for the TCP and UDP protocols, or an ICMP code number.
-	// For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.
-	ToPort *int64 `type:"integer"`
-
-	metadataRevokeSecurityGroupIngressInput `json:"-" xml:"-"`
-}
-
-type metadataRevokeSecurityGroupIngressInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RevokeSecurityGroupIngressInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RevokeSecurityGroupIngressInput) GoString() string {
-	return s.String()
-}
-
-type RevokeSecurityGroupIngressOutput struct {
-	metadataRevokeSecurityGroupIngressOutput `json:"-" xml:"-"`
-}
-
-type metadataRevokeSecurityGroupIngressOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RevokeSecurityGroupIngressOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RevokeSecurityGroupIngressOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a route in a route table.
-type Route struct {
-	// The CIDR block used for the destination match.
-	DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"`
-
-	// The prefix of the AWS service.
-	DestinationPrefixListId *string `locationName:"destinationPrefixListId" type:"string"`
-
-	// The ID of a gateway attached to your VPC.
-	GatewayId *string `locationName:"gatewayId" type:"string"`
-
-	// The ID of a NAT instance in your VPC.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The AWS account ID of the owner of the instance.
-	InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"`
-
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"`
-
-	// Describes how the route was created.
-	//
-	//   CreateRouteTable indicates that route was automatically created when the
-	// route table was created.  CreateRoute indicates that the route was manually
-	// added to the route table.  EnableVgwRoutePropagation indicates that the route
-	// was propagated by route propagation.
-	Origin *string `locationName:"origin" type:"string" enum:"RouteOrigin"`
-
-	// The state of the route. The blackhole state indicates that the route's target
-	// isn't available (for example, the specified gateway isn't attached to the
-	// VPC, or the specified NAT instance has been terminated).
-	State *string `locationName:"state" type:"string" enum:"RouteState"`
-
-	// The ID of the VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
-
-	metadataRoute `json:"-" xml:"-"`
-}
-
-type metadataRoute struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Route) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Route) GoString() string {
-	return s.String()
-}
-
-// Describes a route table.
-type RouteTable struct {
-	// The associations between the route table and one or more subnets.
-	Associations []*RouteTableAssociation `locationName:"associationSet" locationNameList:"item" type:"list"`
-
-	// Any virtual private gateway (VGW) propagating routes.
-	PropagatingVgws []*PropagatingVgw `locationName:"propagatingVgwSet" locationNameList:"item" type:"list"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string"`
-
-	// The routes in the route table.
-	Routes []*Route `locationName:"routeSet" locationNameList:"item" type:"list"`
-
-	// Any tags assigned to the route table.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataRouteTable `json:"-" xml:"-"`
-}
-
-type metadataRouteTable struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RouteTable) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RouteTable) GoString() string {
-	return s.String()
-}
-
-// Describes an association between a route table and a subnet.
-type RouteTableAssociation struct {
-	// Indicates whether this is the main route table.
-	Main *bool `locationName:"main" type:"boolean"`
-
-	// The ID of the association between a route table and a subnet.
-	RouteTableAssociationId *string `locationName:"routeTableAssociationId" type:"string"`
-
-	// The ID of the route table.
-	RouteTableId *string `locationName:"routeTableId" type:"string"`
-
-	// The ID of the subnet. A subnet ID is not returned for an implicit association.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	metadataRouteTableAssociation `json:"-" xml:"-"`
-}
-
-type metadataRouteTableAssociation struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RouteTableAssociation) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RouteTableAssociation) GoString() string {
-	return s.String()
-}
-
-type RunInstancesInput struct {
-	// Reserved.
-	AdditionalInfo *string `locationName:"additionalInfo" type:"string"`
-
-	// The block device mapping.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
-
-	// Unique, case-sensitive identifier you provide to ensure the idempotency of
-	// the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	//
-	// Constraints: Maximum 64 ASCII characters
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// If you set this parameter to true, you can't terminate the instance using
-	// the Amazon EC2 console, CLI, or API; otherwise, you can. If you set this
-	// parameter to true and then later want to be able to terminate the instance,
-	// you must first change the value of the disableApiTermination attribute to
-	// false using ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior
-	// to terminate, you can terminate the instance by running the shutdown command
-	// from the instance.
-	//
-	// Default: false
-	DisableApiTermination *bool `locationName:"disableApiTermination" type:"boolean"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Indicates whether the instance is optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal EBS I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS-optimized
-	// instance.
-	//
-	// Default: false
-	EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
-
-	// The IAM instance profile.
-	IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
-
-	// The ID of the AMI, which you can get by calling DescribeImages.
-	ImageId *string `type:"string" required:"true"`
-
-	// Indicates whether an instance stops or terminates when you initiate shutdown
-	// from the instance (using the operating system command for system shutdown).
-	//
-	// Default: stop
-	InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"`
-
-	// The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	//
-	// Default: m1.small
-	InstanceType *string `type:"string" enum:"InstanceType"`
-
-	// The ID of the kernel.
-	//
-	//  We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-	// more information, see  PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	KernelId *string `type:"string"`
-
-	// The name of the key pair. You can create a key pair using CreateKeyPair or
-	// ImportKeyPair.
-	//
-	//  If you do not specify a key pair, you can't connect to the instance unless
-	// you choose an AMI that is configured to allow users another way to log in.
-	KeyName *string `type:"string"`
-
-	// The maximum number of instances to launch. If you specify more instances
-	// than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches
-	// the largest possible number of instances above MinCount.
-	//
-	// Constraints: Between 1 and the maximum number you're allowed for the specified
-	// instance type. For more information about the default limits, and how to
-	// request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2)
-	// in the Amazon EC2 General FAQ.
-	MaxCount *int64 `type:"integer" required:"true"`
-
-	// The minimum number of instances to launch. If you specify a minimum that
-	// is more instances than Amazon EC2 can launch in the target Availability Zone,
-	// Amazon EC2 launches no instances.
-	//
-	// Constraints: Between 1 and the maximum number you're allowed for the specified
-	// instance type. For more information about the default limits, and how to
-	// request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2)
-	// in the Amazon EC2 General FAQ.
-	MinCount *int64 `type:"integer" required:"true"`
-
-	// The monitoring for the instance.
-	Monitoring *RunInstancesMonitoringEnabled `type:"structure"`
-
-	// One or more network interfaces.
-	NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterface" locationNameList:"item" type:"list"`
-
-	// The placement for the instance.
-	Placement *Placement `type:"structure"`
-
-	// [EC2-VPC] The primary IP address. You must specify a value from the IP address
-	// range of the subnet.
-	//
-	// Only one private IP address can be designated as primary. Therefore, you
-	// can't specify this parameter if PrivateIpAddresses.n.Primary is set to true
-	// and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address.
-	//
-	// Default: We select an IP address from the IP address range of the subnet.
-	PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"`
-
-	// The ID of the RAM disk.
-	//
-	//  We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-	// more information, see  PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	RamdiskId *string `type:"string"`
-
-	// One or more security group IDs. You can create a security group using CreateSecurityGroup.
-	//
-	// Default: Amazon EC2 uses the default security group.
-	SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"`
-
-	// [EC2-Classic, default VPC] One or more security group names. For a nondefault
-	// VPC, you must use security group IDs instead.
-	//
-	// Default: Amazon EC2 uses the default security group.
-	SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"`
-
-	// [EC2-VPC] The ID of the subnet to launch the instance into.
-	SubnetId *string `type:"string"`
-
-	// The Base64-encoded MIME user data for the instances.
-	UserData *string `type:"string"`
-
-	metadataRunInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataRunInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RunInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RunInstancesInput) GoString() string {
-	return s.String()
-}
-
-// Describes the monitoring for the instance.
-type RunInstancesMonitoringEnabled struct {
-	// Indicates whether monitoring is enabled for the instance.
-	Enabled *bool `locationName:"enabled" type:"boolean" required:"true"`
-
-	metadataRunInstancesMonitoringEnabled `json:"-" xml:"-"`
-}
-
-type metadataRunInstancesMonitoringEnabled struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s RunInstancesMonitoringEnabled) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s RunInstancesMonitoringEnabled) GoString() string {
-	return s.String()
-}
-
-// Describes the storage parameters for S3 and S3 buckets for an instance store-backed
-// AMI.
-type S3Storage struct {
-	// The access key ID of the owner of the bucket. Before you specify a value
-	// for your access key ID, review and follow the guidance in Best Practices
-	// for Managing AWS Access Keys (http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).
-	AWSAccessKeyId *string `type:"string"`
-
-	// The bucket in which to store the AMI. You can specify a bucket that you already
-	// own or a new bucket that Amazon EC2 creates on your behalf. If you specify
-	// a bucket that belongs to someone else, Amazon EC2 returns an error.
-	Bucket *string `locationName:"bucket" type:"string"`
-
-	// The beginning of the file name of the AMI.
-	Prefix *string `locationName:"prefix" type:"string"`
-
-	// A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission
-	// to upload items into Amazon S3 on your behalf.
-	UploadPolicy []byte `locationName:"uploadPolicy" type:"blob"`
-
-	// The signature of the Base64 encoded JSON document.
-	UploadPolicySignature *string `locationName:"uploadPolicySignature" type:"string"`
-
-	metadataS3Storage `json:"-" xml:"-"`
-}
-
-type metadataS3Storage struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s S3Storage) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s S3Storage) GoString() string {
-	return s.String()
-}
-
-// Describes a security group
-type SecurityGroup struct {
-	// A description of the security group.
-	Description *string `locationName:"groupDescription" type:"string"`
-
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string"`
-
-	// The name of the security group.
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	// One or more inbound rules associated with the security group.
-	IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"`
-
-	// [EC2-VPC] One or more outbound rules associated with the security group.
-	IpPermissionsEgress []*IpPermission `locationName:"ipPermissionsEgress" locationNameList:"item" type:"list"`
-
-	// The AWS account ID of the owner of the security group.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// Any tags assigned to the security group.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// [EC2-VPC] The ID of the VPC for the security group.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataSecurityGroup `json:"-" xml:"-"`
-}
-
-type metadataSecurityGroup struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SecurityGroup) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SecurityGroup) GoString() string {
-	return s.String()
-}
-
-// Describes a snapshot.
-type Snapshot struct {
-	// The data encryption key identifier for the snapshot. This value is a unique
-	// identifier that corresponds to the data encryption key that was used to encrypt
-	// the original volume or snapshot copy. Because data encryption keys are inherited
-	// by volumes created from snapshots, and vice versa, if snapshots share the
-	// same data encryption key identifier, then they belong to the same volume/snapshot
-	// lineage. This parameter is only returned by the DescribeSnapshots API operation.
-	DataEncryptionKeyId *string `locationName:"dataEncryptionKeyId" type:"string"`
-
-	// The description for the snapshot.
-	Description *string `locationName:"description" type:"string"`
-
-	// Indicates whether the snapshot is encrypted.
-	Encrypted *bool `locationName:"encrypted" type:"boolean"`
-
-	// The full ARN of the AWS Key Management Service (AWS KMS) customer master
-	// key (CMK) that was used to protect the volume encryption key for the parent
-	// volume.
-	KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
-
-	// The AWS account alias (for example, amazon, self) or AWS account ID that
-	// owns the snapshot.
-	OwnerAlias *string `locationName:"ownerAlias" type:"string"`
-
-	// The AWS account ID of the EBS snapshot owner.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The progress of the snapshot, as a percentage.
-	Progress *string `locationName:"progress" type:"string"`
-
-	// The ID of the snapshot. Each snapshot receives a unique identifier when it
-	// is created.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	// The time stamp when the snapshot was initiated.
-	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The snapshot state.
-	State *string `locationName:"status" type:"string" enum:"SnapshotState"`
-
-	// Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy
-	// operation fails (for example, if the proper AWS Key Management Service (AWS
-	// KMS) permissions are not obtained) this field displays error state details
-	// to help you diagnose why the error occurred. This parameter is only returned
-	// by the DescribeSnapshots API operation.
-	StateMessage *string `locationName:"statusMessage" type:"string"`
-
-	// Any tags assigned to the snapshot.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the volume that was used to create the snapshot.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	// The size of the volume, in GiB.
-	VolumeSize *int64 `locationName:"volumeSize" type:"integer"`
-
-	metadataSnapshot `json:"-" xml:"-"`
-}
-
-type metadataSnapshot struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Snapshot) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Snapshot) GoString() string {
-	return s.String()
-}
-
-// Describes the snapshot created from the imported disk.
-type SnapshotDetail struct {
-	// A description for the snapshot.
-	Description *string `locationName:"description" type:"string"`
-
-	// The block device mapping for the snapshot.
-	DeviceName *string `locationName:"deviceName" type:"string"`
-
-	// The size of the disk in the snapshot, in GiB.
-	DiskImageSize *float64 `locationName:"diskImageSize" type:"double"`
-
-	// The format of the disk image from which the snapshot is created.
-	Format *string `locationName:"format" type:"string"`
-
-	// The percentage of progress for the task.
-	Progress *string `locationName:"progress" type:"string"`
-
-	// The snapshot ID of the disk being imported.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	// A brief status of the snapshot creation.
-	Status *string `locationName:"status" type:"string"`
-
-	// A detailed status message for the snapshot creation.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// The URL used to access the disk image.
-	Url *string `locationName:"url" type:"string"`
-
-	// Describes the S3 bucket for the disk image.
-	UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"`
-
-	metadataSnapshotDetail `json:"-" xml:"-"`
-}
-
-type metadataSnapshotDetail struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SnapshotDetail) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SnapshotDetail) GoString() string {
-	return s.String()
-}
-
-// The disk container object for the import snapshot request.
-type SnapshotDiskContainer struct {
-	// The description of the disk image being imported.
-	Description *string `type:"string"`
-
-	// The format of the disk image being imported.
-	//
-	// Valid values: RAW | VHD | VMDK | OVA
-	Format *string `type:"string"`
-
-	// The URL to the Amazon S3-based disk image being imported. It can either be
-	// a https URL (https://..) or an Amazon S3 URL (s3://..).
-	Url *string `type:"string"`
-
-	// Describes the S3 bucket for the disk image.
-	UserBucket *UserBucket `type:"structure"`
-
-	metadataSnapshotDiskContainer `json:"-" xml:"-"`
-}
-
-type metadataSnapshotDiskContainer struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SnapshotDiskContainer) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SnapshotDiskContainer) GoString() string {
-	return s.String()
-}
-
-// Details about the import snapshot task.
-type SnapshotTaskDetail struct {
-	// The description of the snapshot.
-	Description *string `locationName:"description" type:"string"`
-
-	// The size of the disk in the snapshot, in GiB.
-	DiskImageSize *float64 `locationName:"diskImageSize" type:"double"`
-
-	// The format of the disk image from which the snapshot is created.
-	Format *string `locationName:"format" type:"string"`
-
-	// The percentage of completion for the import snapshot task.
-	Progress *string `locationName:"progress" type:"string"`
-
-	// The snapshot ID of the disk being imported.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	// A brief status for the import snapshot task.
-	Status *string `locationName:"status" type:"string"`
-
-	// A detailed status message for the import snapshot task.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	// The URL of the disk image from which the snapshot is created.
-	Url *string `locationName:"url" type:"string"`
-
-	// The S3 bucket for the disk image.
-	UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"`
-
-	metadataSnapshotTaskDetail `json:"-" xml:"-"`
-}
-
-type metadataSnapshotTaskDetail struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SnapshotTaskDetail) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SnapshotTaskDetail) GoString() string {
-	return s.String()
-}
-
-// Describes the data feed for a Spot instance.
-type SpotDatafeedSubscription struct {
-	// The Amazon S3 bucket where the Spot instance data feed is located.
-	Bucket *string `locationName:"bucket" type:"string"`
-
-	// The fault codes for the Spot instance request, if any.
-	Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"`
-
-	// The AWS account ID of the account.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The prefix that is prepended to data feed files.
-	Prefix *string `locationName:"prefix" type:"string"`
-
-	// The state of the Spot instance data feed subscription.
-	State *string `locationName:"state" type:"string" enum:"DatafeedSubscriptionState"`
-
-	metadataSpotDatafeedSubscription `json:"-" xml:"-"`
-}
-
-type metadataSpotDatafeedSubscription struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotDatafeedSubscription) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotDatafeedSubscription) GoString() string {
-	return s.String()
-}
-
-// Describes the launch specification for one or more Spot instances.
-type SpotFleetLaunchSpecification struct {
-	// Deprecated.
-	AddressingType *string `locationName:"addressingType" type:"string"`
-
-	// One or more block device mapping entries.
-	BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
-
-	// Indicates whether the instances are optimized for EBS I/O. This optimization
-	// provides dedicated throughput to Amazon EBS and an optimized configuration
-	// stack to provide optimal EBS I/O performance. This optimization isn't available
-	// with all instance types. Additional usage charges apply when using an EBS
-	// Optimized instance.
-	//
-	// Default: false
-	EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
-
-	// The IAM instance profile.
-	IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
-
-	// The ID of the AMI.
-	ImageId *string `locationName:"imageId" type:"string"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// The ID of the kernel.
-	KernelId *string `locationName:"kernelId" type:"string"`
-
-	// The name of the key pair.
-	KeyName *string `locationName:"keyName" type:"string"`
-
-	// Enable or disable monitoring for the instances.
-	Monitoring *SpotFleetMonitoring `locationName:"monitoring" type:"structure"`
-
-	// One or more network interfaces.
-	NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"`
-
-	// The placement information.
-	Placement *SpotPlacement `locationName:"placement" type:"structure"`
-
-	// The ID of the RAM disk.
-	RamdiskId *string `locationName:"ramdiskId" type:"string"`
-
-	// One or more security groups. When requesting instances in a VPC, you must
-	// specify the IDs of the security groups. When requesting instances in EC2-Classic,
-	// you can specify the names or the IDs of the security groups.
-	SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
-
-	// The bid price per unit hour for the specified instance type. If this value
-	// is not specified, the default is the Spot bid price specified for the fleet.
-	// To determine the bid price per unit hour, divide the Spot bid price by the
-	// value of WeightedCapacity.
-	SpotPrice *string `locationName:"spotPrice" type:"string"`
-
-	// The ID of the subnet in which to launch the instances.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// The Base64-encoded MIME user data to make available to the instances.
-	UserData *string `locationName:"userData" type:"string"`
-
-	// The number of units provided by the specified instance type. These are the
-	// same units that you chose to set the target capacity in terms (instances
-	// or a performance characteristic such as vCPUs, memory, or I/O).
-	//
-	// If the target capacity divided by this value is not a whole number, we round
-	// the number of instances to the next whole number. If this value is not specified,
-	// the default is 1.
-	WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"`
-
-	metadataSpotFleetLaunchSpecification `json:"-" xml:"-"`
-}
-
-type metadataSpotFleetLaunchSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotFleetLaunchSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotFleetLaunchSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes whether monitoring is enabled.
-type SpotFleetMonitoring struct {
-	// Enables monitoring for the instance.
-	//
-	// Default: false
-	Enabled *bool `locationName:"enabled" type:"boolean"`
-
-	metadataSpotFleetMonitoring `json:"-" xml:"-"`
-}
-
-type metadataSpotFleetMonitoring struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotFleetMonitoring) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotFleetMonitoring) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot fleet request.
-type SpotFleetRequestConfig struct {
-	// The creation date and time of the request.
-	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601" required:"true"`
-
-	// Information about the configuration of the Spot fleet request.
-	SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"`
-
-	// The ID of the Spot fleet request.
-	SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
-
-	// The state of the Spot fleet request.
-	SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
-
-	metadataSpotFleetRequestConfig `json:"-" xml:"-"`
-}
-
-type metadataSpotFleetRequestConfig struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotFleetRequestConfig) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotFleetRequestConfig) GoString() string {
-	return s.String()
-}
-
-// Describes the configuration of a Spot fleet request.
-type SpotFleetRequestConfigData struct {
-	// Indicates how to allocate the target capacity across the Spot pools specified
-	// by the Spot fleet request. The default is lowestPrice.
-	AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"`
-
-	// A unique, case-sensitive identifier you provide to ensure idempotency of
-	// your listings. This helps avoid duplicate listings. For more information,
-	// see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
-	ClientToken *string `locationName:"clientToken" type:"string"`
-
-	// Indicates whether running Spot instances should be terminated if the target
-	// capacity of the Spot fleet request is decreased below the current size of
-	// the Spot fleet.
-	ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"`
-
-	// Grants the Spot fleet permission to terminate Spot instances on your behalf
-	// when you cancel its Spot fleet request using CancelSpotFleetRequests or when
-	// the Spot fleet request expires, if you set terminateInstancesWithExpiration.
-	IamFleetRole *string `locationName:"iamFleetRole" type:"string" required:"true"`
-
-	// Information about the launch specifications for the Spot fleet request.
-	LaunchSpecifications []*SpotFleetLaunchSpecification `locationName:"launchSpecifications" locationNameList:"item" min:"1" type:"list" required:"true"`
-
-	// The bid price per unit hour.
-	SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"`
-
-	// The number of units to request. You can choose to set the target capacity
-	// in terms of instances or a performance characteristic that is important to
-	// your application workload, such as vCPUs, memory, or I/O.
-	TargetCapacity *int64 `locationName:"targetCapacity" type:"integer" required:"true"`
-
-	// Indicates whether running Spot instances should be terminated when the Spot
-	// fleet request expires.
-	TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"`
-
-	// The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	// The default is to start fulfilling the request immediately.
-	ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	// At this point, no new Spot instance requests are placed or enabled to fulfill
-	// the request.
-	ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataSpotFleetRequestConfigData `json:"-" xml:"-"`
-}
-
-type metadataSpotFleetRequestConfigData struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotFleetRequestConfigData) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotFleetRequestConfigData) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot instance request.
-type SpotInstanceRequest struct {
-	// If you specified a duration and your Spot instance request was fulfilled,
-	// this is the fixed hourly price in effect for the Spot instance while it runs.
-	ActualBlockHourlyPrice *string `locationName:"actualBlockHourlyPrice" type:"string"`
-
-	// The Availability Zone group. If you specify the same Availability Zone group
-	// for all Spot instance requests, all Spot instances are launched in the same
-	// Availability Zone.
-	AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"`
-
-	// The duration for the Spot instance, in minutes.
-	BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
-
-	// The date and time when the Spot instance request was created, in UTC format
-	// (for example, YYYY-MM-DDTHH:MM:SSZ).
-	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The fault codes for the Spot instance request, if any.
-	Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"`
-
-	// The instance ID, if an instance has been launched to fulfill the Spot instance
-	// request.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The instance launch group. Launch groups are Spot instances that launch together
-	// and terminate together.
-	LaunchGroup *string `locationName:"launchGroup" type:"string"`
-
-	// Additional information for launching instances.
-	LaunchSpecification *LaunchSpecification `locationName:"launchSpecification" type:"structure"`
-
-	// The Availability Zone in which the bid is launched.
-	LaunchedAvailabilityZone *string `locationName:"launchedAvailabilityZone" type:"string"`
-
-	// The product description associated with the Spot instance.
-	ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"`
-
-	// The ID of the Spot instance request.
-	SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"`
-
-	// The maximum hourly price (bid) for the Spot instance launched to fulfill
-	// the request.
-	SpotPrice *string `locationName:"spotPrice" type:"string"`
-
-	// The state of the Spot instance request. Spot bid status information can help
-	// you track your Spot instance requests. For more information, see Spot Bid
-	// Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	State *string `locationName:"state" type:"string" enum:"SpotInstanceState"`
-
-	// The status code and status message describing the Spot instance request.
-	Status *SpotInstanceStatus `locationName:"status" type:"structure"`
-
-	// Any tags assigned to the resource.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The Spot instance request type.
-	Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"`
-
-	// The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	// The request becomes active at this date and time.
-	ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	// If this is a one-time request, it remains active until all instances launch,
-	// the request is canceled, or this date is reached. If the request is persistent,
-	// it remains active until it is canceled or this date is reached.
-	ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataSpotInstanceRequest `json:"-" xml:"-"`
-}
-
-type metadataSpotInstanceRequest struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotInstanceRequest) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotInstanceRequest) GoString() string {
-	return s.String()
-}
-
-// Describes a Spot instance state change.
-type SpotInstanceStateFault struct {
-	// The reason code for the Spot instance state change.
-	Code *string `locationName:"code" type:"string"`
-
-	// The message for the Spot instance state change.
-	Message *string `locationName:"message" type:"string"`
-
-	metadataSpotInstanceStateFault `json:"-" xml:"-"`
-}
-
-type metadataSpotInstanceStateFault struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotInstanceStateFault) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotInstanceStateFault) GoString() string {
-	return s.String()
-}
-
-// Describes the status of a Spot instance request.
-type SpotInstanceStatus struct {
-	// The status code. For a list of status codes, see Spot Bid Status Codes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	Code *string `locationName:"code" type:"string"`
-
-	// The description for the status code.
-	Message *string `locationName:"message" type:"string"`
-
-	// The date and time of the most recent status update, in UTC format (for example,
-	// YYYY-MM-DDTHH:MM:SSZ).
-	UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataSpotInstanceStatus `json:"-" xml:"-"`
-}
-
-type metadataSpotInstanceStatus struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotInstanceStatus) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotInstanceStatus) GoString() string {
-	return s.String()
-}
-
-// Describes Spot instance placement.
-type SpotPlacement struct {
-	// The Availability Zone.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The name of the placement group (for cluster instances).
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	metadataSpotPlacement `json:"-" xml:"-"`
-}
-
-type metadataSpotPlacement struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotPlacement) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotPlacement) GoString() string {
-	return s.String()
-}
-
-// Describes the maximum hourly price (bid) for any Spot instance launched to
-// fulfill the request.
-type SpotPrice struct {
-	// The Availability Zone.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The instance type.
-	InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
-
-	// A general description of the AMI.
-	ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"`
-
-	// The maximum price (bid) that you are willing to pay for a Spot instance.
-	SpotPrice *string `locationName:"spotPrice" type:"string"`
-
-	// The date and time the request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
-	Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataSpotPrice `json:"-" xml:"-"`
-}
-
-type metadataSpotPrice struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s SpotPrice) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s SpotPrice) GoString() string {
-	return s.String()
-}
-
-type StartInstancesInput struct {
-	// Reserved.
-	AdditionalInfo *string `locationName:"additionalInfo" type:"string"`
-
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataStartInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataStartInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StartInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StartInstancesInput) GoString() string {
-	return s.String()
-}
-
-type StartInstancesOutput struct {
-	// Information about one or more started instances.
-	StartingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	metadataStartInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataStartInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StartInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StartInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Describes a state change.
-type StateReason struct {
-	// The reason code for the state change.
-	Code *string `locationName:"code" type:"string"`
-
-	// The message for the state change.
-	//
-	//  Server.SpotInstanceTermination: A Spot Instance was terminated due to an
-	// increase in the market price.
-	//
-	// Server.InternalError: An internal error occurred during instance launch,
-	// resulting in termination.
-	//
-	// Server.InsufficientInstanceCapacity: There was insufficient instance capacity
-	// to satisfy the launch request.
-	//
-	// Client.InternalError: A client error caused the instance to terminate on
-	// launch.
-	//
-	// Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown
-	// -h command from the instance.
-	//
-	// Client.UserInitiatedShutdown: The instance was shut down using the Amazon
-	// EC2 API.
-	//
-	// Client.VolumeLimitExceeded: The volume limit was exceeded.
-	//
-	// Client.InvalidSnapshot.NotFound: The specified snapshot was not found.
-	Message *string `locationName:"message" type:"string"`
-
-	metadataStateReason `json:"-" xml:"-"`
-}
-
-type metadataStateReason struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StateReason) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StateReason) GoString() string {
-	return s.String()
-}
-
-type StopInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// Forces the instances to stop. The instances do not have an opportunity to
-	// flush file system caches or file system metadata. If you use this option,
-	// you must perform file system check and repair procedures. This option is
-	// not recommended for Windows instances.
-	//
-	// Default: false
-	Force *bool `locationName:"force" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataStopInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataStopInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StopInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StopInstancesInput) GoString() string {
-	return s.String()
-}
-
-type StopInstancesOutput struct {
-	// Information about one or more stopped instances.
-	StoppingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	metadataStopInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataStopInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s StopInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s StopInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Describes the storage location for an instance store-backed AMI.
-type Storage struct {
-	// An Amazon S3 storage location.
-	S3 *S3Storage `type:"structure"`
-
-	metadataStorage `json:"-" xml:"-"`
-}
-
-type metadataStorage struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Storage) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Storage) GoString() string {
-	return s.String()
-}
-
-// Describes a subnet.
-type Subnet struct {
-	// The Availability Zone of the subnet.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The number of unused IP addresses in the subnet. Note that the IP addresses
-	// for any stopped instances are considered unavailable.
-	AvailableIpAddressCount *int64 `locationName:"availableIpAddressCount" type:"integer"`
-
-	// The CIDR block assigned to the subnet.
-	CidrBlock *string `locationName:"cidrBlock" type:"string"`
-
-	// Indicates whether this is the default subnet for the Availability Zone.
-	DefaultForAz *bool `locationName:"defaultForAz" type:"boolean"`
-
-	// Indicates whether instances launched in this subnet receive a public IP address.
-	MapPublicIpOnLaunch *bool `locationName:"mapPublicIpOnLaunch" type:"boolean"`
-
-	// The current state of the subnet.
-	State *string `locationName:"state" type:"string" enum:"SubnetState"`
-
-	// The ID of the subnet.
-	SubnetId *string `locationName:"subnetId" type:"string"`
-
-	// Any tags assigned to the subnet.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC the subnet is in.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataSubnet `json:"-" xml:"-"`
-}
-
-type metadataSubnet struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Subnet) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Subnet) GoString() string {
-	return s.String()
-}
-
-// Describes a tag.
-type Tag struct {
-	// The key of the tag.
-	//
-	// Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode
-	// characters. May not begin with aws:
-	Key *string `locationName:"key" type:"string"`
-
-	// The value of the tag.
-	//
-	// Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode
-	// characters.
-	Value *string `locationName:"value" type:"string"`
-
-	metadataTag `json:"-" xml:"-"`
-}
-
-type metadataTag struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Tag) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Tag) GoString() string {
-	return s.String()
-}
-
-// Describes a tag.
-type TagDescription struct {
-	// The tag key.
-	Key *string `locationName:"key" type:"string"`
-
-	// The ID of the resource. For example, ami-1a2b3c4d.
-	ResourceId *string `locationName:"resourceId" type:"string"`
-
-	// The resource type.
-	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
-
-	// The tag value.
-	Value *string `locationName:"value" type:"string"`
-
-	metadataTagDescription `json:"-" xml:"-"`
-}
-
-type metadataTagDescription struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s TagDescription) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s TagDescription) GoString() string {
-	return s.String()
-}
-
-type TerminateInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataTerminateInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataTerminateInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s TerminateInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s TerminateInstancesInput) GoString() string {
-	return s.String()
-}
-
-type TerminateInstancesOutput struct {
-	// Information about one or more terminated instances.
-	TerminatingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	metadataTerminateInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataTerminateInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s TerminateInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s TerminateInstancesOutput) GoString() string {
-	return s.String()
-}
-
-type UnassignPrivateIpAddressesInput struct {
-	// The ID of the network interface.
-	NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"`
-
-	// The secondary private IP addresses to unassign from the network interface.
-	// You can specify this option multiple times to unassign more than one IP address.
-	PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list" required:"true"`
-
-	metadataUnassignPrivateIpAddressesInput `json:"-" xml:"-"`
-}
-
-type metadataUnassignPrivateIpAddressesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnassignPrivateIpAddressesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnassignPrivateIpAddressesInput) GoString() string {
-	return s.String()
-}
-
-type UnassignPrivateIpAddressesOutput struct {
-	metadataUnassignPrivateIpAddressesOutput `json:"-" xml:"-"`
-}
-
-type metadataUnassignPrivateIpAddressesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnassignPrivateIpAddressesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnassignPrivateIpAddressesOutput) GoString() string {
-	return s.String()
-}
-
-type UnmonitorInstancesInput struct {
-	// Checks whether you have the required permissions for the action, without
-	// actually making the request, and provides an error response. If you have
-	// the required permissions, the error response is DryRunOperation. Otherwise,
-	// it is UnauthorizedOperation.
-	DryRun *bool `locationName:"dryRun" type:"boolean"`
-
-	// One or more instance IDs.
-	InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"`
-
-	metadataUnmonitorInstancesInput `json:"-" xml:"-"`
-}
-
-type metadataUnmonitorInstancesInput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnmonitorInstancesInput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnmonitorInstancesInput) GoString() string {
-	return s.String()
-}
-
-type UnmonitorInstancesOutput struct {
-	// Monitoring information for one or more instances.
-	InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"`
-
-	metadataUnmonitorInstancesOutput `json:"-" xml:"-"`
-}
-
-type metadataUnmonitorInstancesOutput struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnmonitorInstancesOutput) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnmonitorInstancesOutput) GoString() string {
-	return s.String()
-}
-
-// Information about items that were not successfully processed in a batch call.
-type UnsuccessfulItem struct {
-	// Information about the error.
-	Error *UnsuccessfulItemError `locationName:"error" type:"structure" required:"true"`
-
-	// The ID of the resource.
-	ResourceId *string `locationName:"resourceId" type:"string"`
-
-	metadataUnsuccessfulItem `json:"-" xml:"-"`
-}
-
-type metadataUnsuccessfulItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnsuccessfulItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnsuccessfulItem) GoString() string {
-	return s.String()
-}
-
-// Information about the error that occurred. For more information about errors,
-// see Error Codes (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html).
-type UnsuccessfulItemError struct {
-	// The error code.
-	Code *string `locationName:"code" type:"string" required:"true"`
-
-	// The error message accompanying the error code.
-	Message *string `locationName:"message" type:"string" required:"true"`
-
-	metadataUnsuccessfulItemError `json:"-" xml:"-"`
-}
-
-type metadataUnsuccessfulItemError struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UnsuccessfulItemError) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UnsuccessfulItemError) GoString() string {
-	return s.String()
-}
-
-// Describes the S3 bucket for the disk image.
-type UserBucket struct {
-	// The name of the S3 bucket where the disk image is located.
-	S3Bucket *string `type:"string"`
-
-	// The key for the disk image.
-	S3Key *string `type:"string"`
-
-	metadataUserBucket `json:"-" xml:"-"`
-}
-
-type metadataUserBucket struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UserBucket) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UserBucket) GoString() string {
-	return s.String()
-}
-
-// Describes the S3 bucket for the disk image.
-type UserBucketDetails struct {
-	// The S3 bucket from which the disk image was created.
-	S3Bucket *string `locationName:"s3Bucket" type:"string"`
-
-	// The key from which the disk image was created.
-	S3Key *string `locationName:"s3Key" type:"string"`
-
-	metadataUserBucketDetails `json:"-" xml:"-"`
-}
-
-type metadataUserBucketDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UserBucketDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UserBucketDetails) GoString() string {
-	return s.String()
-}
-
-// Describes the user data to be made available to an instance.
-type UserData struct {
-	// The Base64-encoded MIME user data for the instance.
-	Data *string `locationName:"data" type:"string"`
-
-	metadataUserData `json:"-" xml:"-"`
-}
-
-type metadataUserData struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UserData) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UserData) GoString() string {
-	return s.String()
-}
-
-// Describes a security group and AWS account ID pair.
-type UserIdGroupPair struct {
-	// The ID of the security group.
-	GroupId *string `locationName:"groupId" type:"string"`
-
-	// The name of the security group. In a request, use this parameter for a security
-	// group in EC2-Classic or a default VPC only. For a security group in a nondefault
-	// VPC, use GroupId.
-	GroupName *string `locationName:"groupName" type:"string"`
-
-	// The ID of an AWS account. EC2-Classic only.
-	UserId *string `locationName:"userId" type:"string"`
-
-	metadataUserIdGroupPair `json:"-" xml:"-"`
-}
-
-type metadataUserIdGroupPair struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s UserIdGroupPair) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s UserIdGroupPair) GoString() string {
-	return s.String()
-}
-
-// Describes telemetry for a VPN tunnel.
-type VgwTelemetry struct {
-	// The number of accepted routes.
-	AcceptedRouteCount *int64 `locationName:"acceptedRouteCount" type:"integer"`
-
-	// The date and time of the last change in status.
-	LastStatusChange *time.Time `locationName:"lastStatusChange" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The Internet-routable IP address of the virtual private gateway's outside
-	// interface.
-	OutsideIpAddress *string `locationName:"outsideIpAddress" type:"string"`
-
-	// The status of the VPN tunnel.
-	Status *string `locationName:"status" type:"string" enum:"TelemetryStatus"`
-
-	// If an error occurs, a description of the error.
-	StatusMessage *string `locationName:"statusMessage" type:"string"`
-
-	metadataVgwTelemetry `json:"-" xml:"-"`
-}
-
-type metadataVgwTelemetry struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VgwTelemetry) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VgwTelemetry) GoString() string {
-	return s.String()
-}
-
-// Describes a volume.
-type Volume struct {
-	// Information about the volume attachments.
-	Attachments []*VolumeAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"`
-
-	// The Availability Zone for the volume.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The time stamp when volume creation was initiated.
-	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// Indicates whether the volume will be encrypted.
-	Encrypted *bool `locationName:"encrypted" type:"boolean"`
-
-	// The number of I/O operations per second (IOPS) that the volume supports.
-	// For Provisioned IOPS (SSD) volumes, this represents the number of IOPS that
-	// are provisioned for the volume. For General Purpose (SSD) volumes, this represents
-	// the baseline performance of the volume and the rate at which the volume accumulates
-	// I/O credits for bursting. For more information on General Purpose (SSD) baseline
-	// performance, I/O credits, and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
-	// in the Amazon Elastic Compute Cloud User Guide.
-	//
-	// Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and
-	// 3 to 10000 for General Purpose (SSD) volumes.
-	//
-	// Condition: This parameter is required for requests to create io1 volumes;
-	// it is not used in requests to create standard or gp2 volumes.
-	Iops *int64 `locationName:"iops" type:"integer"`
-
-	// The full ARN of the AWS Key Management Service (AWS KMS) customer master
-	// key (CMK) that was used to protect the volume encryption key for the volume.
-	KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
-
-	// The size of the volume, in GiBs.
-	Size *int64 `locationName:"size" type:"integer"`
-
-	// The snapshot from which the volume was created, if applicable.
-	SnapshotId *string `locationName:"snapshotId" type:"string"`
-
-	// The volume state.
-	State *string `locationName:"status" type:"string" enum:"VolumeState"`
-
-	// Any tags assigned to the volume.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the volume.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	// The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for
-	// Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.
-	VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"`
-
-	metadataVolume `json:"-" xml:"-"`
-}
-
-type metadataVolume struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Volume) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Volume) GoString() string {
-	return s.String()
-}
-
-// Describes volume attachment details.
-type VolumeAttachment struct {
-	// The time stamp when the attachment initiated.
-	AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// Indicates whether the EBS volume is deleted on instance termination.
-	DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
-
-	// The device name.
-	Device *string `locationName:"device" type:"string"`
-
-	// The ID of the instance.
-	InstanceId *string `locationName:"instanceId" type:"string"`
-
-	// The attachment state of the volume.
-	State *string `locationName:"status" type:"string" enum:"VolumeAttachmentState"`
-
-	// The ID of the volume.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	metadataVolumeAttachment `json:"-" xml:"-"`
-}
-
-type metadataVolumeAttachment struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeAttachment) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeAttachment) GoString() string {
-	return s.String()
-}
-
-// Describes an EBS volume.
-type VolumeDetail struct {
-	// The size of the volume, in GiB.
-	Size *int64 `locationName:"size" type:"long" required:"true"`
-
-	metadataVolumeDetail `json:"-" xml:"-"`
-}
-
-type metadataVolumeDetail struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeDetail) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeDetail) GoString() string {
-	return s.String()
-}
-
-// Describes a volume status operation code.
-type VolumeStatusAction struct {
-	// The code identifying the operation, for example, enable-volume-io.
-	Code *string `locationName:"code" type:"string"`
-
-	// A description of the operation.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of the event associated with this operation.
-	EventId *string `locationName:"eventId" type:"string"`
-
-	// The event type associated with this operation.
-	EventType *string `locationName:"eventType" type:"string"`
-
-	metadataVolumeStatusAction `json:"-" xml:"-"`
-}
-
-type metadataVolumeStatusAction struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeStatusAction) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeStatusAction) GoString() string {
-	return s.String()
-}
-
-// Describes a volume status.
-type VolumeStatusDetails struct {
-	// The name of the volume status.
-	Name *string `locationName:"name" type:"string" enum:"VolumeStatusName"`
-
-	// The intended status of the volume status.
-	Status *string `locationName:"status" type:"string"`
-
-	metadataVolumeStatusDetails `json:"-" xml:"-"`
-}
-
-type metadataVolumeStatusDetails struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeStatusDetails) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeStatusDetails) GoString() string {
-	return s.String()
-}
-
-// Describes a volume status event.
-type VolumeStatusEvent struct {
-	// A description of the event.
-	Description *string `locationName:"description" type:"string"`
-
-	// The ID of this event.
-	EventId *string `locationName:"eventId" type:"string"`
-
-	// The type of this event.
-	EventType *string `locationName:"eventType" type:"string"`
-
-	// The latest end time of the event.
-	NotAfter *time.Time `locationName:"notAfter" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The earliest start time of the event.
-	NotBefore *time.Time `locationName:"notBefore" type:"timestamp" timestampFormat:"iso8601"`
-
-	metadataVolumeStatusEvent `json:"-" xml:"-"`
-}
-
-type metadataVolumeStatusEvent struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeStatusEvent) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeStatusEvent) GoString() string {
-	return s.String()
-}
-
-// Describes the status of a volume.
-type VolumeStatusInfo struct {
-	// The details of the volume status.
-	Details []*VolumeStatusDetails `locationName:"details" locationNameList:"item" type:"list"`
-
-	// The status of the volume.
-	Status *string `locationName:"status" type:"string" enum:"VolumeStatusInfoStatus"`
-
-	metadataVolumeStatusInfo `json:"-" xml:"-"`
-}
-
-type metadataVolumeStatusInfo struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeStatusInfo) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeStatusInfo) GoString() string {
-	return s.String()
-}
-
-// Describes the volume status.
-type VolumeStatusItem struct {
-	// The details of the operation.
-	Actions []*VolumeStatusAction `locationName:"actionsSet" locationNameList:"item" type:"list"`
-
-	// The Availability Zone of the volume.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// A list of events associated with the volume.
-	Events []*VolumeStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"`
-
-	// The volume ID.
-	VolumeId *string `locationName:"volumeId" type:"string"`
-
-	// The volume status.
-	VolumeStatus *VolumeStatusInfo `locationName:"volumeStatus" type:"structure"`
-
-	metadataVolumeStatusItem `json:"-" xml:"-"`
-}
-
-type metadataVolumeStatusItem struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VolumeStatusItem) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VolumeStatusItem) GoString() string {
-	return s.String()
-}
-
-// Describes a VPC.
-type Vpc struct {
-	// The CIDR block for the VPC.
-	CidrBlock *string `locationName:"cidrBlock" type:"string"`
-
-	// The ID of the set of DHCP options you've associated with the VPC (or default
-	// if the default options are associated with the VPC).
-	DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"`
-
-	// The allowed tenancy of instances launched into the VPC.
-	InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
-
-	// Indicates whether the VPC is the default VPC.
-	IsDefault *bool `locationName:"isDefault" type:"boolean"`
-
-	// The current state of the VPC.
-	State *string `locationName:"state" type:"string" enum:"VpcState"`
-
-	// Any tags assigned to the VPC.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataVpc `json:"-" xml:"-"`
-}
-
-type metadataVpc struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s Vpc) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s Vpc) GoString() string {
-	return s.String()
-}
-
-// Describes an attachment between a virtual private gateway and a VPC.
-type VpcAttachment struct {
-	// The current state of the attachment.
-	State *string `locationName:"state" type:"string" enum:"AttachmentStatus"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataVpcAttachment `json:"-" xml:"-"`
-}
-
-type metadataVpcAttachment struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcAttachment) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcAttachment) GoString() string {
-	return s.String()
-}
-
-// Describes whether a VPC is enabled for ClassicLink.
-type VpcClassicLink struct {
-	// Indicates whether the VPC is enabled for ClassicLink.
-	ClassicLinkEnabled *bool `locationName:"classicLinkEnabled" type:"boolean"`
-
-	// Any tags assigned to the VPC.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataVpcClassicLink `json:"-" xml:"-"`
-}
-
-type metadataVpcClassicLink struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcClassicLink) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcClassicLink) GoString() string {
-	return s.String()
-}
-
-// Describes a VPC endpoint.
-type VpcEndpoint struct {
-	// The date and time the VPC endpoint was created.
-	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The policy document associated with the endpoint.
-	PolicyDocument *string `locationName:"policyDocument" type:"string"`
-
-	// One or more route tables associated with the endpoint.
-	RouteTableIds []*string `locationName:"routeTableIdSet" locationNameList:"item" type:"list"`
-
-	// The name of the AWS service to which the endpoint is associated.
-	ServiceName *string `locationName:"serviceName" type:"string"`
-
-	// The state of the VPC endpoint.
-	State *string `locationName:"state" type:"string" enum:"State"`
-
-	// The ID of the VPC endpoint.
-	VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"`
-
-	// The ID of the VPC to which the endpoint is associated.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataVpcEndpoint `json:"-" xml:"-"`
-}
-
-type metadataVpcEndpoint struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcEndpoint) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcEndpoint) GoString() string {
-	return s.String()
-}
-
-// Describes a VPC peering connection.
-type VpcPeeringConnection struct {
-	// The information of the peer VPC.
-	AccepterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"accepterVpcInfo" type:"structure"`
-
-	// The time that an unaccepted VPC peering connection will expire.
-	ExpirationTime *time.Time `locationName:"expirationTime" type:"timestamp" timestampFormat:"iso8601"`
-
-	// The information of the requester VPC.
-	RequesterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"requesterVpcInfo" type:"structure"`
-
-	// The status of the VPC peering connection.
-	Status *VpcPeeringConnectionStateReason `locationName:"status" type:"structure"`
-
-	// Any tags assigned to the resource.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The ID of the VPC peering connection.
-	VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
-
-	metadataVpcPeeringConnection `json:"-" xml:"-"`
-}
-
-type metadataVpcPeeringConnection struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcPeeringConnection) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcPeeringConnection) GoString() string {
-	return s.String()
-}
-
-// Describes the status of a VPC peering connection.
-type VpcPeeringConnectionStateReason struct {
-	// The status of the VPC peering connection.
-	Code *string `locationName:"code" type:"string" enum:"VpcPeeringConnectionStateReasonCode"`
-
-	// A message that provides more information about the status, if applicable.
-	Message *string `locationName:"message" type:"string"`
-
-	metadataVpcPeeringConnectionStateReason `json:"-" xml:"-"`
-}
-
-type metadataVpcPeeringConnectionStateReason struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcPeeringConnectionStateReason) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcPeeringConnectionStateReason) GoString() string {
-	return s.String()
-}
-
-// Describes a VPC in a VPC peering connection.
-type VpcPeeringConnectionVpcInfo struct {
-	// The CIDR block for the VPC.
-	CidrBlock *string `locationName:"cidrBlock" type:"string"`
-
-	// The AWS account ID of the VPC owner.
-	OwnerId *string `locationName:"ownerId" type:"string"`
-
-	// The ID of the VPC.
-	VpcId *string `locationName:"vpcId" type:"string"`
-
-	metadataVpcPeeringConnectionVpcInfo `json:"-" xml:"-"`
-}
-
-type metadataVpcPeeringConnectionVpcInfo struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpcPeeringConnectionVpcInfo) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpcPeeringConnectionVpcInfo) GoString() string {
-	return s.String()
-}
-
-// Describes a VPN connection.
-type VpnConnection struct {
-	// The configuration information for the VPN connection's customer gateway (in
-	// the native XML format). This element is always present in the CreateVpnConnection
-	// response; however, it's present in the DescribeVpnConnections response only
-	// if the VPN connection is in the pending or available state.
-	CustomerGatewayConfiguration *string `locationName:"customerGatewayConfiguration" type:"string"`
-
-	// The ID of the customer gateway at your end of the VPN connection.
-	CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"`
-
-	// The VPN connection options.
-	Options *VpnConnectionOptions `locationName:"options" type:"structure"`
-
-	// The static routes associated with the VPN connection.
-	Routes []*VpnStaticRoute `locationName:"routes" locationNameList:"item" type:"list"`
-
-	// The current state of the VPN connection.
-	State *string `locationName:"state" type:"string" enum:"VpnState"`
-
-	// Any tags assigned to the VPN connection.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The type of VPN connection.
-	Type *string `locationName:"type" type:"string" enum:"GatewayType"`
-
-	// Information about the VPN tunnel.
-	VgwTelemetry []*VgwTelemetry `locationName:"vgwTelemetry" locationNameList:"item" type:"list"`
-
-	// The ID of the VPN connection.
-	VpnConnectionId *string `locationName:"vpnConnectionId" type:"string"`
-
-	// The ID of the virtual private gateway at the AWS side of the VPN connection.
-	VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"`
-
-	metadataVpnConnection `json:"-" xml:"-"`
-}
-
-type metadataVpnConnection struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpnConnection) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpnConnection) GoString() string {
-	return s.String()
-}
-
-// Describes VPN connection options.
-type VpnConnectionOptions struct {
-	// Indicates whether the VPN connection uses static routes only. Static routes
-	// must be used for devices that don't support BGP.
-	StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"`
-
-	metadataVpnConnectionOptions `json:"-" xml:"-"`
-}
-
-type metadataVpnConnectionOptions struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpnConnectionOptions) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpnConnectionOptions) GoString() string {
-	return s.String()
-}
-
-// Describes VPN connection options.
-type VpnConnectionOptionsSpecification struct {
-	// Indicates whether the VPN connection uses static routes only. Static routes
-	// must be used for devices that don't support BGP.
-	StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"`
-
-	metadataVpnConnectionOptionsSpecification `json:"-" xml:"-"`
-}
-
-type metadataVpnConnectionOptionsSpecification struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpnConnectionOptionsSpecification) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpnConnectionOptionsSpecification) GoString() string {
-	return s.String()
-}
-
-// Describes a virtual private gateway.
-type VpnGateway struct {
-	// The Availability Zone where the virtual private gateway was created.
-	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
-
-	// The current state of the virtual private gateway.
-	State *string `locationName:"state" type:"string" enum:"VpnState"`
-
-	// Any tags assigned to the virtual private gateway.
-	Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
-
-	// The type of VPN connection the virtual private gateway supports.
-	Type *string `locationName:"type" type:"string" enum:"GatewayType"`
-
-	// Any VPCs attached to the virtual private gateway.
-	VpcAttachments []*VpcAttachment `locationName:"attachments" locationNameList:"item" type:"list"`
-
-	// The ID of the virtual private gateway.
-	VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"`
-
-	metadataVpnGateway `json:"-" xml:"-"`
-}
-
-type metadataVpnGateway struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpnGateway) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpnGateway) GoString() string {
-	return s.String()
-}
-
-// Describes a static route for a VPN connection.
-type VpnStaticRoute struct {
-	// The CIDR block associated with the local subnet of the customer data center.
-	DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"`
-
-	// Indicates how the routes were provided.
-	Source *string `locationName:"source" type:"string" enum:"VpnStaticRouteSource"`
-
-	// The current state of the static route.
-	State *string `locationName:"state" type:"string" enum:"VpnState"`
-
-	metadataVpnStaticRoute `json:"-" xml:"-"`
-}
-
-type metadataVpnStaticRoute struct {
-	SDKShapeTraits bool `type:"structure"`
-}
-
-// String returns the string representation
-func (s VpnStaticRoute) String() string {
-	return awsutil.Prettify(s)
-}
-
-// GoString returns the string representation
-func (s VpnStaticRoute) GoString() string {
-	return s.String()
-}
-
-const (
-	// @enum AccountAttributeName
-	AccountAttributeNameSupportedPlatforms = "supported-platforms"
-	// @enum AccountAttributeName
-	AccountAttributeNameDefaultVpc = "default-vpc"
-)
-
-const (
-	// @enum AllocationStrategy
-	AllocationStrategyLowestPrice = "lowestPrice"
-	// @enum AllocationStrategy
-	AllocationStrategyDiversified = "diversified"
-)
-
-const (
-	// @enum ArchitectureValues
-	ArchitectureValuesI386 = "i386"
-	// @enum ArchitectureValues
-	ArchitectureValuesX8664 = "x86_64"
-)
-
-const (
-	// @enum AttachmentStatus
-	AttachmentStatusAttaching = "attaching"
-	// @enum AttachmentStatus
-	AttachmentStatusAttached = "attached"
-	// @enum AttachmentStatus
-	AttachmentStatusDetaching = "detaching"
-	// @enum AttachmentStatus
-	AttachmentStatusDetached = "detached"
-)
-
-const (
-	// @enum AvailabilityZoneState
-	AvailabilityZoneStateAvailable = "available"
-	// @enum AvailabilityZoneState
-	AvailabilityZoneStateInformation = "information"
-	// @enum AvailabilityZoneState
-	AvailabilityZoneStateImpaired = "impaired"
-	// @enum AvailabilityZoneState
-	AvailabilityZoneStateUnavailable = "unavailable"
-)
-
-const (
-	// @enum BatchState
-	BatchStateSubmitted = "submitted"
-	// @enum BatchState
-	BatchStateActive = "active"
-	// @enum BatchState
-	BatchStateCancelled = "cancelled"
-	// @enum BatchState
-	BatchStateFailed = "failed"
-	// @enum BatchState
-	BatchStateCancelledRunning = "cancelled_running"
-	// @enum BatchState
-	BatchStateCancelledTerminating = "cancelled_terminating"
-	// @enum BatchState
-	BatchStateModifying = "modifying"
-)
-
-const (
-	// @enum BundleTaskState
-	BundleTaskStatePending = "pending"
-	// @enum BundleTaskState
-	BundleTaskStateWaitingForShutdown = "waiting-for-shutdown"
-	// @enum BundleTaskState
-	BundleTaskStateBundling = "bundling"
-	// @enum BundleTaskState
-	BundleTaskStateStoring = "storing"
-	// @enum BundleTaskState
-	BundleTaskStateCancelling = "cancelling"
-	// @enum BundleTaskState
-	BundleTaskStateComplete = "complete"
-	// @enum BundleTaskState
-	BundleTaskStateFailed = "failed"
-)
-
-const (
-	// @enum CancelBatchErrorCode
-	CancelBatchErrorCodeFleetRequestIdDoesNotExist = "fleetRequestIdDoesNotExist"
-	// @enum CancelBatchErrorCode
-	CancelBatchErrorCodeFleetRequestIdMalformed = "fleetRequestIdMalformed"
-	// @enum CancelBatchErrorCode
-	CancelBatchErrorCodeFleetRequestNotInCancellableState = "fleetRequestNotInCancellableState"
-	// @enum CancelBatchErrorCode
-	CancelBatchErrorCodeUnexpectedError = "unexpectedError"
-)
-
-const (
-	// @enum CancelSpotInstanceRequestState
-	CancelSpotInstanceRequestStateActive = "active"
-	// @enum CancelSpotInstanceRequestState
-	CancelSpotInstanceRequestStateOpen = "open"
-	// @enum CancelSpotInstanceRequestState
-	CancelSpotInstanceRequestStateClosed = "closed"
-	// @enum CancelSpotInstanceRequestState
-	CancelSpotInstanceRequestStateCancelled = "cancelled"
-	// @enum CancelSpotInstanceRequestState
-	CancelSpotInstanceRequestStateCompleted = "completed"
-)
-
-const (
-	// @enum ContainerFormat
-	ContainerFormatOva = "ova"
-)
-
-const (
-	// @enum ConversionTaskState
-	ConversionTaskStateActive = "active"
-	// @enum ConversionTaskState
-	ConversionTaskStateCancelling = "cancelling"
-	// @enum ConversionTaskState
-	ConversionTaskStateCancelled = "cancelled"
-	// @enum ConversionTaskState
-	ConversionTaskStateCompleted = "completed"
-)
-
-const (
-	// @enum CurrencyCodeValues
-	CurrencyCodeValuesUsd = "USD"
-)
-
-const (
-	// @enum DatafeedSubscriptionState
-	DatafeedSubscriptionStateActive = "Active"
-	// @enum DatafeedSubscriptionState
-	DatafeedSubscriptionStateInactive = "Inactive"
-)
-
-const (
-	// @enum DeviceType
-	DeviceTypeEbs = "ebs"
-	// @enum DeviceType
-	DeviceTypeInstanceStore = "instance-store"
-)
-
-const (
-	// @enum DiskImageFormat
-	DiskImageFormatVmdk = "VMDK"
-	// @enum DiskImageFormat
-	DiskImageFormatRaw = "RAW"
-	// @enum DiskImageFormat
-	DiskImageFormatVhd = "VHD"
-)
-
-const (
-	// @enum DomainType
-	DomainTypeVpc = "vpc"
-	// @enum DomainType
-	DomainTypeStandard = "standard"
-)
-
-const (
-	// @enum EventCode
-	EventCodeInstanceReboot = "instance-reboot"
-	// @enum EventCode
-	EventCodeSystemReboot = "system-reboot"
-	// @enum EventCode
-	EventCodeSystemMaintenance = "system-maintenance"
-	// @enum EventCode
-	EventCodeInstanceRetirement = "instance-retirement"
-	// @enum EventCode
-	EventCodeInstanceStop = "instance-stop"
-)
-
-const (
-	// @enum EventType
-	EventTypeInstanceChange = "instanceChange"
-	// @enum EventType
-	EventTypeFleetRequestChange = "fleetRequestChange"
-	// @enum EventType
-	EventTypeError = "error"
-)
-
-const (
-	// @enum ExcessCapacityTerminationPolicy
-	ExcessCapacityTerminationPolicyNoTermination = "noTermination"
-	// @enum ExcessCapacityTerminationPolicy
-	ExcessCapacityTerminationPolicyDefault = "default"
-)
-
-const (
-	// @enum ExportEnvironment
-	ExportEnvironmentCitrix = "citrix"
-	// @enum ExportEnvironment
-	ExportEnvironmentVmware = "vmware"
-	// @enum ExportEnvironment
-	ExportEnvironmentMicrosoft = "microsoft"
-)
-
-const (
-	// @enum ExportTaskState
-	ExportTaskStateActive = "active"
-	// @enum ExportTaskState
-	ExportTaskStateCancelling = "cancelling"
-	// @enum ExportTaskState
-	ExportTaskStateCancelled = "cancelled"
-	// @enum ExportTaskState
-	ExportTaskStateCompleted = "completed"
-)
-
-const (
-	// @enum FlowLogsResourceType
-	FlowLogsResourceTypeVpc = "VPC"
-	// @enum FlowLogsResourceType
-	FlowLogsResourceTypeSubnet = "Subnet"
-	// @enum FlowLogsResourceType
-	FlowLogsResourceTypeNetworkInterface = "NetworkInterface"
-)
-
-const (
-	// @enum GatewayType
-	GatewayTypeIpsec1 = "ipsec.1"
-)
-
-const (
-	// @enum HypervisorType
-	HypervisorTypeOvm = "ovm"
-	// @enum HypervisorType
-	HypervisorTypeXen = "xen"
-)
-
-const (
-	// @enum ImageAttributeName
-	ImageAttributeNameDescription = "description"
-	// @enum ImageAttributeName
-	ImageAttributeNameKernel = "kernel"
-	// @enum ImageAttributeName
-	ImageAttributeNameRamdisk = "ramdisk"
-	// @enum ImageAttributeName
-	ImageAttributeNameLaunchPermission = "launchPermission"
-	// @enum ImageAttributeName
-	ImageAttributeNameProductCodes = "productCodes"
-	// @enum ImageAttributeName
-	ImageAttributeNameBlockDeviceMapping = "blockDeviceMapping"
-	// @enum ImageAttributeName
-	ImageAttributeNameSriovNetSupport = "sriovNetSupport"
-)
-
-const (
-	// @enum ImageState
-	ImageStatePending = "pending"
-	// @enum ImageState
-	ImageStateAvailable = "available"
-	// @enum ImageState
-	ImageStateInvalid = "invalid"
-	// @enum ImageState
-	ImageStateDeregistered = "deregistered"
-	// @enum ImageState
-	ImageStateTransient = "transient"
-	// @enum ImageState
-	ImageStateFailed = "failed"
-	// @enum ImageState
-	ImageStateError = "error"
-)
-
-const (
-	// @enum ImageTypeValues
-	ImageTypeValuesMachine = "machine"
-	// @enum ImageTypeValues
-	ImageTypeValuesKernel = "kernel"
-	// @enum ImageTypeValues
-	ImageTypeValuesRamdisk = "ramdisk"
-)
-
-const (
-	// @enum InstanceAttributeName
-	InstanceAttributeNameInstanceType = "instanceType"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameKernel = "kernel"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameRamdisk = "ramdisk"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameUserData = "userData"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameDisableApiTermination = "disableApiTermination"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameInstanceInitiatedShutdownBehavior = "instanceInitiatedShutdownBehavior"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameRootDeviceName = "rootDeviceName"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameBlockDeviceMapping = "blockDeviceMapping"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameProductCodes = "productCodes"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameSourceDestCheck = "sourceDestCheck"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameGroupSet = "groupSet"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameEbsOptimized = "ebsOptimized"
-	// @enum InstanceAttributeName
-	InstanceAttributeNameSriovNetSupport = "sriovNetSupport"
-)
-
-const (
-	// @enum InstanceLifecycleType
-	InstanceLifecycleTypeSpot = "spot"
-)
-
-const (
-	// @enum InstanceStateName
-	InstanceStateNamePending = "pending"
-	// @enum InstanceStateName
-	InstanceStateNameRunning = "running"
-	// @enum InstanceStateName
-	InstanceStateNameShuttingDown = "shutting-down"
-	// @enum InstanceStateName
-	InstanceStateNameTerminated = "terminated"
-	// @enum InstanceStateName
-	InstanceStateNameStopping = "stopping"
-	// @enum InstanceStateName
-	InstanceStateNameStopped = "stopped"
-)
-
-const (
-	// @enum InstanceType
-	InstanceTypeT1Micro = "t1.micro"
-	// @enum InstanceType
-	InstanceTypeM1Small = "m1.small"
-	// @enum InstanceType
-	InstanceTypeM1Medium = "m1.medium"
-	// @enum InstanceType
-	InstanceTypeM1Large = "m1.large"
-	// @enum InstanceType
-	InstanceTypeM1Xlarge = "m1.xlarge"
-	// @enum InstanceType
-	InstanceTypeM3Medium = "m3.medium"
-	// @enum InstanceType
-	InstanceTypeM3Large = "m3.large"
-	// @enum InstanceType
-	InstanceTypeM3Xlarge = "m3.xlarge"
-	// @enum InstanceType
-	InstanceTypeM32xlarge = "m3.2xlarge"
-	// @enum InstanceType
-	InstanceTypeM4Large = "m4.large"
-	// @enum InstanceType
-	InstanceTypeM4Xlarge = "m4.xlarge"
-	// @enum InstanceType
-	InstanceTypeM42xlarge = "m4.2xlarge"
-	// @enum InstanceType
-	InstanceTypeM44xlarge = "m4.4xlarge"
-	// @enum InstanceType
-	InstanceTypeM410xlarge = "m4.10xlarge"
-	// @enum InstanceType
-	InstanceTypeT2Micro = "t2.micro"
-	// @enum InstanceType
-	InstanceTypeT2Small = "t2.small"
-	// @enum InstanceType
-	InstanceTypeT2Medium = "t2.medium"
-	// @enum InstanceType
-	InstanceTypeT2Large = "t2.large"
-	// @enum InstanceType
-	InstanceTypeM2Xlarge = "m2.xlarge"
-	// @enum InstanceType
-	InstanceTypeM22xlarge = "m2.2xlarge"
-	// @enum InstanceType
-	InstanceTypeM24xlarge = "m2.4xlarge"
-	// @enum InstanceType
-	InstanceTypeCr18xlarge = "cr1.8xlarge"
-	// @enum InstanceType
-	InstanceTypeI2Xlarge = "i2.xlarge"
-	// @enum InstanceType
-	InstanceTypeI22xlarge = "i2.2xlarge"
-	// @enum InstanceType
-	InstanceTypeI24xlarge = "i2.4xlarge"
-	// @enum InstanceType
-	InstanceTypeI28xlarge = "i2.8xlarge"
-	// @enum InstanceType
-	InstanceTypeHi14xlarge = "hi1.4xlarge"
-	// @enum InstanceType
-	InstanceTypeHs18xlarge = "hs1.8xlarge"
-	// @enum InstanceType
-	InstanceTypeC1Medium = "c1.medium"
-	// @enum InstanceType
-	InstanceTypeC1Xlarge = "c1.xlarge"
-	// @enum InstanceType
-	InstanceTypeC3Large = "c3.large"
-	// @enum InstanceType
-	InstanceTypeC3Xlarge = "c3.xlarge"
-	// @enum InstanceType
-	InstanceTypeC32xlarge = "c3.2xlarge"
-	// @enum InstanceType
-	InstanceTypeC34xlarge = "c3.4xlarge"
-	// @enum InstanceType
-	InstanceTypeC38xlarge = "c3.8xlarge"
-	// @enum InstanceType
-	InstanceTypeC4Large = "c4.large"
-	// @enum InstanceType
-	InstanceTypeC4Xlarge = "c4.xlarge"
-	// @enum InstanceType
-	InstanceTypeC42xlarge = "c4.2xlarge"
-	// @enum InstanceType
-	InstanceTypeC44xlarge = "c4.4xlarge"
-	// @enum InstanceType
-	InstanceTypeC48xlarge = "c4.8xlarge"
-	// @enum InstanceType
-	InstanceTypeCc14xlarge = "cc1.4xlarge"
-	// @enum InstanceType
-	InstanceTypeCc28xlarge = "cc2.8xlarge"
-	// @enum InstanceType
-	InstanceTypeG22xlarge = "g2.2xlarge"
-	// @enum InstanceType
-	InstanceTypeCg14xlarge = "cg1.4xlarge"
-	// @enum InstanceType
-	InstanceTypeR3Large = "r3.large"
-	// @enum InstanceType
-	InstanceTypeR3Xlarge = "r3.xlarge"
-	// @enum InstanceType
-	InstanceTypeR32xlarge = "r3.2xlarge"
-	// @enum InstanceType
-	InstanceTypeR34xlarge = "r3.4xlarge"
-	// @enum InstanceType
-	InstanceTypeR38xlarge = "r3.8xlarge"
-	// @enum InstanceType
-	InstanceTypeD2Xlarge = "d2.xlarge"
-	// @enum InstanceType
-	InstanceTypeD22xlarge = "d2.2xlarge"
-	// @enum InstanceType
-	InstanceTypeD24xlarge = "d2.4xlarge"
-	// @enum InstanceType
-	InstanceTypeD28xlarge = "d2.8xlarge"
-)
-
-const (
-	// @enum ListingState
-	ListingStateAvailable = "available"
-	// @enum ListingState
-	ListingStateSold = "sold"
-	// @enum ListingState
-	ListingStateCancelled = "cancelled"
-	// @enum ListingState
-	ListingStatePending = "pending"
-)
-
-const (
-	// @enum ListingStatus
-	ListingStatusActive = "active"
-	// @enum ListingStatus
-	ListingStatusPending = "pending"
-	// @enum ListingStatus
-	ListingStatusCancelled = "cancelled"
-	// @enum ListingStatus
-	ListingStatusClosed = "closed"
-)
-
-const (
-	// @enum MonitoringState
-	MonitoringStateDisabled = "disabled"
-	// @enum MonitoringState
-	MonitoringStateDisabling = "disabling"
-	// @enum MonitoringState
-	MonitoringStateEnabled = "enabled"
-	// @enum MonitoringState
-	MonitoringStatePending = "pending"
-)
-
-const (
-	// @enum MoveStatus
-	MoveStatusMovingToVpc = "movingToVpc"
-	// @enum MoveStatus
-	MoveStatusRestoringToClassic = "restoringToClassic"
-)
-
-const (
-	// @enum NetworkInterfaceAttribute
-	NetworkInterfaceAttributeDescription = "description"
-	// @enum NetworkInterfaceAttribute
-	NetworkInterfaceAttributeGroupSet = "groupSet"
-	// @enum NetworkInterfaceAttribute
-	NetworkInterfaceAttributeSourceDestCheck = "sourceDestCheck"
-	// @enum NetworkInterfaceAttribute
-	NetworkInterfaceAttributeAttachment = "attachment"
-)
-
-const (
-	// @enum NetworkInterfaceStatus
-	NetworkInterfaceStatusAvailable = "available"
-	// @enum NetworkInterfaceStatus
-	NetworkInterfaceStatusAttaching = "attaching"
-	// @enum NetworkInterfaceStatus
-	NetworkInterfaceStatusInUse = "in-use"
-	// @enum NetworkInterfaceStatus
-	NetworkInterfaceStatusDetaching = "detaching"
-)
-
-const (
-	// @enum OfferingTypeValues
-	OfferingTypeValuesHeavyUtilization = "Heavy Utilization"
-	// @enum OfferingTypeValues
-	OfferingTypeValuesMediumUtilization = "Medium Utilization"
-	// @enum OfferingTypeValues
-	OfferingTypeValuesLightUtilization = "Light Utilization"
-	// @enum OfferingTypeValues
-	OfferingTypeValuesNoUpfront = "No Upfront"
-	// @enum OfferingTypeValues
-	OfferingTypeValuesPartialUpfront = "Partial Upfront"
-	// @enum OfferingTypeValues
-	OfferingTypeValuesAllUpfront = "All Upfront"
-)
-
-const (
-	// @enum OperationType
-	OperationTypeAdd = "add"
-	// @enum OperationType
-	OperationTypeRemove = "remove"
-)
-
-const (
-	// @enum PermissionGroup
-	PermissionGroupAll = "all"
-)
-
-const (
-	// @enum PlacementGroupState
-	PlacementGroupStatePending = "pending"
-	// @enum PlacementGroupState
-	PlacementGroupStateAvailable = "available"
-	// @enum PlacementGroupState
-	PlacementGroupStateDeleting = "deleting"
-	// @enum PlacementGroupState
-	PlacementGroupStateDeleted = "deleted"
-)
-
-const (
-	// @enum PlacementStrategy
-	PlacementStrategyCluster = "cluster"
-)
-
-const (
-	// @enum PlatformValues
-	PlatformValuesWindows = "Windows"
-)
-
-const (
-	// @enum ProductCodeValues
-	ProductCodeValuesDevpay = "devpay"
-	// @enum ProductCodeValues
-	ProductCodeValuesMarketplace = "marketplace"
-)
-
-const (
-	// @enum RIProductDescription
-	RIProductDescriptionLinuxUnix = "Linux/UNIX"
-	// @enum RIProductDescription
-	RIProductDescriptionLinuxUnixamazonVpc = "Linux/UNIX (Amazon VPC)"
-	// @enum RIProductDescription
-	RIProductDescriptionWindows = "Windows"
-	// @enum RIProductDescription
-	RIProductDescriptionWindowsAmazonVpc = "Windows (Amazon VPC)"
-)
-
-const (
-	// @enum RecurringChargeFrequency
-	RecurringChargeFrequencyHourly = "Hourly"
-)
-
-const (
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesInstanceStuckInState = "instance-stuck-in-state"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesUnresponsive = "unresponsive"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesNotAcceptingCredentials = "not-accepting-credentials"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesPasswordNotAvailable = "password-not-available"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesPerformanceNetwork = "performance-network"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesPerformanceInstanceStore = "performance-instance-store"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesPerformanceEbsVolume = "performance-ebs-volume"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesPerformanceOther = "performance-other"
-	// @enum ReportInstanceReasonCodes
-	ReportInstanceReasonCodesOther = "other"
-)
-
-const (
-	// @enum ReportStatusType
-	ReportStatusTypeOk = "ok"
-	// @enum ReportStatusType
-	ReportStatusTypeImpaired = "impaired"
-)
-
-const (
-	// @enum ReservedInstanceState
-	ReservedInstanceStatePaymentPending = "payment-pending"
-	// @enum ReservedInstanceState
-	ReservedInstanceStateActive = "active"
-	// @enum ReservedInstanceState
-	ReservedInstanceStatePaymentFailed = "payment-failed"
-	// @enum ReservedInstanceState
-	ReservedInstanceStateRetired = "retired"
-)
-
-const (
-	// @enum ResetImageAttributeName
-	ResetImageAttributeNameLaunchPermission = "launchPermission"
-)
-
-const (
-	// @enum ResourceType
-	ResourceTypeCustomerGateway = "customer-gateway"
-	// @enum ResourceType
-	ResourceTypeDhcpOptions = "dhcp-options"
-	// @enum ResourceType
-	ResourceTypeImage = "image"
-	// @enum ResourceType
-	ResourceTypeInstance = "instance"
-	// @enum ResourceType
-	ResourceTypeInternetGateway = "internet-gateway"
-	// @enum ResourceType
-	ResourceTypeNetworkAcl = "network-acl"
-	// @enum ResourceType
-	ResourceTypeNetworkInterface = "network-interface"
-	// @enum ResourceType
-	ResourceTypeReservedInstances = "reserved-instances"
-	// @enum ResourceType
-	ResourceTypeRouteTable = "route-table"
-	// @enum ResourceType
-	ResourceTypeSnapshot = "snapshot"
-	// @enum ResourceType
-	ResourceTypeSpotInstancesRequest = "spot-instances-request"
-	// @enum ResourceType
-	ResourceTypeSubnet = "subnet"
-	// @enum ResourceType
-	ResourceTypeSecurityGroup = "security-group"
-	// @enum ResourceType
-	ResourceTypeVolume = "volume"
-	// @enum ResourceType
-	ResourceTypeVpc = "vpc"
-	// @enum ResourceType
-	ResourceTypeVpnConnection = "vpn-connection"
-	// @enum ResourceType
-	ResourceTypeVpnGateway = "vpn-gateway"
-)
-
-const (
-	// @enum RouteOrigin
-	RouteOriginCreateRouteTable = "CreateRouteTable"
-	// @enum RouteOrigin
-	RouteOriginCreateRoute = "CreateRoute"
-	// @enum RouteOrigin
-	RouteOriginEnableVgwRoutePropagation = "EnableVgwRoutePropagation"
-)
-
-const (
-	// @enum RouteState
-	RouteStateActive = "active"
-	// @enum RouteState
-	RouteStateBlackhole = "blackhole"
-)
-
-const (
-	// @enum RuleAction
-	RuleActionAllow = "allow"
-	// @enum RuleAction
-	RuleActionDeny = "deny"
-)
-
-const (
-	// @enum ShutdownBehavior
-	ShutdownBehaviorStop = "stop"
-	// @enum ShutdownBehavior
-	ShutdownBehaviorTerminate = "terminate"
-)
-
-const (
-	// @enum SnapshotAttributeName
-	SnapshotAttributeNameProductCodes = "productCodes"
-	// @enum SnapshotAttributeName
-	SnapshotAttributeNameCreateVolumePermission = "createVolumePermission"
-)
-
-const (
-	// @enum SnapshotState
-	SnapshotStatePending = "pending"
-	// @enum SnapshotState
-	SnapshotStateCompleted = "completed"
-	// @enum SnapshotState
-	SnapshotStateError = "error"
-)
-
-const (
-	// @enum SpotInstanceState
-	SpotInstanceStateOpen = "open"
-	// @enum SpotInstanceState
-	SpotInstanceStateActive = "active"
-	// @enum SpotInstanceState
-	SpotInstanceStateClosed = "closed"
-	// @enum SpotInstanceState
-	SpotInstanceStateCancelled = "cancelled"
-	// @enum SpotInstanceState
-	SpotInstanceStateFailed = "failed"
-)
-
-const (
-	// @enum SpotInstanceType
-	SpotInstanceTypeOneTime = "one-time"
-	// @enum SpotInstanceType
-	SpotInstanceTypePersistent = "persistent"
-)
-
-const (
-	// @enum State
-	StatePending = "Pending"
-	// @enum State
-	StateAvailable = "Available"
-	// @enum State
-	StateDeleting = "Deleting"
-	// @enum State
-	StateDeleted = "Deleted"
-)
-
-const (
-	// @enum Status
-	StatusMoveInProgress = "MoveInProgress"
-	// @enum Status
-	StatusInVpc = "InVpc"
-	// @enum Status
-	StatusInClassic = "InClassic"
-)
-
-const (
-	// @enum StatusName
-	StatusNameReachability = "reachability"
-)
-
-const (
-	// @enum StatusType
-	StatusTypePassed = "passed"
-	// @enum StatusType
-	StatusTypeFailed = "failed"
-	// @enum StatusType
-	StatusTypeInsufficientData = "insufficient-data"
-	// @enum StatusType
-	StatusTypeInitializing = "initializing"
-)
-
-const (
-	// @enum SubnetState
-	SubnetStatePending = "pending"
-	// @enum SubnetState
-	SubnetStateAvailable = "available"
-)
-
-const (
-	// @enum SummaryStatus
-	SummaryStatusOk = "ok"
-	// @enum SummaryStatus
-	SummaryStatusImpaired = "impaired"
-	// @enum SummaryStatus
-	SummaryStatusInsufficientData = "insufficient-data"
-	// @enum SummaryStatus
-	SummaryStatusNotApplicable = "not-applicable"
-	// @enum SummaryStatus
-	SummaryStatusInitializing = "initializing"
-)
-
-const (
-	// @enum TelemetryStatus
-	TelemetryStatusUp = "UP"
-	// @enum TelemetryStatus
-	TelemetryStatusDown = "DOWN"
-)
-
-const (
-	// @enum Tenancy
-	TenancyDefault = "default"
-	// @enum Tenancy
-	TenancyDedicated = "dedicated"
-)
-
-const (
-	// @enum TrafficType
-	TrafficTypeAccept = "ACCEPT"
-	// @enum TrafficType
-	TrafficTypeReject = "REJECT"
-	// @enum TrafficType
-	TrafficTypeAll = "ALL"
-)
-
-const (
-	// @enum VirtualizationType
-	VirtualizationTypeHvm = "hvm"
-	// @enum VirtualizationType
-	VirtualizationTypeParavirtual = "paravirtual"
-)
-
-const (
-	// @enum VolumeAttachmentState
-	VolumeAttachmentStateAttaching = "attaching"
-	// @enum VolumeAttachmentState
-	VolumeAttachmentStateAttached = "attached"
-	// @enum VolumeAttachmentState
-	VolumeAttachmentStateDetaching = "detaching"
-	// @enum VolumeAttachmentState
-	VolumeAttachmentStateDetached = "detached"
-)
-
-const (
-	// @enum VolumeAttributeName
-	VolumeAttributeNameAutoEnableIo = "autoEnableIO"
-	// @enum VolumeAttributeName
-	VolumeAttributeNameProductCodes = "productCodes"
-)
-
-const (
-	// @enum VolumeState
-	VolumeStateCreating = "creating"
-	// @enum VolumeState
-	VolumeStateAvailable = "available"
-	// @enum VolumeState
-	VolumeStateInUse = "in-use"
-	// @enum VolumeState
-	VolumeStateDeleting = "deleting"
-	// @enum VolumeState
-	VolumeStateDeleted = "deleted"
-	// @enum VolumeState
-	VolumeStateError = "error"
-)
-
-const (
-	// @enum VolumeStatusInfoStatus
-	VolumeStatusInfoStatusOk = "ok"
-	// @enum VolumeStatusInfoStatus
-	VolumeStatusInfoStatusImpaired = "impaired"
-	// @enum VolumeStatusInfoStatus
-	VolumeStatusInfoStatusInsufficientData = "insufficient-data"
-)
-
-const (
-	// @enum VolumeStatusName
-	VolumeStatusNameIoEnabled = "io-enabled"
-	// @enum VolumeStatusName
-	VolumeStatusNameIoPerformance = "io-performance"
-)
-
-const (
-	// @enum VolumeType
-	VolumeTypeStandard = "standard"
-	// @enum VolumeType
-	VolumeTypeIo1 = "io1"
-	// @enum VolumeType
-	VolumeTypeGp2 = "gp2"
-)
-
-const (
-	// @enum VpcAttributeName
-	VpcAttributeNameEnableDnsSupport = "enableDnsSupport"
-	// @enum VpcAttributeName
-	VpcAttributeNameEnableDnsHostnames = "enableDnsHostnames"
-)
-
-const (
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeInitiatingRequest = "initiating-request"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodePendingAcceptance = "pending-acceptance"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeActive = "active"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeDeleted = "deleted"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeRejected = "rejected"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeFailed = "failed"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeExpired = "expired"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeProvisioning = "provisioning"
-	// @enum VpcPeeringConnectionStateReasonCode
-	VpcPeeringConnectionStateReasonCodeDeleting = "deleting"
-)
-
-const (
-	// @enum VpcState
-	VpcStatePending = "pending"
-	// @enum VpcState
-	VpcStateAvailable = "available"
-)
-
-const (
-	// @enum VpnState
-	VpnStatePending = "pending"
-	// @enum VpnState
-	VpnStateAvailable = "available"
-	// @enum VpnState
-	VpnStateDeleting = "deleting"
-	// @enum VpnState
-	VpnStateDeleted = "deleted"
-)
-
-const (
-	// @enum VpnStaticRouteSource
-	VpnStaticRouteSourceStatic = "Static"
-)

部分文件因为文件数量过多而无法显示