gitextract_i3d5wkwv/ ├── .codecov.yml ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── labels.json │ └── workflows/ │ ├── cmd-tests.yml │ ├── invalid_question.yml │ ├── labeler.yml │ ├── pr-check.yml │ ├── unit-tests.yml │ └── vulncheck.yml ├── .gitignore ├── .golangci.yaml ├── .licenserc.yaml ├── .typos.toml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── NOTICE ├── README.md ├── README_cn.md ├── ROADMAP.md ├── cmd/ │ └── hz/ │ ├── app/ │ │ └── app.go │ ├── config/ │ │ ├── argument.go │ │ └── cmd.go │ ├── doc.go │ ├── generator/ │ │ ├── client.go │ │ ├── custom_files.go │ │ ├── file.go │ │ ├── handler.go │ │ ├── layout.go │ │ ├── layout_tpl.go │ │ ├── model/ │ │ │ ├── define.go │ │ │ ├── expr.go │ │ │ ├── golang/ │ │ │ │ ├── constant.go │ │ │ │ ├── enum.go │ │ │ │ ├── file.go │ │ │ │ ├── function.go │ │ │ │ ├── init.go │ │ │ │ ├── oneof.go │ │ │ │ ├── struct.go │ │ │ │ ├── typedef.go │ │ │ │ └── variable.go │ │ │ └── model.go │ │ ├── model.go │ │ ├── model_test.go │ │ ├── package.go │ │ ├── package_tpl.go │ │ ├── router.go │ │ ├── router_test.go │ │ ├── template.go │ │ └── template_funcs.go │ ├── go.mod │ ├── go.sum │ ├── main.go │ ├── meta/ │ │ ├── const.go │ │ ├── manifest.go │ │ └── manifest_test.go │ ├── protobuf/ │ │ ├── api/ │ │ │ ├── api.pb.go │ │ │ └── api.proto │ │ ├── ast.go │ │ ├── plugin.go │ │ ├── plugin_stubs.go │ │ ├── plugin_test.go │ │ ├── resolver.go │ │ ├── tag_test.go │ │ ├── tags.go │ │ └── test_data/ │ │ ├── protobuf_tag_test.out │ │ └── test_tag.proto │ ├── test_hz_unix.sh │ ├── test_hz_windows.sh │ ├── testdata/ │ │ ├── protobuf2/ │ │ │ ├── api.proto │ │ │ ├── other/ │ │ │ │ ├── other.proto │ │ │ │ └── other_base.proto │ │ │ └── psm/ │ │ │ ├── base.proto │ │ │ └── psm.proto │ │ ├── protobuf3/ │ │ │ ├── api.proto │ │ │ ├── other/ │ │ │ │ ├── other.proto │ │ │ │ └── other_base.proto │ │ │ └── psm/ │ │ │ ├── base.proto │ │ │ └── psm.proto │ │ └── thrift/ │ │ ├── common.thrift │ │ ├── data/ │ │ │ ├── basic_data.thrift │ │ │ └── data.thrift │ │ └── psm.thrift │ ├── thrift/ │ │ ├── ast.go │ │ ├── plugin.go │ │ ├── plugin_test.go │ │ ├── resolver.go │ │ ├── tag_test.go │ │ ├── tags.go │ │ ├── test_data/ │ │ │ ├── test_tag.thrift │ │ │ └── thrift_tag_test.out │ │ └── thriftgo_util.go │ └── util/ │ ├── ast.go │ ├── ast_test.go │ ├── data.go │ ├── data_test.go │ ├── env.go │ ├── fs.go │ ├── logs/ │ │ ├── api.go │ │ └── std.go │ ├── string.go │ ├── tool_install.go │ └── tool_install_test.go ├── examples/ │ ├── html_rendering/ │ │ ├── index.tmpl │ │ ├── main.go │ │ └── template.html │ └── standard/ │ └── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── bytesconv/ │ │ ├── bytesconv.go │ │ ├── bytesconv_32.go │ │ ├── bytesconv_32_test.go │ │ ├── bytesconv_64.go │ │ ├── bytesconv_64_test.go │ │ ├── bytesconv_table.go │ │ ├── bytesconv_table_gen.go │ │ ├── bytesconv_test.go │ │ ├── bytesconv_timing_test.go │ │ ├── doc.go │ │ └── errors.go │ ├── bytestr/ │ │ └── bytes.go │ ├── nocopy/ │ │ └── nocopy.go │ ├── stats/ │ │ ├── stats_util.go │ │ ├── stats_util_test.go │ │ ├── tracer.go │ │ └── tracer_test.go │ ├── tagexpr/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example_test.go │ │ ├── expr.go │ │ ├── expr_test.go │ │ ├── handler.go │ │ ├── selector.go │ │ ├── selector_test.go │ │ ├── spec_func.go │ │ ├── spec_func_test.go │ │ ├── spec_operand.go │ │ ├── spec_operator.go │ │ ├── spec_range.go │ │ ├── spec_range_test.go │ │ ├── spec_selector.go │ │ ├── spec_test.go │ │ ├── tagexpr.go │ │ ├── tagexpr_test.go │ │ ├── tagparser.go │ │ ├── tagparser_test.go │ │ ├── utils.go │ │ └── validator/ │ │ ├── README.md │ │ ├── default.go │ │ ├── example_test.go │ │ ├── func.go │ │ ├── validator.go │ │ └── validator_test.go │ ├── test/ │ │ └── mock/ │ │ └── binder/ │ │ ├── binder.go │ │ └── binder_test.go │ └── testutils/ │ ├── testutils.go │ └── testutils_test.go ├── licenses/ │ ├── LICENSE-echo.txt │ ├── LICENSE-fasthttp.txt │ ├── LICENSE-fsnotify │ ├── LICENSE-gin.txt │ ├── LICENSE-go-version.txt │ ├── LICENSE-protobuf.txt │ ├── LICENSE-protoreflect.txt │ ├── LICENSE-sprig.txt │ └── LICENSE-yaml.txt ├── pkg/ │ ├── app/ │ │ ├── client/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── client_unix_test.go │ │ │ ├── client_windows_test.go │ │ │ ├── discovery/ │ │ │ │ ├── discovery.go │ │ │ │ └── discovery_test.go │ │ │ ├── loadbalance/ │ │ │ │ ├── lbcache.go │ │ │ │ ├── lbcache_test.go │ │ │ │ ├── loadbalance.go │ │ │ │ ├── weight_random.go │ │ │ │ └── weight_random_test.go │ │ │ ├── middleware.go │ │ │ ├── middleware_test.go │ │ │ ├── option.go │ │ │ ├── option_test.go │ │ │ └── retry/ │ │ │ ├── option.go │ │ │ ├── retry.go │ │ │ └── retry_test.go │ │ ├── context.go │ │ ├── context_test.go │ │ ├── fs.go │ │ ├── fs_test.go │ │ ├── middlewares/ │ │ │ ├── client/ │ │ │ │ └── sd/ │ │ │ │ ├── discovery.go │ │ │ │ ├── discovery_test.go │ │ │ │ ├── options.go │ │ │ │ └── options_test.go │ │ │ └── server/ │ │ │ ├── basic_auth/ │ │ │ │ ├── basic_auth.go │ │ │ │ ├── basic_auth_test.go │ │ │ │ └── doc.go │ │ │ └── recovery/ │ │ │ ├── option.go │ │ │ ├── option_test.go │ │ │ ├── recovery.go │ │ │ └── recovery_test.go │ │ └── server/ │ │ ├── binding/ │ │ │ ├── binder.go │ │ │ ├── binder_test.go │ │ │ ├── config.go │ │ │ ├── default.go │ │ │ ├── internal/ │ │ │ │ └── decoder/ │ │ │ │ ├── base_type_decoder.go │ │ │ │ ├── customized_type_decoder.go │ │ │ │ ├── decoder.go │ │ │ │ ├── getter.go │ │ │ │ ├── gjson_required.go │ │ │ │ ├── map_type_decoder.go │ │ │ │ ├── multipart_file_decoder.go │ │ │ │ ├── reflect.go │ │ │ │ ├── slice_getter.go │ │ │ │ ├── slice_type_decoder.go │ │ │ │ ├── sonic_required.go │ │ │ │ ├── struct_type_decoder.go │ │ │ │ ├── tag.go │ │ │ │ ├── text_decoder.go │ │ │ │ ├── util.go │ │ │ │ └── util_test.go │ │ │ ├── reflect.go │ │ │ ├── reflect_internal_test.go │ │ │ ├── reflect_test.go │ │ │ ├── tagexpr_bind_test.go │ │ │ ├── testdata/ │ │ │ │ ├── hello.pb.go │ │ │ │ └── hello.proto │ │ │ ├── validator.go │ │ │ └── validator_test.go │ │ ├── hertz.go │ │ ├── hertz_test.go │ │ ├── hertz_unix_test.go │ │ ├── mocks_test.go │ │ ├── option.go │ │ ├── option_test.go │ │ ├── registry/ │ │ │ ├── registry.go │ │ │ └── registry_test.go │ │ ├── render/ │ │ │ ├── data.go │ │ │ ├── doc.go │ │ │ ├── html.go │ │ │ ├── html_test.go │ │ │ ├── json.go │ │ │ ├── json_test.go │ │ │ ├── protobuf.go │ │ │ ├── render.go │ │ │ ├── render_test.go │ │ │ ├── text.go │ │ │ └── xml.go │ │ └── server_bench_test.go │ ├── common/ │ │ ├── adaptor/ │ │ │ ├── handler.go │ │ │ ├── handler_test.go │ │ │ ├── request.go │ │ │ ├── request_test.go │ │ │ ├── response.go │ │ │ ├── utils.go │ │ │ └── utils_test.go │ │ ├── bytebufferpool/ │ │ │ ├── bytebuffer.go │ │ │ ├── bytebuffer_test.go │ │ │ ├── doc.go │ │ │ ├── pool.go │ │ │ └── pool_test.go │ │ ├── compress/ │ │ │ ├── compress.go │ │ │ ├── compress_test.go │ │ │ └── doc.go │ │ ├── config/ │ │ │ ├── client_option.go │ │ │ ├── client_option_test.go │ │ │ ├── option.go │ │ │ ├── option_test.go │ │ │ ├── request_option.go │ │ │ └── request_option_test.go │ │ ├── errors/ │ │ │ ├── errors.go │ │ │ └── errors_test.go │ │ ├── hlog/ │ │ │ ├── consts.go │ │ │ ├── default.go │ │ │ ├── default_test.go │ │ │ ├── hlog.go │ │ │ ├── hlog_test.go │ │ │ ├── log.go │ │ │ ├── system.go │ │ │ └── system_test.go │ │ ├── json/ │ │ │ ├── sonic.go │ │ │ └── std.go │ │ ├── stackless/ │ │ │ ├── doc.go │ │ │ ├── func.go │ │ │ ├── func_test.go │ │ │ ├── func_timing_test.go │ │ │ ├── writer.go │ │ │ └── writer_test.go │ │ ├── test/ │ │ │ ├── assert/ │ │ │ │ ├── assert.go │ │ │ │ └── assert_test.go │ │ │ └── mock/ │ │ │ ├── body_data.go │ │ │ ├── body_data_test.go │ │ │ ├── network.go │ │ │ ├── network_test.go │ │ │ ├── reader.go │ │ │ ├── reader_test.go │ │ │ ├── writer.go │ │ │ └── writer_test.go │ │ ├── testdata/ │ │ │ ├── conf/ │ │ │ │ └── p_s_m.yaml │ │ │ ├── proto/ │ │ │ │ ├── test.pb.go │ │ │ │ └── test.proto │ │ │ ├── template/ │ │ │ │ ├── htmltemplate.html │ │ │ │ └── index.tmpl │ │ │ └── test.txt │ │ ├── timer/ │ │ │ ├── doc.go │ │ │ ├── timer.go │ │ │ └── timer_test.go │ │ ├── tracer/ │ │ │ ├── stats/ │ │ │ │ ├── event.go │ │ │ │ ├── event_test.go │ │ │ │ └── status.go │ │ │ ├── traceinfo/ │ │ │ │ ├── httpstats.go │ │ │ │ ├── interface.go │ │ │ │ └── traceinfo.go │ │ │ └── tracer.go │ │ ├── ut/ │ │ │ ├── context.go │ │ │ ├── context_test.go │ │ │ ├── request.go │ │ │ ├── request_test.go │ │ │ ├── response.go │ │ │ └── response_test.go │ │ └── utils/ │ │ ├── bufpool.go │ │ ├── chunk.go │ │ ├── chunk_test.go │ │ ├── env.go │ │ ├── ioutil.go │ │ ├── ioutil_test.go │ │ ├── netaddr.go │ │ ├── netaddr_test.go │ │ ├── network.go │ │ ├── network_test.go │ │ ├── path.go │ │ ├── path_test.go │ │ ├── utils.go │ │ └── utils_test.go │ ├── network/ │ │ ├── connection.go │ │ ├── dialer/ │ │ │ ├── dialer.go │ │ │ ├── dialer_test.go │ │ │ └── netpoll.go │ │ ├── dialer.go │ │ ├── netpoll/ │ │ │ ├── connection.go │ │ │ ├── connection_test.go │ │ │ ├── dial.go │ │ │ ├── dial_test.go │ │ │ ├── transport.go │ │ │ └── transport_test.go │ │ ├── standard/ │ │ │ ├── connection.go │ │ │ ├── connection_test.go │ │ │ ├── dial.go │ │ │ ├── dial_test.go │ │ │ ├── transport.go │ │ │ ├── transport_test.go │ │ │ └── unix_test.go │ │ ├── transport.go │ │ ├── utils.go │ │ ├── utils_test.go │ │ ├── version.go │ │ ├── writer.go │ │ └── writer_test.go │ ├── protocol/ │ │ ├── args.go │ │ ├── args_test.go │ │ ├── client/ │ │ │ ├── client.go │ │ │ └── client_test.go │ │ ├── consts/ │ │ │ ├── default.go │ │ │ ├── fs.go │ │ │ ├── headers.go │ │ │ ├── http2.go │ │ │ ├── methods.go │ │ │ └── status.go │ │ ├── cookie.go │ │ ├── cookie_test.go │ │ ├── doc.go │ │ ├── header.go │ │ ├── header_test.go │ │ ├── header_timing_test.go │ │ ├── http1/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── client_unix_test.go │ │ │ ├── ext/ │ │ │ │ ├── common.go │ │ │ │ ├── common_test.go │ │ │ │ ├── error.go │ │ │ │ ├── headerscanner.go │ │ │ │ ├── headerscanner_test.go │ │ │ │ ├── stream.go │ │ │ │ └── stream_test.go │ │ │ ├── factory/ │ │ │ │ ├── client.go │ │ │ │ └── server.go │ │ │ ├── proxy/ │ │ │ │ └── proxy.go │ │ │ ├── req/ │ │ │ │ ├── header.go │ │ │ │ ├── header_test.go │ │ │ │ ├── request.go │ │ │ │ └── request_test.go │ │ │ ├── resp/ │ │ │ │ ├── header.go │ │ │ │ ├── header_test.go │ │ │ │ ├── response.go │ │ │ │ ├── response_test.go │ │ │ │ ├── writer.go │ │ │ │ └── writer_test.go │ │ │ ├── server.go │ │ │ ├── server_test.go │ │ │ └── server_timing_test.go │ │ ├── multipart.go │ │ ├── multipart_test.go │ │ ├── request.go │ │ ├── request_test.go │ │ ├── response.go │ │ ├── response_test.go │ │ ├── server.go │ │ ├── sse/ │ │ │ ├── event.go │ │ │ ├── event_test.go │ │ │ ├── example_test.go │ │ │ ├── reader.go │ │ │ ├── reader_test.go │ │ │ ├── request.go │ │ │ ├── request_test.go │ │ │ ├── utils.go │ │ │ ├── utils_test.go │ │ │ ├── writer.go │ │ │ └── writer_test.go │ │ ├── suite/ │ │ │ ├── client.go │ │ │ └── server.go │ │ ├── trailer.go │ │ ├── trailer_test.go │ │ ├── uri.go │ │ ├── uri_test.go │ │ ├── uri_timing_test.go │ │ ├── uri_unix.go │ │ ├── uri_unix_test.go │ │ ├── uri_windows.go │ │ └── uri_windows_test.go │ └── route/ │ ├── consts/ │ │ └── const.go │ ├── engine.go │ ├── engine_test.go │ ├── netpoll.go │ ├── param/ │ │ └── param.go │ ├── routergroup.go │ ├── routergroup_test.go │ ├── routes_test.go │ ├── routes_timing_test.go │ ├── tree.go │ └── tree_test.go ├── scripts/ │ ├── .utils/ │ │ ├── check_go_mod.sh │ │ ├── check_version.sh │ │ └── funcs.sh │ ├── release-hotfix.sh │ └── release.sh └── version.go