gitextract_sx40lk7k/ ├── .deepsource.toml ├── .fossa.yml ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── custom.md │ │ └── feature_request.md │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── scripts/ │ │ └── setup_examples_test.bash │ └── workflows/ │ ├── ci.yml │ └── codeql-analysis.yml ├── .gitignore ├── AUTHORS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FAQ.md ├── HISTORY.md ├── LICENSE ├── NOTICE ├── README.md ├── README_AR.md ├── README_ES.md ├── README_FA.md ├── README_FR.md ├── README_GR.md ├── README_JA.md ├── README_KO.md ├── README_PT_BR.md ├── README_RU.md ├── README_VN.md ├── README_ZH.md ├── README_ZH_HANS.md ├── README_ZH_HANT.md ├── SECURITY.md ├── VERSION ├── _benchmarks/ │ ├── README.md │ └── view/ │ ├── README.md │ ├── ace/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.ace │ │ ├── layouts/ │ │ │ └── main.ace │ │ └── partials/ │ │ └── footer.ace │ ├── blocks/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.html │ │ ├── layouts/ │ │ │ └── main.html │ │ └── partials/ │ │ └── footer.html │ ├── django/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.html │ │ ├── layouts/ │ │ │ └── main.html │ │ └── partials/ │ │ └── footer.html │ ├── handlebars/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.html │ │ ├── layouts/ │ │ │ └── main.html │ │ └── partials/ │ │ └── footer.html │ ├── html/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.html │ │ ├── layouts/ │ │ │ └── main.html │ │ └── partials/ │ │ └── footer.html │ ├── jet/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.jet │ │ ├── layouts/ │ │ │ └── main.jet │ │ └── partials/ │ │ └── footer.jet │ ├── pug/ │ │ ├── main.go │ │ └── views/ │ │ ├── index.pug │ │ ├── layouts/ │ │ │ └── main.pug │ │ └── partials/ │ │ └── footer.pug │ └── tests.yml ├── _examples/ │ ├── README.md │ ├── README_ZH_HANT.md │ ├── apidoc/ │ │ └── swagger/ │ │ └── README.md │ ├── auth/ │ │ ├── auth/ │ │ │ ├── README.md │ │ │ ├── auth.yml │ │ │ ├── main.go │ │ │ ├── user.go │ │ │ ├── user_provider.go │ │ │ └── views/ │ │ │ ├── layouts/ │ │ │ │ └── main.html │ │ │ ├── partials/ │ │ │ │ └── footer.html │ │ │ └── signin.html │ │ ├── basicauth/ │ │ │ ├── basic/ │ │ │ │ ├── main.go │ │ │ │ └── main_test.go │ │ │ ├── database/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── README.md │ │ │ │ ├── docker-compose.yml │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── main.go │ │ │ │ └── migration/ │ │ │ │ └── db.sql │ │ │ ├── users_file_bcrypt/ │ │ │ │ ├── main.go │ │ │ │ └── users.yml │ │ │ └── users_list/ │ │ │ └── main.go │ │ ├── cors/ │ │ │ ├── main.go │ │ │ └── public/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── goth/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── user.html │ │ ├── hcaptcha/ │ │ │ ├── hosts │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── register_form.html │ │ ├── jwt/ │ │ │ ├── basic/ │ │ │ │ └── main.go │ │ │ ├── blocklist/ │ │ │ │ └── main.go │ │ │ ├── middleware/ │ │ │ │ └── main.go │ │ │ ├── refresh-token/ │ │ │ │ ├── main.go │ │ │ │ ├── rsa_private_key.pem │ │ │ │ └── rsa_public_key.pem │ │ │ └── tutorial/ │ │ │ ├── README.md │ │ │ ├── api/ │ │ │ │ ├── auth.go │ │ │ │ ├── router.go │ │ │ │ └── todo.go │ │ │ ├── domain/ │ │ │ │ ├── model/ │ │ │ │ │ ├── role.go │ │ │ │ │ ├── todo.go │ │ │ │ │ └── user.go │ │ │ │ └── repository/ │ │ │ │ ├── samples.go │ │ │ │ ├── todo_repository.go │ │ │ │ └── user_repository.go │ │ │ ├── go-client/ │ │ │ │ ├── README.md │ │ │ │ ├── client.go │ │ │ │ └── main.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ └── util/ │ │ │ ├── app.go │ │ │ ├── clock.go │ │ │ ├── password.go │ │ │ └── uuid.go │ │ ├── permissions/ │ │ │ └── main.go │ │ └── recaptcha/ │ │ ├── custom_form/ │ │ │ └── main.go │ │ └── main.go │ ├── bootstrapper/ │ │ ├── bootstrap/ │ │ │ └── bootstrapper.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── main_test.go │ │ ├── middleware/ │ │ │ └── identity/ │ │ │ └── identity.go │ │ ├── routes/ │ │ │ ├── follower.go │ │ │ ├── following.go │ │ │ ├── index.go │ │ │ ├── like.go │ │ │ └── routes.go │ │ └── views/ │ │ ├── index.html │ │ └── shared/ │ │ ├── error.html │ │ └── layout.html │ ├── caddy/ │ │ ├── Caddyfile │ │ ├── README.md │ │ ├── server1/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── index.html │ │ │ └── shared/ │ │ │ └── layout.html │ │ └── server2/ │ │ └── main.go │ ├── compression/ │ │ ├── client/ │ │ │ └── main.go │ │ ├── client-using-iris/ │ │ │ └── main.go │ │ ├── main.go │ │ └── main_test.go │ ├── configuration/ │ │ ├── from-configuration-structure/ │ │ │ └── main.go │ │ ├── from-toml-file/ │ │ │ ├── configs/ │ │ │ │ └── iris.tml │ │ │ └── main.go │ │ ├── from-yaml-file/ │ │ │ ├── configs/ │ │ │ │ └── iris.yml │ │ │ ├── main.go │ │ │ └── shared-configuration/ │ │ │ └── main.go │ │ ├── functional/ │ │ │ └── main.go │ │ ├── multi-environments/ │ │ │ ├── README.md │ │ │ ├── api/ │ │ │ │ ├── configuration.go │ │ │ │ └── server.go │ │ │ ├── cmd/ │ │ │ │ └── root_command.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ ├── server.dev.yml │ │ │ └── server.yml │ │ └── viper/ │ │ ├── config/ │ │ │ └── config.go │ │ ├── config.yml │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── convert-handlers/ │ │ ├── negroni-like/ │ │ │ └── main.go │ │ ├── nethttp/ │ │ │ ├── main.go │ │ │ └── wrapper/ │ │ │ └── main.go │ │ └── real-usecase-raven/ │ │ ├── wrapping-the-router/ │ │ │ └── main.go │ │ └── writing-middleware/ │ │ └── main.go │ ├── cookies/ │ │ ├── basic/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── options/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── securecookie/ │ │ ├── main.go │ │ └── main_test.go │ ├── database/ │ │ ├── mongodb/ │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── api/ │ │ │ │ └── store/ │ │ │ │ └── movie.go │ │ │ ├── docker-compose.yml │ │ │ ├── env/ │ │ │ │ └── env.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── httputil/ │ │ │ │ └── error.go │ │ │ ├── main.go │ │ │ └── store/ │ │ │ └── movie.go │ │ ├── mysql/ │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── api/ │ │ │ │ ├── api.go │ │ │ │ ├── category_handler.go │ │ │ │ ├── helper.go │ │ │ │ ├── httperror.go │ │ │ │ ├── middleware/ │ │ │ │ │ └── .gitkeep │ │ │ │ └── product_handler.go │ │ │ ├── cache/ │ │ │ │ └── groupcache.go │ │ │ ├── docker-compose.yml │ │ │ ├── entity/ │ │ │ │ ├── category.go │ │ │ │ └── product.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ ├── migration/ │ │ │ │ ├── api_category/ │ │ │ │ │ ├── create_category.json │ │ │ │ │ ├── insert_products_category.json │ │ │ │ │ ├── update_category.json │ │ │ │ │ └── update_partial_category.json │ │ │ │ ├── api_postman.json │ │ │ │ ├── api_product/ │ │ │ │ │ ├── create_product.json │ │ │ │ │ ├── update_partial_product.json │ │ │ │ │ └── update_product.json │ │ │ │ └── db.sql │ │ │ ├── service/ │ │ │ │ ├── category_service.go │ │ │ │ ├── category_service_test.go │ │ │ │ └── product_service.go │ │ │ └── sql/ │ │ │ ├── mysql.go │ │ │ ├── service.go │ │ │ └── sql.go │ │ ├── orm/ │ │ │ ├── gorm/ │ │ │ │ ├── REAMDE.md │ │ │ │ └── main.go │ │ │ ├── reform/ │ │ │ │ ├── controllers/ │ │ │ │ │ └── person_controller.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── main.go │ │ │ │ ├── models/ │ │ │ │ │ ├── person.go │ │ │ │ │ └── person_reform.go │ │ │ │ └── postman_collection.json │ │ │ └── sqlx/ │ │ │ └── main.go │ │ └── sqlx/ │ │ └── main.go │ ├── dependency-injection/ │ │ ├── basic/ │ │ │ ├── main.go │ │ │ └── middleware/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── context-register-dependency/ │ │ │ └── main.go │ │ ├── jwt/ │ │ │ ├── contrib/ │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ └── main.go │ │ │ └── main.go │ │ ├── overview/ │ │ │ ├── datamodels/ │ │ │ │ └── movie.go │ │ │ ├── datasource/ │ │ │ │ └── movies.go │ │ │ ├── main.go │ │ │ ├── repositories/ │ │ │ │ └── movie_repository.go │ │ │ ├── services/ │ │ │ │ └── movie_service.go │ │ │ └── web/ │ │ │ ├── middleware/ │ │ │ │ └── basicauth.go │ │ │ ├── routes/ │ │ │ │ ├── hello.go │ │ │ │ └── movies.go │ │ │ └── views/ │ │ │ └── hello/ │ │ │ ├── index.html │ │ │ └── name.html │ │ ├── sessions/ │ │ │ ├── main.go │ │ │ └── routes/ │ │ │ └── index.go │ │ └── smart-contract/ │ │ └── main.go │ ├── desktop/ │ │ ├── blink/ │ │ │ └── main.go │ │ ├── lorca/ │ │ │ └── main.go │ │ └── webview/ │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── dropzonejs/ │ │ ├── README.md │ │ ├── README_PART2.md │ │ ├── meta.yml │ │ └── src/ │ │ ├── main.go │ │ ├── public/ │ │ │ ├── css/ │ │ │ │ └── dropzone.css │ │ │ └── js/ │ │ │ └── dropzone.js │ │ └── views/ │ │ └── upload.html │ ├── file-server/ │ │ ├── basic/ │ │ │ ├── assets/ │ │ │ │ ├── app2/ │ │ │ │ │ ├── app22/ │ │ │ │ │ │ └── just_a_text_no_index.txt │ │ │ │ │ ├── app2app3/ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ ├── index.html │ │ │ │ └── js/ │ │ │ │ └── main.js │ │ │ ├── assets.system/ │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ └── test.txt │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── embedding-files-into-app/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ └── js/ │ │ │ │ └── main.js │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── embedding-files-into-app-bindata/ │ │ │ ├── assets/ │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ └── js/ │ │ │ │ └── main.js │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── embedding-gzipped-files-into-app-bindata/ │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── favicon/ │ │ │ └── main.go │ │ ├── file-server/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── dirlist.html │ │ │ └── upload.html │ │ ├── http2push/ │ │ │ ├── assets/ │ │ │ │ ├── app2/ │ │ │ │ │ ├── app2app3/ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ └── main.css │ │ │ │ │ │ ├── dirs/ │ │ │ │ │ │ │ ├── dir1/ │ │ │ │ │ │ │ │ └── text.txt │ │ │ │ │ │ │ ├── dir2/ │ │ │ │ │ │ │ │ └── text.txt │ │ │ │ │ │ │ └── text.txt │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── mydir/ │ │ │ │ │ └── text.txt │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ ├── index.html │ │ │ │ └── js/ │ │ │ │ └── main.js │ │ │ ├── main.go │ │ │ ├── mycert.crt │ │ │ └── mykey.key │ │ ├── http2push-embedded/ │ │ │ ├── bindata.go │ │ │ └── main.go │ │ ├── http2push-embedded-gzipped/ │ │ │ ├── bindata.go │ │ │ └── main.go │ │ ├── send-files/ │ │ │ └── main.go │ │ ├── single-page-application/ │ │ │ ├── basic/ │ │ │ │ ├── main.go │ │ │ │ └── public/ │ │ │ │ ├── index.html │ │ │ │ └── index.js │ │ │ ├── embedded-single-page-application/ │ │ │ │ ├── bindata.go │ │ │ │ ├── data/ │ │ │ │ │ ├── public/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── app2/ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── css/ │ │ │ │ │ │ └── main.css │ │ │ │ │ └── views/ │ │ │ │ │ └── index.html │ │ │ │ ├── main.go │ │ │ │ └── main_test.go │ │ │ └── embedded-single-page-application-with-other-routes/ │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── public/ │ │ │ ├── app.js │ │ │ ├── css/ │ │ │ │ └── main.css │ │ │ └── index.html │ │ ├── spa-vue-router/ │ │ │ ├── frontend/ │ │ │ │ ├── css/ │ │ │ │ │ └── page.css │ │ │ │ ├── index.html │ │ │ │ └── js/ │ │ │ │ └── app.js │ │ │ └── main.go │ │ ├── subdomain/ │ │ │ ├── assets/ │ │ │ │ ├── app2/ │ │ │ │ │ ├── app22/ │ │ │ │ │ │ └── just_a_text_no_index.txt │ │ │ │ │ ├── app2app3/ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── index.html │ │ │ │ ├── css/ │ │ │ │ │ └── main.css │ │ │ │ ├── index.html │ │ │ │ └── js/ │ │ │ │ └── jquery-2.1.1.js │ │ │ ├── hosts │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── upload-file/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── upload_form.html │ │ ├── upload-files/ │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── templates/ │ │ │ └── upload_form.html │ │ └── webdav/ │ │ ├── main.go │ │ ├── newdir/ │ │ │ └── .gitkeep │ │ └── test.txt │ ├── graphql/ │ │ └── schema-first/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── gqlgen.yml │ │ ├── graph/ │ │ │ ├── generated.go │ │ │ ├── model/ │ │ │ │ └── models_gen.go │ │ │ ├── resolver.go │ │ │ ├── schema.graphqls │ │ │ └── schema.resolvers.go │ │ ├── server.go │ │ └── tools.go │ ├── http-client/ │ │ └── weatherapi/ │ │ ├── client/ │ │ │ ├── client.go │ │ │ └── response.go │ │ └── main.go │ ├── http-server/ │ │ ├── README.md │ │ ├── custom-httpserver/ │ │ │ ├── easy-way/ │ │ │ │ └── main.go │ │ │ ├── multi/ │ │ │ │ └── main.go │ │ │ └── std-way/ │ │ │ └── main.go │ │ ├── custom-listener/ │ │ │ └── main.go │ │ ├── graceful-shutdown/ │ │ │ ├── custom-notifier/ │ │ │ │ └── main.go │ │ │ └── default-notifier/ │ │ │ └── main.go │ │ ├── h2c/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── main.go │ │ ├── http3-quic/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── localhost.cert │ │ │ ├── localhost.key │ │ │ └── main.go │ │ ├── iris-configurator-and-host-configurator/ │ │ │ └── main.go │ │ ├── listen-addr/ │ │ │ ├── main.go │ │ │ └── omit-server-errors/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── listen-addr-public/ │ │ │ └── main.go │ │ ├── listen-letsencrypt/ │ │ │ └── main.go │ │ ├── listen-tls/ │ │ │ ├── main.go │ │ │ ├── mycert.crt │ │ │ └── mykey.key │ │ ├── listen-unix/ │ │ │ └── main.go │ │ ├── notify-on-shutdown/ │ │ │ └── main.go │ │ ├── socket-sharding/ │ │ │ └── main.go │ │ └── timeout/ │ │ └── main.go │ ├── i18n/ │ │ ├── basic/ │ │ │ ├── hosts │ │ │ ├── locales/ │ │ │ │ ├── el-GR/ │ │ │ │ │ ├── locale_el-GR.ini │ │ │ │ │ ├── locale_multi_first_el-GR.yml │ │ │ │ │ └── locale_multi_second_el-GR.ini │ │ │ │ ├── en-US/ │ │ │ │ │ ├── locale_en-US.ini │ │ │ │ │ ├── locale_multi_first_en-US.yml │ │ │ │ │ └── locale_multi_second_en-US.ini │ │ │ │ └── zh-CN/ │ │ │ │ └── locale_zh-CN.ini │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── views/ │ │ │ └── index.html │ │ ├── plurals/ │ │ │ ├── locales/ │ │ │ │ └── en-US/ │ │ │ │ ├── 1648.ini │ │ │ │ └── welcome.yml │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── template/ │ │ │ ├── locales/ │ │ │ │ ├── el-GR/ │ │ │ │ │ ├── other.ini │ │ │ │ │ └── user.ini │ │ │ │ └── en-US/ │ │ │ │ ├── other.ini │ │ │ │ └── user.ini │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── template-embedded/ │ │ ├── embedded/ │ │ │ └── locales/ │ │ │ ├── el-GR/ │ │ │ │ ├── other.ini │ │ │ │ └── user.ini │ │ │ └── en-US/ │ │ │ ├── other.ini │ │ │ └── user.ini │ │ ├── main.go │ │ └── main_test.go │ ├── kafka-api/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ └── postman_collection.json │ ├── logging/ │ │ ├── file-logger/ │ │ │ └── main.go │ │ ├── json-logger/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── request-logger/ │ │ │ ├── accesslog/ │ │ │ │ ├── access.log.sample │ │ │ │ ├── main.go │ │ │ │ └── public/ │ │ │ │ └── index.html │ │ │ ├── accesslog-broker/ │ │ │ │ └── main.go │ │ │ ├── accesslog-csv/ │ │ │ │ ├── access_log.csv.sample │ │ │ │ └── main.go │ │ │ ├── accesslog-formatter/ │ │ │ │ └── main.go │ │ │ ├── accesslog-proxy/ │ │ │ │ ├── main.go │ │ │ │ └── target/ │ │ │ │ └── main.go │ │ │ ├── accesslog-simple/ │ │ │ │ ├── access.log.sample │ │ │ │ └── main.go │ │ │ ├── accesslog-slack/ │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── main.go │ │ │ │ └── slack_formatter.go │ │ │ └── accesslog-template/ │ │ │ └── main.go │ │ └── rollbar/ │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── monitor/ │ │ ├── monitor-middleware/ │ │ │ └── main.go │ │ └── statsviz/ │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── mvc/ │ │ ├── authenticated-controller/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── basic/ │ │ │ ├── main.go │ │ │ └── wildcard/ │ │ │ └── main.go │ │ ├── error-handler/ │ │ │ └── main.go │ │ ├── error-handler-custom-result/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── 404.html │ │ │ └── 500.html │ │ ├── error-handler-hijack/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── 404.html │ │ │ └── 500.html │ │ ├── error-handler-http/ │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── views/ │ │ │ ├── 404.html │ │ │ ├── 500.html │ │ │ └── unexpected-error.html │ │ ├── error-handler-preflight/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── 404.html │ │ │ └── 500.html │ │ ├── grpc-compatible/ │ │ │ ├── README.md │ │ │ ├── grpc-client/ │ │ │ │ └── main.go │ │ │ ├── helloworld/ │ │ │ │ ├── README.md │ │ │ │ ├── helloworld.pb.go │ │ │ │ └── helloworld.proto │ │ │ ├── http-client/ │ │ │ │ └── main.go │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ ├── server.crt │ │ │ └── server.key │ │ ├── grpc-compatible-bidirectional-stream/ │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── helloworld/ │ │ │ │ ├── helloworld.pb.go │ │ │ │ └── helloworld_grpc.pb.go │ │ │ ├── helloworld.proto │ │ │ ├── server/ │ │ │ │ └── main.go │ │ │ ├── server.crt │ │ │ └── server.key │ │ ├── hello-world/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── login/ │ │ │ ├── datamodels/ │ │ │ │ └── user.go │ │ │ ├── datasource/ │ │ │ │ └── users.go │ │ │ ├── main.go │ │ │ ├── repositories/ │ │ │ │ └── user_repository.go │ │ │ ├── services/ │ │ │ │ └── user_service.go │ │ │ └── web/ │ │ │ ├── controllers/ │ │ │ │ ├── user_controller.go │ │ │ │ └── users_controller.go │ │ │ ├── middleware/ │ │ │ │ └── basicauth.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ └── site.css │ │ │ ├── viewmodels/ │ │ │ │ └── README.md │ │ │ └── views/ │ │ │ ├── shared/ │ │ │ │ ├── error.html │ │ │ │ └── layout.html │ │ │ └── user/ │ │ │ ├── login.html │ │ │ ├── me.html │ │ │ └── register.html │ │ ├── login-mvc-single-responsibility/ │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ └── site.css │ │ │ ├── user/ │ │ │ │ ├── auth.go │ │ │ │ ├── controller.go │ │ │ │ ├── datasource.go │ │ │ │ └── model.go │ │ │ └── views/ │ │ │ ├── shared/ │ │ │ │ ├── error.html │ │ │ │ └── layout.html │ │ │ └── user/ │ │ │ ├── login.html │ │ │ ├── me.html │ │ │ ├── notfound.html │ │ │ └── register.html │ │ ├── middleware/ │ │ │ ├── main.go │ │ │ ├── per-method/ │ │ │ │ └── main.go │ │ │ └── without-ctx-next/ │ │ │ └── main.go │ │ ├── overview/ │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── controller/ │ │ │ │ └── greet_controller.go │ │ │ ├── database/ │ │ │ │ ├── database.go │ │ │ │ ├── mysql.go │ │ │ │ └── sqlite.go │ │ │ ├── docker-compose.yml │ │ │ ├── environment/ │ │ │ │ └── environment.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ ├── model/ │ │ │ │ ├── request.go │ │ │ │ └── response.go │ │ │ └── service/ │ │ │ └── greet_service.go │ │ ├── regexp/ │ │ │ └── main.go │ │ ├── repository/ │ │ │ ├── datamodels/ │ │ │ │ ├── README.md │ │ │ │ └── movie.go │ │ │ ├── datasource/ │ │ │ │ ├── README.md │ │ │ │ └── movies.go │ │ │ ├── main.go │ │ │ ├── models/ │ │ │ │ └── README.md │ │ │ ├── repositories/ │ │ │ │ ├── README.md │ │ │ │ └── movie_repository.go │ │ │ ├── services/ │ │ │ │ ├── README.md │ │ │ │ └── movie_service.go │ │ │ └── web/ │ │ │ ├── controllers/ │ │ │ │ ├── hello_controller.go │ │ │ │ └── movie_controller.go │ │ │ ├── middleware/ │ │ │ │ └── basicauth.go │ │ │ ├── viewmodels/ │ │ │ │ └── README.md │ │ │ └── views/ │ │ │ └── hello/ │ │ │ ├── index.html │ │ │ └── name.html │ │ ├── request-default-values/ │ │ │ └── main.go │ │ ├── session-controller/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── singleton/ │ │ │ └── main.go │ │ ├── versioned-controller/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── vuejs-todo-mvc/ │ │ │ ├── README.md │ │ │ └── src/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── todo/ │ │ │ │ ├── item.go │ │ │ │ └── service.go │ │ │ └── web/ │ │ │ ├── controllers/ │ │ │ │ └── todo_controller.go │ │ │ ├── main.go │ │ │ └── public/ │ │ │ ├── css/ │ │ │ │ └── index │ │ │ ├── index.html │ │ │ └── js/ │ │ │ ├── app.js │ │ │ └── lib/ │ │ │ └── .gitkeep │ │ ├── websocket/ │ │ │ ├── browser/ │ │ │ │ └── index.html │ │ │ └── main.go │ │ └── websocket-auth/ │ │ ├── auth.yml │ │ ├── browser/ │ │ │ └── index.html │ │ ├── main.go │ │ ├── user.go │ │ ├── user_provider.go │ │ └── views/ │ │ ├── layouts/ │ │ │ └── main.html │ │ ├── partials/ │ │ │ └── footer.html │ │ └── signin.html │ ├── pprof/ │ │ └── main.go │ ├── project/ │ │ ├── README.md │ │ ├── api/ │ │ │ ├── configuration.go │ │ │ ├── router.go │ │ │ ├── server.go │ │ │ └── users/ │ │ │ └── api.go │ │ ├── cmd/ │ │ │ ├── cmd.go │ │ │ └── help.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── pkg/ │ │ │ ├── database/ │ │ │ │ └── database.go │ │ │ └── http/ │ │ │ └── handlers/ │ │ │ └── cors.go │ │ ├── server.yml │ │ └── user/ │ │ ├── repository.go │ │ └── user.go │ ├── recover/ │ │ ├── main.go │ │ └── panic-and-custom-error-handler-with-compression/ │ │ └── main.go │ ├── request-body/ │ │ ├── form-query-headers-params-decoder/ │ │ │ └── main.go │ │ ├── read-body/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-custom-per-type/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-custom-via-unmarshaler/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-form/ │ │ │ ├── checkboxes/ │ │ │ │ ├── main.go │ │ │ │ └── templates/ │ │ │ │ └── form.html │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── form.html │ │ ├── read-headers/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-json/ │ │ │ └── main.go │ │ ├── read-json-stream/ │ │ │ └── main.go │ │ ├── read-json-struct-validation/ │ │ │ └── main.go │ │ ├── read-many/ │ │ │ └── main.go │ │ ├── read-msgpack/ │ │ │ └── main.go │ │ ├── read-params/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-query/ │ │ │ └── main.go │ │ ├── read-url/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── read-xml/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── read-yaml/ │ │ ├── main.go │ │ └── main_test.go │ ├── request-ratelimit/ │ │ ├── rate-middleware/ │ │ │ └── main.go │ │ └── ulule-limiter/ │ │ └── main.go │ ├── request-referrer/ │ │ └── main.go │ ├── response-writer/ │ │ ├── cache/ │ │ │ ├── client-side/ │ │ │ │ └── main.go │ │ │ └── simple/ │ │ │ └── main.go │ │ ├── content-negotiation/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── http2push/ │ │ │ ├── main.go │ │ │ ├── mycert.crt │ │ │ ├── mykey.key │ │ │ └── public/ │ │ │ └── main.js │ │ ├── json-third-party/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── main.go │ │ ├── protobuf/ │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ └── protos/ │ │ │ ├── hello.pb.go │ │ │ └── hello.proto │ │ ├── sse/ │ │ │ ├── main.go │ │ │ └── optional.sse.mini.js.html │ │ ├── sse-third-party/ │ │ │ └── main.go │ │ ├── sse-third-party-2/ │ │ │ ├── index.html │ │ │ └── main.go │ │ ├── stream-writer/ │ │ │ └── main.go │ │ └── write-rest/ │ │ └── main.go │ ├── routing/ │ │ ├── basic/ │ │ │ ├── .dockerignore │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── docker-compose.yml │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── conditional-chain/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── custom-context/ │ │ │ └── main.go │ │ ├── custom-router/ │ │ │ └── main.go │ │ ├── custom-wrapper/ │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── public/ │ │ │ ├── app.js │ │ │ ├── css/ │ │ │ │ └── main.css │ │ │ └── index.html │ │ ├── dynamic-path/ │ │ │ ├── at-username/ │ │ │ │ └── main.go │ │ │ ├── main.go │ │ │ ├── root-wildcard/ │ │ │ │ └── main.go │ │ │ └── same-pattern-different-func/ │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── use-global/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── hello-world/ │ │ │ └── main.go │ │ ├── http-errors/ │ │ │ ├── main.go │ │ │ └── reset-body/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── http-wire-errors/ │ │ │ ├── main.go │ │ │ └── service/ │ │ │ └── main.go │ │ ├── intelligence/ │ │ │ ├── main.go │ │ │ └── manual/ │ │ │ └── main.go │ │ ├── macros/ │ │ │ └── main.go │ │ ├── main.go │ │ ├── main_test.go │ │ ├── overview/ │ │ │ ├── main.go │ │ │ └── public/ │ │ │ └── assets/ │ │ │ └── css/ │ │ │ └── main.css │ │ ├── overview-2/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ └── user/ │ │ │ ├── create_verification.html │ │ │ └── profile.html │ │ ├── party-controller/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ └── pkg/ │ │ │ └── weatherapi/ │ │ │ ├── client.go │ │ │ └── response.go │ │ ├── remove-handler/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── remove-route/ │ │ │ └── main.go │ │ ├── reverse/ │ │ │ └── main.go │ │ ├── rewrite/ │ │ │ ├── hosts │ │ │ ├── main.go │ │ │ └── redirects.yml │ │ ├── route-handlers-execution-rules/ │ │ │ └── main.go │ │ ├── route-register-rule/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── route-state/ │ │ │ └── main.go │ │ ├── sitemap/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ ├── subdomains/ │ │ │ ├── http-errors-view/ │ │ │ │ ├── main.go │ │ │ │ ├── main_test.go │ │ │ │ └── views/ │ │ │ │ ├── error.html │ │ │ │ ├── index.html │ │ │ │ ├── layouts/ │ │ │ │ │ ├── layout.html │ │ │ │ │ └── test.layout.html │ │ │ │ └── partials/ │ │ │ │ ├── 404.html │ │ │ │ └── 500.html │ │ │ ├── multi/ │ │ │ │ ├── hosts │ │ │ │ └── main.go │ │ │ ├── redirect/ │ │ │ │ ├── hosts │ │ │ │ ├── main.go │ │ │ │ └── multi-instances/ │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── main.go │ │ │ │ ├── other/ │ │ │ │ │ └── server.go │ │ │ │ └── root/ │ │ │ │ └── server.go │ │ │ ├── single/ │ │ │ │ ├── hosts │ │ │ │ └── main.go │ │ │ ├── wildcard/ │ │ │ │ ├── hosts │ │ │ │ └── main.go │ │ │ └── www/ │ │ │ ├── hosts │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ └── www-method/ │ │ │ └── main.go │ │ ├── versioning/ │ │ │ ├── main.go │ │ │ ├── v1/ │ │ │ │ └── index.html │ │ │ ├── v2/ │ │ │ │ └── index.html │ │ │ └── v3/ │ │ │ └── index.html │ │ └── writing-a-middleware/ │ │ ├── globally/ │ │ │ └── main.go │ │ ├── per-route/ │ │ │ └── main.go │ │ ├── share-funcs/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── share-services/ │ │ ├── main.go │ │ └── main_test.go │ ├── sessions/ │ │ ├── basic/ │ │ │ └── main.go │ │ ├── database/ │ │ │ ├── badger/ │ │ │ │ └── main.go │ │ │ ├── boltdb/ │ │ │ │ └── main.go │ │ │ └── redis/ │ │ │ ├── Dockerfile │ │ │ ├── docker-compose.yml │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── main.go │ │ ├── flash-messages/ │ │ │ └── main.go │ │ ├── overview/ │ │ │ ├── example/ │ │ │ │ └── example.go │ │ │ └── main.go │ │ ├── securecookie/ │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── viewdata/ │ │ ├── main.go │ │ └── views/ │ │ └── index.html │ ├── testing/ │ │ ├── ginkgotest/ │ │ │ ├── ginkgotest_suite_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── main.go │ │ │ └── main_test.go │ │ └── httptest/ │ │ ├── main.go │ │ └── main_test.go │ ├── url-shortener/ │ │ ├── README.md │ │ ├── factory.go │ │ ├── main.go │ │ ├── main_test.go │ │ ├── resources/ │ │ │ └── css/ │ │ │ └── style.css │ │ ├── store.go │ │ └── templates/ │ │ └── index.html │ ├── view/ │ │ ├── context-view-data/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── layouts/ │ │ │ └── layout.html │ │ ├── context-view-engine/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── admin/ │ │ │ │ ├── index.html │ │ │ │ └── layouts/ │ │ │ │ └── main.html │ │ │ ├── on-fly/ │ │ │ │ └── index.html │ │ │ └── public/ │ │ │ ├── 500.html │ │ │ ├── index.html │ │ │ ├── layouts/ │ │ │ │ ├── error.html │ │ │ │ └── main.html │ │ │ └── partials/ │ │ │ └── footer.html │ │ ├── embedding-templates-into-app/ │ │ │ ├── embedded/ │ │ │ │ └── templates/ │ │ │ │ ├── layouts/ │ │ │ │ │ ├── layout.html │ │ │ │ │ └── mylayout.html │ │ │ │ ├── page1.html │ │ │ │ └── partials/ │ │ │ │ └── page1_partial1.html │ │ │ └── main.go │ │ ├── embedding-templates-into-app-bindata/ │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── layouts/ │ │ │ │ ├── layout.html │ │ │ │ └── mylayout.html │ │ │ ├── page1.html │ │ │ └── partials/ │ │ │ └── page1_partial1.html │ │ ├── fallback/ │ │ │ ├── main.go │ │ │ └── view/ │ │ │ └── fallback.html │ │ ├── herotemplate/ │ │ │ ├── README.md │ │ │ ├── app.go │ │ │ └── template/ │ │ │ ├── index.html │ │ │ ├── index.html.go │ │ │ ├── user.html │ │ │ ├── user.html.go │ │ │ ├── userlist.html │ │ │ ├── userlist.html.go │ │ │ ├── userlistwriter.html │ │ │ └── userlistwriter.html.go │ │ ├── layout/ │ │ │ ├── ace/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.ace │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.ace │ │ │ │ └── partials/ │ │ │ │ └── footer.ace │ │ │ ├── blocks/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.html │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.html │ │ │ │ └── partials/ │ │ │ │ └── footer.html │ │ │ ├── django/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.html │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.html │ │ │ │ └── partials/ │ │ │ │ └── footer.html │ │ │ ├── handlebars/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.html │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.html │ │ │ │ └── partials/ │ │ │ │ └── footer.html │ │ │ ├── html/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.html │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.html │ │ │ │ └── partials/ │ │ │ │ └── footer.html │ │ │ ├── jet/ │ │ │ │ ├── main.go │ │ │ │ └── views/ │ │ │ │ ├── index.jet │ │ │ │ ├── layouts/ │ │ │ │ │ └── main.jet │ │ │ │ └── partials/ │ │ │ │ └── footer.jet │ │ │ └── pug/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── index.pug │ │ │ ├── layouts/ │ │ │ │ └── main.pug │ │ │ └── partials/ │ │ │ └── footer.pug │ │ ├── overview/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── example.html │ │ │ ├── functions.html │ │ │ └── hi.html │ │ ├── parse-template/ │ │ │ ├── django/ │ │ │ │ └── main.go │ │ │ ├── handlebars/ │ │ │ │ └── main.go │ │ │ ├── jet/ │ │ │ │ └── main.go │ │ │ ├── main.go │ │ │ └── views/ │ │ │ └── layouts/ │ │ │ └── main.html │ │ ├── quicktemplate/ │ │ │ ├── README.md │ │ │ ├── controllers/ │ │ │ │ ├── execute_template.go │ │ │ │ ├── hello.go │ │ │ │ └── index.go │ │ │ ├── main.go │ │ │ ├── main_test.go │ │ │ ├── models/ │ │ │ │ └── .gitkeep │ │ │ └── templates/ │ │ │ ├── base.qtpl │ │ │ ├── base.qtpl.go │ │ │ ├── hello.qtpl │ │ │ ├── hello.qtpl.go │ │ │ ├── index.qtpl │ │ │ └── index.qtpl.go │ │ ├── templ/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── hello.templ │ │ │ ├── hello_templ.go │ │ │ └── main.go │ │ ├── template_ace_0/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── index.ace │ │ │ ├── layouts/ │ │ │ │ └── main.ace │ │ │ └── partials/ │ │ │ ├── footer.ace │ │ │ └── header.ace │ │ ├── template_blocks_0/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── 500.html │ │ │ ├── index.html │ │ │ ├── layouts/ │ │ │ │ ├── error.html │ │ │ │ └── main.html │ │ │ └── partials/ │ │ │ └── footer.html │ │ ├── template_blocks_1_embedded/ │ │ │ ├── bindata.go │ │ │ └── main.go │ │ ├── template_blocks_2/ │ │ │ ├── main.go │ │ │ └── src/ │ │ │ └── public/ │ │ │ └── html/ │ │ │ ├── files/ │ │ │ │ └── list.html │ │ │ ├── layouts/ │ │ │ │ ├── main.html │ │ │ │ └── secondary.html │ │ │ └── menu/ │ │ │ └── menu.html │ │ ├── template_django_0/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── hi.html │ │ ├── template_django_1/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ └── page.html │ │ ├── template_handlebars_0/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── example.html │ │ ├── template_html_0/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── hi.html │ │ ├── template_html_1/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── layout.html │ │ │ └── mypage.html │ │ ├── template_html_2/ │ │ │ ├── README.md │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── layouts/ │ │ │ │ ├── layout.html │ │ │ │ └── mylayout.html │ │ │ ├── page1.html │ │ │ └── partials/ │ │ │ └── page1_partial1.html │ │ ├── template_html_3/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── page.html │ │ ├── template_html_4/ │ │ │ ├── hosts │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── page.html │ │ ├── template_html_5/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── about.html │ │ │ ├── home.html │ │ │ ├── layout.html │ │ │ └── user/ │ │ │ └── index.html │ │ ├── template_jet_0/ │ │ │ ├── README.md │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── layouts/ │ │ │ │ └── application.jet │ │ │ └── todos/ │ │ │ ├── index.jet │ │ │ └── show.jet │ │ ├── template_jet_1_embedded/ │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── views/ │ │ │ ├── includes/ │ │ │ │ ├── _partial.jet │ │ │ │ └── blocks.jet │ │ │ ├── index.jet │ │ │ └── layouts/ │ │ │ └── application.jet │ │ ├── template_jet_2/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ └── page.jet │ │ ├── template_jet_3/ │ │ │ ├── main.go │ │ │ └── views/ │ │ │ └── index.jet │ │ ├── template_pug_0/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── index.pug │ │ ├── template_pug_1/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── footer.pug │ │ │ ├── header.pug │ │ │ └── index.pug │ │ ├── template_pug_2_embedded/ │ │ │ ├── bindata.go │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── index.pug │ │ │ └── layout.pug │ │ └── write-to/ │ │ ├── main.go │ │ └── views/ │ │ ├── email/ │ │ │ └── simple.html │ │ └── shared/ │ │ └── email.html │ ├── webassembly/ │ │ ├── client/ │ │ │ ├── go-wasm-runtime.js │ │ │ ├── hello.html │ │ │ ├── hello_go116.go │ │ │ └── main.js │ │ └── main.go │ └── websocket/ │ ├── README.md │ ├── basic/ │ │ ├── README.md │ │ ├── browser/ │ │ │ └── index.html │ │ ├── browserify/ │ │ │ ├── app.js │ │ │ ├── bundle.js │ │ │ ├── client.html │ │ │ └── package.json │ │ ├── go-client/ │ │ │ └── client.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── nodejs-client/ │ │ │ ├── client.js │ │ │ └── package.json │ │ └── server.go │ ├── gorilla-filewatch/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── testfile.txt │ │ └── views/ │ │ └── home.html │ ├── native-messages/ │ │ ├── main.go │ │ ├── static/ │ │ │ └── js/ │ │ │ └── chat.js │ │ └── templates/ │ │ └── client.html │ ├── online-visitors/ │ │ ├── main.go │ │ ├── static/ │ │ │ └── assets/ │ │ │ └── js/ │ │ │ └── visitors.js │ │ └── templates/ │ │ ├── index.html │ │ └── other.html │ ├── secure/ │ │ └── README.md │ └── socketio/ │ ├── asset/ │ │ └── index.html │ ├── go.mod │ ├── go.sum │ └── main.go ├── _proposals/ │ ├── route_builder.md │ └── xerrors_party.md ├── aliases.go ├── apps/ │ ├── README.md │ ├── apps.go │ ├── switch.go │ ├── switch_hosts.go │ ├── switch_hosts_test.go │ ├── switch_options.go │ ├── switch_options_test.go │ ├── switch_scheme.go │ └── switch_test.go ├── auth/ │ ├── auth.go │ ├── configuration.go │ ├── provider.go │ └── user.go ├── cache/ │ ├── browser.go │ ├── browser_test.go │ ├── cache.go │ ├── cache_test.go │ ├── cfg/ │ │ └── cfg.go │ ├── client/ │ │ ├── client.go │ │ ├── handler.go │ │ ├── rule/ │ │ │ ├── chained.go │ │ │ ├── conditional.go │ │ │ ├── header.go │ │ │ ├── not_satisfied.go │ │ │ ├── rule.go │ │ │ ├── satisfied.go │ │ │ └── validator.go │ │ └── ruleset.go │ ├── entry/ │ │ ├── entry.go │ │ ├── pool.go │ │ ├── response.go │ │ └── store.go │ ├── ruleset/ │ │ └── ruleset.go │ └── uri/ │ └── uribuilder.go ├── cli.go ├── configuration.go ├── configuration_test.go ├── context/ │ ├── accept_header.go │ ├── application.go │ ├── compress.go │ ├── configuration.go │ ├── context.go │ ├── context_func.go │ ├── context_go118.go │ ├── context_user.go │ ├── counter.go │ ├── fs.go │ ├── handler.go │ ├── i18n.go │ ├── pool.go │ ├── problem.go │ ├── request_params.go │ ├── response_recorder.go │ ├── response_writer.go │ ├── route.go │ ├── status.go │ ├── strconv.go │ └── view.go ├── context_wrapper.go ├── core/ │ ├── errgroup/ │ │ ├── errgroup.go │ │ └── errgroup_test.go │ ├── handlerconv/ │ │ ├── from_std.go │ │ └── from_std_test.go │ ├── host/ │ │ ├── interrupt.go │ │ ├── proxy.go │ │ ├── proxy_test.go │ │ ├── supervisor.go │ │ ├── supervisor_task_example_test.go │ │ ├── supervisor_test.go │ │ ├── task.go │ │ └── waiter.go │ ├── memstore/ │ │ ├── gob.go │ │ ├── lifetime.go │ │ ├── memstore.go │ │ └── memstore_test.go │ ├── netutil/ │ │ ├── addr.go │ │ ├── addr_test.go │ │ ├── client.go │ │ ├── ip.go │ │ ├── ip_test.go │ │ ├── server.go │ │ ├── tcp.go │ │ ├── tcp_soreuse_control_unix.go │ │ ├── tcp_soreuse_control_wasm.go │ │ └── tcp_soreuse_control_windows.go │ └── router/ │ ├── TestUseRouterParentDisallow_fuzz_test.go │ ├── api_builder.go │ ├── api_builder_benchmark_test.go │ ├── api_container.go │ ├── fs.go │ ├── handler.go │ ├── handler_debug.go │ ├── handler_execution_rules.go │ ├── handler_execution_rules_test.go │ ├── mime.go │ ├── party.go │ ├── path.go │ ├── path_test.go │ ├── route.go │ ├── route_register_rule_test.go │ ├── route_test.go │ ├── router.go │ ├── router_handlers_order_test.go │ ├── router_subdomain_redirect.go │ ├── router_test.go │ ├── router_wildcard_root_test.go │ ├── router_wrapper.go │ ├── router_wrapper_test.go │ ├── status_test.go │ └── trie.go ├── doc.go ├── go.mod ├── go.sum ├── hero/ │ ├── binding.go │ ├── binding_test.go │ ├── container.go │ ├── container_test.go │ ├── dependency.go │ ├── dependency_source.go │ ├── dependency_test.go │ ├── func_result.go │ ├── func_result_test.go │ ├── handler.go │ ├── handler_test.go │ ├── param_test.go │ ├── reflect.go │ ├── reflect_test.go │ ├── struct.go │ └── struct_test.go ├── httptest/ │ ├── aliases.go │ ├── httptest.go │ ├── netutils.go │ ├── server.go │ └── status.go ├── i18n/ │ ├── i18n.go │ ├── internal/ │ │ ├── aliases.go │ │ ├── catalog.go │ │ ├── locale.go │ │ ├── message.go │ │ ├── plural.go │ │ ├── template.go │ │ └── var.go │ └── loader.go ├── iris.go ├── iris_guide.go ├── macro/ │ ├── handler/ │ │ ├── handler.go │ │ └── handler_test.go │ ├── interpreter/ │ │ ├── ast/ │ │ │ └── ast.go │ │ ├── lexer/ │ │ │ ├── lexer.go │ │ │ └── lexer_test.go │ │ ├── parser/ │ │ │ ├── parser.go │ │ │ └── parser_test.go │ │ └── token/ │ │ └── token.go │ ├── macro.go │ ├── macro_test.go │ ├── macros.go │ └── template.go ├── middleware/ │ ├── README.md │ ├── accesslog/ │ │ ├── accesslog.go │ │ ├── accesslog_test.go │ │ ├── broker.go │ │ ├── csv.go │ │ ├── csv_test.go │ │ ├── json.go │ │ ├── json_easy.go │ │ ├── log.go │ │ └── template.go │ ├── basicauth/ │ │ ├── basicauth.go │ │ ├── basicauth_test.go │ │ ├── error.go │ │ ├── header.go │ │ ├── header_test.go │ │ ├── user.go │ │ └── user_test.go │ ├── cors/ │ │ └── cors.go │ ├── grpc/ │ │ └── grpc.go │ ├── hcaptcha/ │ │ ├── ARTICLE.md │ │ └── hcaptcha.go │ ├── jwt/ │ │ ├── ARTICLE.md │ │ ├── aliases.go │ │ ├── blocklist/ │ │ │ └── redis/ │ │ │ └── blocklist.go │ │ ├── blocklist.go │ │ ├── extractor.go │ │ ├── jwt.go │ │ ├── jwt_test.go │ │ ├── signer.go │ │ └── verifier.go │ ├── logger/ │ │ ├── config.go │ │ └── logger.go │ ├── methodoverride/ │ │ ├── methodoverride.go │ │ └── methodoverride_test.go │ ├── modrevision/ │ │ └── modrevision.go │ ├── monitor/ │ │ ├── expvar_uint64.go │ │ ├── monitor.go │ │ ├── stats.go │ │ └── view.go │ ├── pprof/ │ │ └── pprof.go │ ├── rate/ │ │ └── rate.go │ ├── recaptcha/ │ │ └── recaptcha.go │ ├── recover/ │ │ └── recover.go │ ├── requestid/ │ │ ├── requestid.go │ │ └── requestid_test.go │ └── rewrite/ │ ├── rewrite.go │ └── rewrite_test.go ├── mvc/ │ ├── aliases.go │ ├── controller.go │ ├── controller_handle_test.go │ ├── controller_method_parser.go │ ├── controller_method_result_test.go │ ├── controller_overlap_test.go │ ├── controller_test.go │ ├── grpc.go │ ├── mvc.go │ ├── reflect.go │ └── versioning.go ├── sessions/ │ ├── config.go │ ├── database.go │ ├── provider.go │ ├── session.go │ ├── sessiondb/ │ │ ├── badger/ │ │ │ └── database.go │ │ ├── boltdb/ │ │ │ └── database.go │ │ └── redis/ │ │ ├── database.go │ │ ├── driver.go │ │ └── driver_goredis.go │ ├── sessions.go │ ├── sessions_test.go │ └── transcoding.go ├── versioning/ │ ├── deprecation.go │ ├── deprecation_test.go │ ├── group.go │ ├── group_test.go │ ├── version.go │ └── version_test.go ├── view/ │ ├── README.md │ ├── ace.go │ ├── blocks.go │ ├── django.go │ ├── fs.go │ ├── handlebars.go │ ├── html.go │ ├── jet.go │ ├── pug.go │ └── view.go ├── websocket/ │ ├── aliases.go │ └── websocket.go └── x/ ├── client/ │ ├── client.go │ ├── client_test.go │ ├── error.go │ ├── handler_transport.go │ ├── option.go │ └── request_handler.go ├── errors/ │ ├── aliases.go │ ├── context_error_handler.go │ ├── errors.go │ ├── handlers.go │ ├── path_parameter_type_error_handler.go │ ├── validation/ │ │ ├── error.go │ │ ├── number.go │ │ ├── slice.go │ │ └── string.go │ └── validation_error.go ├── jsonx/ │ ├── day_time.go │ ├── day_time_test.go │ ├── duration.go │ ├── exampler.go │ ├── iso8601.go │ ├── iso8601_test.go │ ├── jsonx.go │ ├── kitchen_time.go │ ├── kitchen_time_test.go │ ├── season.go │ ├── simple_date.go │ ├── simple_date_test.go │ └── time_notation.go ├── mathx/ │ └── round.go ├── pagination/ │ └── pagination.go ├── reflex/ │ ├── error.go │ ├── func.go │ ├── reflex.go │ ├── struct.go │ ├── types.go │ └── zero.go ├── sqlx/ │ ├── sqlx.go │ ├── sqlx_test.go │ ├── struct_row.go │ └── util.go └── timex/ ├── weekday.go └── weekday_test.go