// Code generated by protoc-gen-twirp v8.1.3, DO NOT EDIT.
// source: livekit_sip.proto

package livekit

import context "context"
import fmt "fmt"
import http "net/http"
import io "io"
import json "encoding/json"
import strconv "strconv"
import strings "strings"

import protojson "google.golang.org/protobuf/encoding/protojson"
import proto "google.golang.org/protobuf/proto"
import twirp "github.com/twitchtv/twirp"
import ctxsetters "github.com/twitchtv/twirp/ctxsetters"

import google_protobuf2 "google.golang.org/protobuf/types/known/emptypb"

// Version compatibility assertion.
// If the constant is not defined in the package, that likely means
// the package needs to be updated to work with this generated code.
// See https://twitchtv.github.io/twirp/docs/version_matrix.html
const _ = twirp.TwirpPackageMinVersion_8_1_0

// =============
// SIP Interface
// =============

type SIP interface {
	ListSIPTrunk(context.Context, *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error)

	CreateSIPInboundTrunk(context.Context, *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error)

	CreateSIPOutboundTrunk(context.Context, *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error)

	GetSIPInboundTrunk(context.Context, *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error)

	GetSIPOutboundTrunk(context.Context, *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error)

	ListSIPInboundTrunk(context.Context, *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error)

	ListSIPOutboundTrunk(context.Context, *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error)

	DeleteSIPTrunk(context.Context, *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error)

	CreateSIPDispatchRule(context.Context, *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error)

	ListSIPDispatchRule(context.Context, *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error)

	DeleteSIPDispatchRule(context.Context, *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error)

	CreateSIPParticipant(context.Context, *CreateSIPParticipantRequest) (*SIPParticipantInfo, error)

	TransferSIPParticipant(context.Context, *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error)
}

// ===================
// SIP Protobuf Client
// ===================

type sIPProtobufClient struct {
	client      HTTPClient
	urls        [13]string
	interceptor twirp.Interceptor
	opts        twirp.ClientOptions
}

// NewSIPProtobufClient creates a Protobuf client that implements the SIP interface.
// It communicates using Protobuf and can be configured with a custom HTTPClient.
func NewSIPProtobufClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) SIP {
	if c, ok := client.(*http.Client); ok {
		client = withoutRedirects(c)
	}

	clientOpts := twirp.ClientOptions{}
	for _, o := range opts {
		o(&clientOpts)
	}

	// Using ReadOpt allows backwards and forwards compatibility with new options in the future
	literalURLs := false
	_ = clientOpts.ReadOpt("literalURLs", &literalURLs)
	var pathPrefix string
	if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
		pathPrefix = "/twirp" // default prefix
	}

	// Build method URLs: <baseURL>[<prefix>]/<package>.<Service>/<Method>
	serviceURL := sanitizeBaseURL(baseURL)
	serviceURL += baseServicePath(pathPrefix, "livekit", "SIP")
	urls := [13]string{
		serviceURL + "ListSIPTrunk",
		serviceURL + "CreateSIPInboundTrunk",
		serviceURL + "CreateSIPOutboundTrunk",
		serviceURL + "GetSIPInboundTrunk",
		serviceURL + "GetSIPOutboundTrunk",
		serviceURL + "ListSIPInboundTrunk",
		serviceURL + "ListSIPOutboundTrunk",
		serviceURL + "DeleteSIPTrunk",
		serviceURL + "CreateSIPDispatchRule",
		serviceURL + "ListSIPDispatchRule",
		serviceURL + "DeleteSIPDispatchRule",
		serviceURL + "CreateSIPParticipant",
		serviceURL + "TransferSIPParticipant",
	}

	return &sIPProtobufClient{
		client:      client,
		urls:        urls,
		interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...),
		opts:        clientOpts,
	}
}

func (c *sIPProtobufClient) ListSIPTrunk(ctx context.Context, in *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk")
	caller := c.callListSIPTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor")
					}
					return c.callListSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callListSIPTrunk(ctx context.Context, in *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
	out := new(ListSIPTrunkResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) CreateSIPInboundTrunk(ctx context.Context, in *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk")
	caller := c.callCreateSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callCreateSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPInboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callCreateSIPInboundTrunk(ctx context.Context, in *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
	out := new(SIPInboundTrunkInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) CreateSIPOutboundTrunk(ctx context.Context, in *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk")
	caller := c.callCreateSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callCreateSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPOutboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callCreateSIPOutboundTrunk(ctx context.Context, in *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
	out := new(SIPOutboundTrunkInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPInboundTrunk")
	caller := c.callGetSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callGetSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
	out := new(GetSIPInboundTrunkResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPOutboundTrunk")
	caller := c.callGetSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callGetSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
	out := new(GetSIPOutboundTrunkResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPInboundTrunk")
	caller := c.callListSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callListSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
	out := new(ListSIPInboundTrunkResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPOutboundTrunk")
	caller := c.callListSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callListSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
	out := new(ListSIPOutboundTrunkResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPTrunk")
	caller := c.callDeleteSIPTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPTrunkRequest) when calling interceptor")
					}
					return c.callDeleteSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
	out := new(SIPTrunkInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) CreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPDispatchRule")
	caller := c.callCreateSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callCreateSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	out := new(SIPDispatchRuleInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule")
	caller := c.callListSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callListSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPDispatchRuleResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
	out := new(ListSIPDispatchRuleResponse)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule")
	caller := c.callDeleteSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callDeleteSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	out := new(SIPDispatchRuleInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) CreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPParticipant")
	caller := c.callCreateSIPParticipant
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPParticipantRequest) when calling interceptor")
					}
					return c.callCreateSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPParticipantInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPParticipantInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
	out := new(SIPParticipantInfo)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPProtobufClient) TransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "TransferSIPParticipant")
	caller := c.callTransferSIPParticipant
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*TransferSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*TransferSIPParticipantRequest) when calling interceptor")
					}
					return c.callTransferSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*google_protobuf2.Empty)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPProtobufClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
	out := new(google_protobuf2.Empty)
	ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

// ===============
// SIP JSON Client
// ===============

type sIPJSONClient struct {
	client      HTTPClient
	urls        [13]string
	interceptor twirp.Interceptor
	opts        twirp.ClientOptions
}

// NewSIPJSONClient creates a JSON client that implements the SIP interface.
// It communicates using JSON and can be configured with a custom HTTPClient.
func NewSIPJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) SIP {
	if c, ok := client.(*http.Client); ok {
		client = withoutRedirects(c)
	}

	clientOpts := twirp.ClientOptions{}
	for _, o := range opts {
		o(&clientOpts)
	}

	// Using ReadOpt allows backwards and forwards compatibility with new options in the future
	literalURLs := false
	_ = clientOpts.ReadOpt("literalURLs", &literalURLs)
	var pathPrefix string
	if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
		pathPrefix = "/twirp" // default prefix
	}

	// Build method URLs: <baseURL>[<prefix>]/<package>.<Service>/<Method>
	serviceURL := sanitizeBaseURL(baseURL)
	serviceURL += baseServicePath(pathPrefix, "livekit", "SIP")
	urls := [13]string{
		serviceURL + "ListSIPTrunk",
		serviceURL + "CreateSIPInboundTrunk",
		serviceURL + "CreateSIPOutboundTrunk",
		serviceURL + "GetSIPInboundTrunk",
		serviceURL + "GetSIPOutboundTrunk",
		serviceURL + "ListSIPInboundTrunk",
		serviceURL + "ListSIPOutboundTrunk",
		serviceURL + "DeleteSIPTrunk",
		serviceURL + "CreateSIPDispatchRule",
		serviceURL + "ListSIPDispatchRule",
		serviceURL + "DeleteSIPDispatchRule",
		serviceURL + "CreateSIPParticipant",
		serviceURL + "TransferSIPParticipant",
	}

	return &sIPJSONClient{
		client:      client,
		urls:        urls,
		interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...),
		opts:        clientOpts,
	}
}

func (c *sIPJSONClient) ListSIPTrunk(ctx context.Context, in *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk")
	caller := c.callListSIPTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor")
					}
					return c.callListSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callListSIPTrunk(ctx context.Context, in *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
	out := new(ListSIPTrunkResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) CreateSIPInboundTrunk(ctx context.Context, in *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk")
	caller := c.callCreateSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callCreateSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPInboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callCreateSIPInboundTrunk(ctx context.Context, in *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
	out := new(SIPInboundTrunkInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) CreateSIPOutboundTrunk(ctx context.Context, in *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk")
	caller := c.callCreateSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callCreateSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPOutboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callCreateSIPOutboundTrunk(ctx context.Context, in *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
	out := new(SIPOutboundTrunkInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPInboundTrunk")
	caller := c.callGetSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callGetSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
	out := new(GetSIPInboundTrunkResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPOutboundTrunk")
	caller := c.callGetSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callGetSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
	out := new(GetSIPOutboundTrunkResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPInboundTrunk")
	caller := c.callListSIPInboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPInboundTrunkRequest) when calling interceptor")
					}
					return c.callListSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
	out := new(ListSIPInboundTrunkResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPOutboundTrunk")
	caller := c.callListSIPOutboundTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPOutboundTrunkRequest) when calling interceptor")
					}
					return c.callListSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
	out := new(ListSIPOutboundTrunkResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPTrunk")
	caller := c.callDeleteSIPTrunk
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPTrunkRequest) when calling interceptor")
					}
					return c.callDeleteSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
	out := new(SIPTrunkInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) CreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPDispatchRule")
	caller := c.callCreateSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callCreateSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	out := new(SIPDispatchRuleInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule")
	caller := c.callListSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callListSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPDispatchRuleResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
	out := new(ListSIPDispatchRuleResponse)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule")
	caller := c.callDeleteSIPDispatchRule
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor")
					}
					return c.callDeleteSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
	out := new(SIPDispatchRuleInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) CreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPParticipant")
	caller := c.callCreateSIPParticipant
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPParticipantRequest) when calling interceptor")
					}
					return c.callCreateSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPParticipantInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPParticipantInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
	out := new(SIPParticipantInfo)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

func (c *sIPJSONClient) TransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithMethodName(ctx, "TransferSIPParticipant")
	caller := c.callTransferSIPParticipant
	if c.interceptor != nil {
		caller = func(ctx context.Context, req *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
			resp, err := c.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*TransferSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*TransferSIPParticipantRequest) when calling interceptor")
					}
					return c.callTransferSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*google_protobuf2.Empty)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}
	return caller(ctx, in)
}

func (c *sIPJSONClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
	out := new(google_protobuf2.Empty)
	ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
	if err != nil {
		twerr, ok := err.(twirp.Error)
		if !ok {
			twerr = twirp.InternalErrorWith(err)
		}
		callClientError(ctx, c.opts.Hooks, twerr)
		return nil, err
	}

	callClientResponseReceived(ctx, c.opts.Hooks)

	return out, nil
}

// ==================
// SIP Server Handler
// ==================

type sIPServer struct {
	SIP
	interceptor      twirp.Interceptor
	hooks            *twirp.ServerHooks
	pathPrefix       string // prefix for routing
	jsonSkipDefaults bool   // do not include unpopulated fields (default values) in the response
	jsonCamelCase    bool   // JSON fields are serialized as lowerCamelCase rather than keeping the original proto names
}

// NewSIPServer builds a TwirpServer that can be used as an http.Handler to handle
// HTTP requests that are routed to the right method in the provided svc implementation.
// The opts are twirp.ServerOption modifiers, for example twirp.WithServerHooks(hooks).
func NewSIPServer(svc SIP, opts ...interface{}) TwirpServer {
	serverOpts := newServerOpts(opts)

	// Using ReadOpt allows backwards and forwards compatibility with new options in the future
	jsonSkipDefaults := false
	_ = serverOpts.ReadOpt("jsonSkipDefaults", &jsonSkipDefaults)
	jsonCamelCase := false
	_ = serverOpts.ReadOpt("jsonCamelCase", &jsonCamelCase)
	var pathPrefix string
	if ok := serverOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
		pathPrefix = "/twirp" // default prefix
	}

	return &sIPServer{
		SIP:              svc,
		hooks:            serverOpts.Hooks,
		interceptor:      twirp.ChainInterceptors(serverOpts.Interceptors...),
		pathPrefix:       pathPrefix,
		jsonSkipDefaults: jsonSkipDefaults,
		jsonCamelCase:    jsonCamelCase,
	}
}

// writeError writes an HTTP response with a valid Twirp error format, and triggers hooks.
// If err is not a twirp.Error, it will get wrapped with twirp.InternalErrorWith(err)
func (s *sIPServer) writeError(ctx context.Context, resp http.ResponseWriter, err error) {
	writeError(ctx, resp, err, s.hooks)
}

// handleRequestBodyError is used to handle error when the twirp server cannot read request
func (s *sIPServer) handleRequestBodyError(ctx context.Context, resp http.ResponseWriter, msg string, err error) {
	if context.Canceled == ctx.Err() {
		s.writeError(ctx, resp, twirp.NewError(twirp.Canceled, "failed to read request: context canceled"))
		return
	}
	if context.DeadlineExceeded == ctx.Err() {
		s.writeError(ctx, resp, twirp.NewError(twirp.DeadlineExceeded, "failed to read request: deadline exceeded"))
		return
	}
	s.writeError(ctx, resp, twirp.WrapError(malformedRequestError(msg), err))
}

// SIPPathPrefix is a convenience constant that may identify URL paths.
// Should be used with caution, it only matches routes generated by Twirp Go clients,
// with the default "/twirp" prefix and default CamelCase service and method names.
// More info: https://twitchtv.github.io/twirp/docs/routing.html
const SIPPathPrefix = "/twirp/livekit.SIP/"

func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
	ctx := req.Context()
	ctx = ctxsetters.WithPackageName(ctx, "livekit")
	ctx = ctxsetters.WithServiceName(ctx, "SIP")
	ctx = ctxsetters.WithResponseWriter(ctx, resp)

	var err error
	ctx, err = callRequestReceived(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	if req.Method != "POST" {
		msg := fmt.Sprintf("unsupported method %q (only POST is allowed)", req.Method)
		s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
		return
	}

	// Verify path format: [<prefix>]/<package>.<Service>/<Method>
	prefix, pkgService, method := parseTwirpPath(req.URL.Path)
	if pkgService != "livekit.SIP" {
		msg := fmt.Sprintf("no handler for path %q", req.URL.Path)
		s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
		return
	}
	if prefix != s.pathPrefix {
		msg := fmt.Sprintf("invalid path prefix %q, expected %q, on path %q", prefix, s.pathPrefix, req.URL.Path)
		s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
		return
	}

	switch method {
	case "ListSIPTrunk":
		s.serveListSIPTrunk(ctx, resp, req)
		return
	case "CreateSIPInboundTrunk":
		s.serveCreateSIPInboundTrunk(ctx, resp, req)
		return
	case "CreateSIPOutboundTrunk":
		s.serveCreateSIPOutboundTrunk(ctx, resp, req)
		return
	case "GetSIPInboundTrunk":
		s.serveGetSIPInboundTrunk(ctx, resp, req)
		return
	case "GetSIPOutboundTrunk":
		s.serveGetSIPOutboundTrunk(ctx, resp, req)
		return
	case "ListSIPInboundTrunk":
		s.serveListSIPInboundTrunk(ctx, resp, req)
		return
	case "ListSIPOutboundTrunk":
		s.serveListSIPOutboundTrunk(ctx, resp, req)
		return
	case "DeleteSIPTrunk":
		s.serveDeleteSIPTrunk(ctx, resp, req)
		return
	case "CreateSIPDispatchRule":
		s.serveCreateSIPDispatchRule(ctx, resp, req)
		return
	case "ListSIPDispatchRule":
		s.serveListSIPDispatchRule(ctx, resp, req)
		return
	case "DeleteSIPDispatchRule":
		s.serveDeleteSIPDispatchRule(ctx, resp, req)
		return
	case "CreateSIPParticipant":
		s.serveCreateSIPParticipant(ctx, resp, req)
		return
	case "TransferSIPParticipant":
		s.serveTransferSIPParticipant(ctx, resp, req)
		return
	default:
		msg := fmt.Sprintf("no handler for path %q", req.URL.Path)
		s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
		return
	}
}

func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveListSIPTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveListSIPTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(ListSIPTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.ListSIPTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(ListSIPTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.ListSIPTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveCreateSIPInboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveCreateSIPInboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(CreateSIPInboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.CreateSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPInboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPInboundTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(CreateSIPInboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.CreateSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPInboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPInboundTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveCreateSIPOutboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveCreateSIPOutboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(CreateSIPOutboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.CreateSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPOutboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPOutboundTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(CreateSIPOutboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.CreateSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPOutboundTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPOutboundTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveGetSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveGetSIPInboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveGetSIPInboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveGetSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(GetSIPInboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.GetSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.GetSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *GetSIPInboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *GetSIPInboundTrunkResponse and nil error while calling GetSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveGetSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(GetSIPInboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.GetSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.GetSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *GetSIPInboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *GetSIPInboundTrunkResponse and nil error while calling GetSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveGetSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveGetSIPOutboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveGetSIPOutboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveGetSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(GetSIPOutboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.GetSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.GetSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *GetSIPOutboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *GetSIPOutboundTrunkResponse and nil error while calling GetSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveGetSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "GetSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(GetSIPOutboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.GetSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*GetSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*GetSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.GetSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*GetSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*GetSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *GetSIPOutboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *GetSIPOutboundTrunkResponse and nil error while calling GetSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveListSIPInboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveListSIPInboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveListSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(ListSIPInboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.ListSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPInboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPInboundTrunkResponse and nil error while calling ListSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPInboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(ListSIPInboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.ListSIPInboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPInboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPInboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPInboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPInboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPInboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPInboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPInboundTrunkResponse and nil error while calling ListSIPInboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveListSIPOutboundTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveListSIPOutboundTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveListSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(ListSIPOutboundTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.ListSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPOutboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPOutboundTrunkResponse and nil error while calling ListSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPOutboundTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(ListSIPOutboundTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.ListSIPOutboundTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPOutboundTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPOutboundTrunkRequest) when calling interceptor")
					}
					return s.SIP.ListSIPOutboundTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPOutboundTrunkResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPOutboundTrunkResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPOutboundTrunkResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPOutboundTrunkResponse and nil error while calling ListSIPOutboundTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveDeleteSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveDeleteSIPTrunkJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveDeleteSIPTrunkProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveDeleteSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(DeleteSIPTrunkRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.DeleteSIPTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPTrunkRequest) when calling interceptor")
					}
					return s.SIP.DeleteSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPTrunkInfo and nil error while calling DeleteSIPTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveDeleteSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPTrunk")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(DeleteSIPTrunkRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.DeleteSIPTrunk
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPTrunkRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPTrunkRequest) when calling interceptor")
					}
					return s.SIP.DeleteSIPTrunk(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPTrunkInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPTrunkInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPTrunkInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPTrunkInfo and nil error while calling DeleteSIPTrunk. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveCreateSIPDispatchRuleJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveCreateSIPDispatchRuleProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveCreateSIPDispatchRuleJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(CreateSIPDispatchRuleRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.CreateSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPDispatchRuleInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling CreateSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPDispatchRuleProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(CreateSIPDispatchRuleRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.CreateSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPDispatchRuleInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling CreateSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveListSIPDispatchRuleJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveListSIPDispatchRuleProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveListSIPDispatchRuleJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(ListSIPDispatchRuleRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.ListSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.ListSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPDispatchRuleResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPDispatchRuleResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPDispatchRuleResponse and nil error while calling ListSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveListSIPDispatchRuleProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(ListSIPDispatchRuleRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.ListSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*ListSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.ListSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*ListSIPDispatchRuleResponse)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *ListSIPDispatchRuleResponse
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPDispatchRuleResponse and nil error while calling ListSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveDeleteSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveDeleteSIPDispatchRuleJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveDeleteSIPDispatchRuleProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveDeleteSIPDispatchRuleJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(DeleteSIPDispatchRuleRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.DeleteSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.DeleteSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPDispatchRuleInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling DeleteSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveDeleteSIPDispatchRuleProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(DeleteSIPDispatchRuleRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.DeleteSIPDispatchRule
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*DeleteSIPDispatchRuleRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor")
					}
					return s.SIP.DeleteSIPDispatchRule(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPDispatchRuleInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPDispatchRuleInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling DeleteSIPDispatchRule. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPParticipant(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveCreateSIPParticipantJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveCreateSIPParticipantProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveCreateSIPParticipantJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPParticipant")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(CreateSIPParticipantRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.CreateSIPParticipant
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPParticipantRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPParticipantInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPParticipantInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPParticipantInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPParticipantInfo and nil error while calling CreateSIPParticipant. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveCreateSIPParticipantProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "CreateSIPParticipant")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(CreateSIPParticipantRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.CreateSIPParticipant
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*CreateSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*CreateSIPParticipantRequest) when calling interceptor")
					}
					return s.SIP.CreateSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*SIPParticipantInfo)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*SIPParticipantInfo) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *SIPParticipantInfo
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPParticipantInfo and nil error while calling CreateSIPParticipant. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveTransferSIPParticipant(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	header := req.Header.Get("Content-Type")
	i := strings.Index(header, ";")
	if i == -1 {
		i = len(header)
	}
	switch strings.TrimSpace(strings.ToLower(header[:i])) {
	case "application/json":
		s.serveTransferSIPParticipantJSON(ctx, resp, req)
	case "application/protobuf":
		s.serveTransferSIPParticipantProtobuf(ctx, resp, req)
	default:
		msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
		twerr := badRouteError(msg, req.Method, req.URL.Path)
		s.writeError(ctx, resp, twerr)
	}
}

func (s *sIPServer) serveTransferSIPParticipantJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "TransferSIPParticipant")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	d := json.NewDecoder(req.Body)
	rawReqBody := json.RawMessage{}
	if err := d.Decode(&rawReqBody); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}
	reqContent := new(TransferSIPParticipantRequest)
	unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
	if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
		s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
		return
	}

	handler := s.SIP.TransferSIPParticipant
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*TransferSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*TransferSIPParticipantRequest) when calling interceptor")
					}
					return s.SIP.TransferSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*google_protobuf2.Empty)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *google_protobuf2.Empty
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *google_protobuf2.Empty and nil error while calling TransferSIPParticipant. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
	respBytes, err := marshaler.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/json")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)

	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) serveTransferSIPParticipantProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
	var err error
	ctx = ctxsetters.WithMethodName(ctx, "TransferSIPParticipant")
	ctx, err = callRequestRouted(ctx, s.hooks)
	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}

	buf, err := io.ReadAll(req.Body)
	if err != nil {
		s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
		return
	}
	reqContent := new(TransferSIPParticipantRequest)
	if err = proto.Unmarshal(buf, reqContent); err != nil {
		s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
		return
	}

	handler := s.SIP.TransferSIPParticipant
	if s.interceptor != nil {
		handler = func(ctx context.Context, req *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) {
			resp, err := s.interceptor(
				func(ctx context.Context, req interface{}) (interface{}, error) {
					typedReq, ok := req.(*TransferSIPParticipantRequest)
					if !ok {
						return nil, twirp.InternalError("failed type assertion req.(*TransferSIPParticipantRequest) when calling interceptor")
					}
					return s.SIP.TransferSIPParticipant(ctx, typedReq)
				},
			)(ctx, req)
			if resp != nil {
				typedResp, ok := resp.(*google_protobuf2.Empty)
				if !ok {
					return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor")
				}
				return typedResp, err
			}
			return nil, err
		}
	}

	// Call service method
	var respContent *google_protobuf2.Empty
	func() {
		defer ensurePanicResponses(ctx, resp, s.hooks)
		respContent, err = handler(ctx, reqContent)
	}()

	if err != nil {
		s.writeError(ctx, resp, err)
		return
	}
	if respContent == nil {
		s.writeError(ctx, resp, twirp.InternalError("received a nil *google_protobuf2.Empty and nil error while calling TransferSIPParticipant. nil responses are not supported"))
		return
	}

	ctx = callResponsePrepared(ctx, s.hooks)

	respBytes, err := proto.Marshal(respContent)
	if err != nil {
		s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
		return
	}

	ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
	resp.Header().Set("Content-Type", "application/protobuf")
	resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
	resp.WriteHeader(http.StatusOK)
	if n, err := resp.Write(respBytes); err != nil {
		msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
		twerr := twirp.NewError(twirp.Unknown, msg)
		ctx = callError(ctx, s.hooks, twerr)
	}
	callResponseSent(ctx, s.hooks)
}

func (s *sIPServer) ServiceDescriptor() ([]byte, int) {
	return twirpFileDescriptor4, 0
}

func (s *sIPServer) ProtocGenTwirpVersion() string {
	return "v8.1.3"
}

// PathPrefix returns the base service path, in the form: "/<prefix>/<package>.<Service>/"
// that is everything in a Twirp route except for the <Method>. This can be used for routing,
// for example to identify the requests that are targeted to this service in a mux.
func (s *sIPServer) PathPrefix() string {
	return baseServicePath(s.pathPrefix, "livekit", "SIP")
}

var twirpFileDescriptor4 = []byte{
	// 3643 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5b, 0xdb, 0x8f, 0xe3, 0x4c,
	0x56, 0x9f, 0xc4, 0xe9, 0xee, 0xf4, 0x49, 0x5f, 0xdc, 0xd5, 0x3d, 0xfd, 0x65, 0x32, 0xd7, 0xcd,
	0x7c, 0xf3, 0xcd, 0x37, 0xfd, 0xad, 0x7a, 0x76, 0x7b, 0xc4, 0x02, 0x83, 0x76, 0xc1, 0x1d, 0x57,
	0x77, 0x9b, 0x49, 0xdb, 0xf9, 0xca, 0xce, 0xcc, 0xf4, 0x6a, 0xc1, 0x78, 0x62, 0x77, 0xb7, 0x77,
	0x92, 0x38, 0x38, 0xce, 0xcc, 0x37, 0x08, 0x1e, 0x78, 0x83, 0x17, 0xb4, 0xcb, 0x1d, 0x24, 0x6e,
	0xe2, 0x26, 0x81, 0x40, 0x42, 0xe2, 0x22, 0xf1, 0xc4, 0x03, 0x0f, 0x88, 0xbf, 0x00, 0x89, 0x8b,
	0x60, 0xb9, 0x8a, 0x07, 0xe0, 0x81, 0xeb, 0x1b, 0xaa, 0x72, 0xd9, 0xb1, 0x1d, 0x27, 0x9d, 0x9e,
	0x61, 0x25, 0x04, 0x6f, 0xf1, 0x39, 0xa7, 0x4e, 0x9d, 0x3a, 0xf5, 0x3b, 0xa7, 0x4e, 0x5d, 0x02,
	0x1b, 0x5d, 0xf7, 0x95, 0xf3, 0xd2, 0x0d, 0xcc, 0xa1, 0x3b, 0xd8, 0x1d, 0xf8, 0x5e, 0xe0, 0xa1,
	0x25, 0x4e, 0xaa, 0xdd, 0x3a, 0xf3, 0xbc, 0xb3, 0xae, 0xf3, 0x90, 0x91, 0x5f, 0x8c, 0x4e, 0x1f,
	0xda, 0x23, 0xdf, 0x0a, 0x5c, 0xaf, 0x1f, 0x0a, 0xd6, 0xae, 0x67, 0xf9, 0x4e, 0x6f, 0x10, 0xbc,
	0xe1, 0xcc, 0xad, 0x48, 0x71, 0xcf, 0xb3, 0x9d, 0xee, 0x90, 0x53, 0x51, 0x44, 0xf5, 0x3d, 0xaf,
	0x17, 0xd2, 0xea, 0x1a, 0x2c, 0xeb, 0x4a, 0x4b, 0x0f, 0xac, 0x60, 0x34, 0x44, 0x3b, 0x50, 0xea,
	0x78, 0xb6, 0x53, 0x2d, 0xdc, 0x29, 0x7c, 0xb8, 0xb6, 0xb7, 0xbd, 0xcb, 0xe5, 0x77, 0x63, 0x89,
	0x86, 0x67, 0x3b, 0x84, 0xc9, 0xa0, 0x6d, 0x58, 0x1c, 0x32, 0x5a, 0xb5, 0x78, 0xa7, 0xf0, 0xe1,
	0x32, 0xe1, 0x5f, 0xf5, 0x3f, 0x17, 0xe0, 0x6a, 0xc3, 0x77, 0xac, 0xc0, 0xd1, 0x95, 0x96, 0xe1,
	0x8f, 0xfa, 0x2f, 0x89, 0xf3, 0xdd, 0x23, 0x67, 0x18, 0xa0, 0x8f, 0x60, 0xc3, 0xed, 0xbf, 0xf0,
	0x46, 0x7d, 0xdb, 0xb4, 0x6c, 0xdb, 0x77, 0x86, 0x43, 0x67, 0x58, 0x2d, 0xdc, 0x11, 0x3e, 0x5c,
	0x26, 0x22, 0x67, 0x48, 0x11, 0x1d, 0x3d, 0x00, 0xd1, 0x1b, 0x05, 0x29, 0x69, 0xde, 0xd1, 0x7a,
	0x44, 0xe7, 0xc2, 0xe8, 0x3e, 0xc4, 0x24, 0xb3, 0x3f, 0xea, 0xbd, 0x70, 0xfc, 0xaa, 0xc0, 0x24,
	0xd7, 0x22, 0xb2, 0xca, 0xa8, 0xe8, 0x73, 0x70, 0x35, 0x32, 0x20, 0x94, 0x1b, 0x9a, 0xbe, 0x73,
	0xe6, 0x7c, 0x52, 0x2d, 0x51, 0x23, 0xf6, 0x8b, 0xd5, 0x02, 0xd9, 0xe4, 0x02, 0x61, 0x8b, 0x21,
	0xa1, 0x6c, 0xda, 0x41, 0xa6, 0x5d, 0x75, 0x99, 0x99, 0xbd, 0x96, 0x96, 0xa6, 0x46, 0x47, 0x82,
	0xa3, 0xa1, 0xe3, 0xf7, 0xad, 0x9e, 0x53, 0x5d, 0x08, 0x8d, 0xe6, 0xf4, 0x36, 0x27, 0x27, 0x45,
	0x07, 0xd6, 0x70, 0xf8, 0xda, 0xf3, 0xed, 0xea, 0x62, 0x4a, 0xb4, 0xc5, 0xc9, 0xd4, 0x6f, 0xf1,
	0xf8, 0x62, 0xb5, 0x4b, 0x4c, 0x36, 0xf6, 0x51, 0xac, 0x37, 0x29, 0x1c, 0x2b, 0x2e, 0xa7, 0x85,
	0x63, 0xcd, 0x08, 0x4a, 0x4c, 0x19, 0x30, 0x3e, 0xfb, 0x8d, 0x6a, 0x50, 0xee, 0x39, 0x81, 0x65,
	0x5b, 0x81, 0x55, 0xad, 0x30, 0x7a, 0xfc, 0xfd, 0xb8, 0x58, 0x2d, 0xd4, 0x7f, 0x65, 0x01, 0x56,
	0xa2, 0x99, 0x55, 0xfa, 0xa7, 0x1e, 0xba, 0x03, 0x2b, 0x43, 0x77, 0x60, 0x06, 0x94, 0x60, 0xba,
	0x36, 0x03, 0xcf, 0x32, 0x81, 0xa1, 0x3b, 0x08, 0x65, 0x6c, 0xf4, 0x08, 0x4a, 0x2f, 0xdd, 0xbe,
	0x5d, 0x5d, 0x63, 0xb0, 0xba, 0x9d, 0x84, 0x55, 0xac, 0x66, 0x97, 0xfd, 0x7a, 0xe2, 0xf6, 0x6d,
	0xc2, 0x84, 0xf3, 0xd1, 0x52, 0xbc, 0x04, 0x5a, 0x84, 0xb9, 0xd1, 0x52, 0xca, 0x45, 0xcb, 0x23,
	0x58, 0x0e, 0x7c, 0xab, 0x3f, 0x1c, 0x78, 0x7e, 0x50, 0x5d, 0x65, 0xa6, 0x5f, 0x4d, 0x9b, 0xce,
	0x99, 0x64, 0x2c, 0x37, 0x1d, 0x62, 0x0b, 0x97, 0x86, 0x18, 0xcc, 0x0d, 0xb1, 0xc5, 0xf9, 0x21,
	0xb6, 0x74, 0x09, 0x88, 0x95, 0x2f, 0x03, 0xb1, 0xe5, 0x0b, 0x20, 0x56, 0x99, 0x02, 0xb1, 0x95,
	0x34, 0xc4, 0xea, 0x32, 0x2c, 0xc7, 0x48, 0x40, 0x22, 0xac, 0x18, 0xa4, 0xad, 0x3e, 0x31, 0x9b,
	0xf8, 0x50, 0x6a, 0x9c, 0x88, 0x57, 0xd0, 0x06, 0xac, 0x86, 0x14, 0x45, 0xdd, 0xd7, 0xda, 0xaa,
	0x2c, 0x16, 0x10, 0x82, 0xb5, 0x90, 0xa4, 0xb5, 0x8d, 0x90, 0x56, 0x64, 0x40, 0x25, 0x70, 0x23,
	0xce, 0x43, 0x4a, 0x38, 0xde, 0x54, 0x3a, 0xda, 0x83, 0x05, 0x86, 0x59, 0x06, 0xd8, 0xca, 0xde,
	0x8d, 0xe4, 0xdc, 0x26, 0xe5, 0x29, 0x3a, 0x49, 0x28, 0x5a, 0xff, 0xc3, 0x32, 0x6c, 0xe6, 0xb0,
	0xe7, 0x88, 0x81, 0xc8, 0x0f, 0xc5, 0x29, 0x7e, 0x10, 0xd2, 0x7e, 0x40, 0x55, 0x58, 0x8a, 0x80,
	0xc0, 0xb2, 0x13, 0x89, 0x3e, 0xa9, 0xfb, 0xad, 0x6e, 0xd7, 0x7b, 0xed, 0x24, 0x03, 0x63, 0x21,
	0x0c, 0x0c, 0xce, 0x18, 0x07, 0xc6, 0x7d, 0x58, 0x8f, 0x84, 0x23, 0x75, 0x8b, 0x21, 0xae, 0x38,
	0x39, 0xc2, 0xd5, 0x5d, 0x58, 0xb5, 0x46, 0xc1, 0x79, 0x36, 0xc1, 0xac, 0x50, 0x62, 0x3c, 0xf3,
	0x91, 0x50, 0x26, 0xb1, 0x30, 0xa1, 0x78, 0xc6, 0x1b, 0xb0, 0x74, 0xee, 0x58, 0x76, 0x94, 0x25,
	0x2b, 0x7b, 0x0f, 0x66, 0x79, 0x76, 0xf7, 0x28, 0x94, 0xc5, 0xfd, 0xc0, 0x7f, 0x43, 0xa2, 0x96,
	0xc8, 0x85, 0xab, 0xfc, 0xa7, 0x19, 0x78, 0xa6, 0x15, 0x04, 0xbe, 0xfb, 0x62, 0x14, 0x38, 0x61,
	0x54, 0x54, 0xf6, 0xbe, 0x61, 0x1e, 0x95, 0x86, 0x27, 0xc5, 0xed, 0x42, 0xf5, 0x9b, 0xe7, 0x93,
	0x1c, 0xda, 0xd5, 0x58, 0x3f, 0xed, 0x2d, 0xb2, 0x7e, 0x6d, 0x8e, 0xae, 0xc6, 0x7a, 0x0c, 0x2f,
	0x35, 0x92, 0x4d, 0x6b, 0x92, 0x83, 0xf6, 0x69, 0x94, 0x77, 0xba, 0x23, 0xdb, 0x89, 0x3b, 0x59,
	0x67, 0x89, 0xe5, 0x5a, 0xb2, 0x93, 0x50, 0x5a, 0x1b, 0xd0, 0xc5, 0x7e, 0x48, 0x13, 0x00, 0x6b,
	0x91, 0xd0, 0xe1, 0xbb, 0xfd, 0x33, 0xb7, 0x7f, 0x66, 0x06, 0x6e, 0xcf, 0xf1, 0x46, 0x01, 0x8b,
	0xad, 0xca, 0xde, 0xb5, 0xdd, 0xb0, 0x22, 0xd8, 0x8d, 0x2a, 0x82, 0x5d, 0x99, 0x57, 0x0c, 0x64,
	0x8d, 0xb7, 0x30, 0xc2, 0x06, 0x08, 0xc3, 0x46, 0xcf, 0xfa, 0xc4, 0xec, 0x58, 0xdd, 0xae, 0x19,
	0x95, 0x15, 0x2c, 0x12, 0x67, 0x6a, 0x59, 0xef, 0x59, 0x9f, 0x34, 0xac, 0x6e, 0x37, 0x22, 0x50,
	0x38, 0xbc, 0xf4, 0xdd, 0xe1, 0xc0, 0x74, 0xfa, 0xd6, 0x8b, 0xae, 0x63, 0xb3, 0x2c, 0x59, 0x26,
	0x2b, 0x8c, 0x88, 0x43, 0x1a, 0x3a, 0x00, 0xb1, 0xe7, 0xd8, 0xae, 0x65, 0x3a, 0xfd, 0x8e, 0xff,
	0x86, 0x0d, 0xaa, 0x2a, 0xb2, 0x41, 0x5f, 0x4f, 0x0e, 0xfa, 0x98, 0xca, 0xe0, 0x58, 0x84, 0xac,
	0xf7, 0xd2, 0x84, 0xda, 0x63, 0x58, 0x49, 0x3a, 0x18, 0x89, 0x20, 0xbc, 0x74, 0xde, 0xf0, 0x48,
	0xa3, 0x3f, 0xd1, 0x16, 0x2c, 0xbc, 0xb2, 0xba, 0xa3, 0x28, 0xc6, 0xc2, 0x8f, 0xc7, 0xc5, 0x6f,
	0x2a, 0xd4, 0x0e, 0xa0, 0x3a, 0x0d, 0x13, 0x97, 0xd5, 0x33, 0x6d, 0xc2, 0x2f, 0xa3, 0xa7, 0x6e,
	0xc0, 0xcd, 0x38, 0x35, 0x69, 0x3c, 0x63, 0xa6, 0x72, 0xd3, 0xa3, 0x74, 0x6e, 0xba, 0x99, 0xf4,
	0x54, 0xaa, 0x41, 0x32, 0x39, 0x7d, 0x75, 0x09, 0xb6, 0xf2, 0xf8, 0x5f, 0x9f, 0xec, 0x14, 0x2d,
	0xb3, 0xe1, 0xe2, 0x19, 0x7d, 0xa6, 0x57, 0xcd, 0x85, 0x39, 0x57, 0xcd, 0x44, 0xb2, 0x5b, 0x4c,
	0x27, 0xbb, 0xff, 0xb9, 0xb4, 0x24, 0x67, 0xd3, 0xd2, 0xce, 0x4c, 0xa7, 0x4e, 0xc9, 0x4b, 0x5f,
	0x9e, 0x9d, 0x97, 0x3e, 0x37, 0x97, 0xce, 0x39, 0x13, 0xd3, 0x97, 0xa7, 0x25, 0xa6, 0xca, 0x3c,
	0x7d, 0xbd, 0x73, 0x66, 0x5a, 0xb9, 0x6c, 0x66, 0xca, 0x8b, 0xf4, 0xd5, 0xff, 0xe7, 0x91, 0xfe,
	0x79, 0xb8, 0x76, 0xe8, 0x04, 0x53, 0x2a, 0x90, 0x0b, 0xe3, 0xb2, 0xde, 0x82, 0x5a, 0x5e, 0xf3,
	0xe1, 0xc0, 0xeb, 0x0f, 0x9d, 0xb7, 0xaa, 0x60, 0xbe, 0x10, 0x69, 0xcc, 0xcd, 0x3b, 0x17, 0x5b,
	0x44, 0xe0, 0x7a, 0x6e, 0x7b, 0x6e, 0xd2, 0x5b, 0x25, 0xae, 0x7d, 0xd8, 0x6c, 0xba, 0xc3, 0x20,
	0xbb, 0x5f, 0xbc, 0x0f, 0xa5, 0x81, 0x75, 0xe6, 0x70, 0x55, 0x9b, 0xb1, 0xaa, 0x96, 0x75, 0xe6,
	0xf6, 0xc3, 0x25, 0x89, 0x09, 0xb0, 0x6a, 0xef, 0x10, 0xb6, 0xd2, 0x3a, 0xb8, 0x41, 0x1f, 0xc1,
	0x82, 0x1b, 0x38, 0xbd, 0x70, 0xa3, 0x59, 0xc9, 0xe6, 0xa2, 0xd8, 0x10, 0x26, 0xc3, 0x14, 0x7d,
	0x2f, 0xd4, 0xb8, 0xa2, 0xbc, 0x29, 0x8b, 0x6c, 0x12, 0x2e, 0xb0, 0x09, 0x5d, 0xa7, 0x79, 0x30,
	0xf4, 0x62, 0xb4, 0xc9, 0x2d, 0x07, 0xa1, 0x0f, 0x87, 0xc9, 0x7c, 0x57, 0x4c, 0xe5, 0xbb, 0xfa,
	0xc7, 0x70, 0x3d, 0xb7, 0xf7, 0xf1, 0x8c, 0x27, 0x47, 0x73, 0xc1, 0x8c, 0x33, 0xd1, 0xfa, 0xf7,
	0xc5, 0x2a, 0x73, 0xa7, 0xfc, 0xeb, 0x3d, 0x22, 0x1d, 0x6e, 0xe4, 0x77, 0x3f, 0x46, 0x4c, 0x72,
	0x48, 0x17, 0x21, 0x26, 0x1c, 0xd3, 0x37, 0xc3, 0x55, 0xd9, 0xe9, 0x3a, 0x93, 0x67, 0x0c, 0x17,
	0x03, 0xf8, 0x00, 0xae, 0xea, 0x4a, 0x4b, 0x76, 0x87, 0x03, 0x2b, 0xe8, 0x9c, 0x93, 0x51, 0xd7,
	0x91, 0x5d, 0xdf, 0xe9, 0x04, 0x74, 0x7c, 0xbe, 0xe7, 0xf5, 0x4c, 0xb6, 0xcc, 0x84, 0xed, 0xca,
	0x94, 0xa0, 0xd2, 0x25, 0x46, 0x04, 0x61, 0xe0, 0xf6, 0x79, 0x7c, 0xd3, 0x9f, 0x75, 0x15, 0xae,
	0x65, 0xf4, 0x28, 0x7d, 0xdb, 0x7d, 0xe5, 0xda, 0x23, 0xab, 0x8b, 0x6e, 0x43, 0x85, 0xe9, 0x1a,
	0xf8, 0xce, 0xa9, 0xfb, 0x49, 0x64, 0x05, 0x25, 0xb5, 0x18, 0x25, 0x47, 0xdf, 0xf9, 0x84, 0x5d,
	0xb4, 0xd6, 0x72, 0x9c, 0xb7, 0xd0, 0x85, 0x6e, 0xc0, 0xb2, 0x6f, 0xf5, 0x6d, 0xaf, 0xe7, 0x7e,
	0x4f, 0x38, 0xb1, 0x65, 0x32, 0x26, 0xd4, 0x7f, 0xa1, 0x08, 0xeb, 0x99, 0xae, 0x10, 0x81, 0x2d,
	0x9b, 0x7f, 0x9b, 0xfe, 0xa8, 0xeb, 0x98, 0x36, 0x73, 0x0a, 0x8f, 0xbd, 0x5b, 0xc9, 0x49, 0x99,
	0x74, 0xdd, 0xd1, 0x15, 0x82, 0xec, 0x49, 0x87, 0x7e, 0x27, 0x54, 0xd3, 0x3a, 0xdd, 0xd8, 0x41,
	0xcc, 0xd8, 0xca, 0x5e, 0x7d, 0x9a, 0xde, 0xb1, 0x2b, 0x8f, 0xae, 0x90, 0x6d, 0x3b, 0xdf, 0xc9,
	0x13, 0x36, 0x77, 0x98, 0xc3, 0x38, 0x92, 0xa7, 0xda, 0x1c, 0xba, 0x35, 0x6b, 0x73, 0x48, 0xdd,
	0x5f, 0x84, 0x12, 0x55, 0x55, 0xff, 0x9a, 0x90, 0xd8, 0x3d, 0x26, 0x5b, 0x47, 0x40, 0xfb, 0x74,
	0x28, 0xc8, 0x1d, 0x54, 0x9d, 0xd6, 0x19, 0x61, 0x52, 0xe9, 0xd8, 0x29, 0x66, 0x62, 0x67, 0x07,
	0x36, 0xce, 0x5d, 0xdb, 0x31, 0x07, 0xe7, 0x5e, 0xdf, 0x49, 0x9e, 0x60, 0x95, 0xc9, 0x3a, 0x65,
	0xb4, 0x28, 0x9d, 0x1f, 0x4a, 0xe4, 0x9c, 0x13, 0x2c, 0xe6, 0x9e, 0x13, 0x44, 0x15, 0x5d, 0x69,
	0x4a, 0x45, 0xb7, 0x90, 0xa9, 0xe8, 0xda, 0x00, 0x89, 0x6a, 0x66, 0x29, 0xb3, 0xf5, 0x99, 0xe5,
	0x8a, 0xdd, 0x6c, 0x31, 0x93, 0x50, 0x94, 0x04, 0xef, 0xd0, 0x09, 0x78, 0x61, 0x16, 0x81, 0x77,
	0xe8, 0x04, 0xe8, 0x5b, 0xb8, 0x40, 0xc7, 0xeb, 0x9f, 0xba, 0x67, 0xec, 0x18, 0xa1, 0xb2, 0x57,
	0x8b, 0x3b, 0x26, 0x9e, 0xd7, 0x6b, 0x30, 0x56, 0xb4, 0x0b, 0x61, 0x8d, 0x43, 0x52, 0xed, 0xf3,
	0xb0, 0xfe, 0x0e, 0x8b, 0x7c, 0xfd, 0x9f, 0x4a, 0x6c, 0x37, 0x9f, 0x06, 0xde, 0xa9, 0x87, 0x1e,
	0xc2, 0x16, 0x4d, 0x22, 0x19, 0xf0, 0x46, 0xc9, 0x64, 0x63, 0xe8, 0x0e, 0x52, 0x4d, 0xec, 0x18,
	0x0c, 0xc5, 0xcb, 0x83, 0x41, 0x98, 0x07, 0x0c, 0xa5, 0xb9, 0xc1, 0xb0, 0x34, 0x13, 0x0c, 0x0b,
	0x53, 0xc0, 0xb0, 0x98, 0x01, 0x43, 0x33, 0x05, 0x86, 0x32, 0x03, 0xc3, 0xa7, 0xa7, 0xc7, 0x6a,
	0xaa, 0xda, 0xbc, 0x10, 0x03, 0xcb, 0x17, 0x61, 0x00, 0x2e, 0x83, 0x81, 0xc9, 0x4d, 0x68, 0x65,
	0xce, 0x4d, 0xe8, 0xca, 0x5b, 0x94, 0xa6, 0xef, 0x08, 0xb8, 0x1f, 0x2a, 0xc4, 0xc5, 0x45, 0x5e,
	0x4e, 0x99, 0x7b, 0x29, 0xde, 0x81, 0x8d, 0x2c, 0x38, 0xa3, 0x25, 0x79, 0x3d, 0x95, 0x2c, 0xed,
	0xe1, 0xcc, 0xd4, 0x93, 0x28, 0x37, 0xd2, 0xf6, 0xcc, 0x51, 0x6e, 0x64, 0x21, 0x10, 0x2d, 0xcd,
	0x1a, 0xdc, 0x88, 0x97, 0xe6, 0xbc, 0x41, 0x5e, 0x36, 0xb8, 0xea, 0x5f, 0x29, 0xc1, 0x46, 0xa2,
	0x16, 0xe0, 0xd3, 0x5e, 0x83, 0xf2, 0xb9, 0x37, 0x0c, 0x92, 0x8b, 0x75, 0xf4, 0x9d, 0xde, 0x83,
	0x16, 0xe7, 0xdc, 0x83, 0x4e, 0xec, 0x34, 0x85, 0x79, 0x76, 0x9a, 0xa5, 0x9c, 0x9d, 0xe6, 0xd9,
	0xb4, 0x3d, 0xe2, 0x02, 0xf3, 0xe2, 0xa3, 0xbc, 0x0a, 0x27, 0x1c, 0xd5, 0x25, 0x37, 0x88, 0x67,
	0xd3, 0x36, 0x88, 0x8b, 0x17, 0x76, 0x74, 0xa9, 0xdd, 0xe1, 0xff, 0xba, 0x5d, 0xd5, 0x2f, 0x2e,
	0xc3, 0xf5, 0x78, 0x49, 0x6a, 0x59, 0x7e, 0xe0, 0x76, 0xdc, 0x81, 0xd5, 0x0f, 0xe6, 0xae, 0x02,
	0xd1, 0x67, 0xa2, 0x7d, 0xca, 0x56, 0x26, 0xd9, 0x4c, 0xb8, 0x8a, 0x6f, 0x52, 0xd0, 0x2d, 0xa8,
	0x50, 0x9d, 0xec, 0xcc, 0x2c, 0xf0, 0xb8, 0x4d, 0xcb, 0x43, 0x77, 0x40, 0x2b, 0x07, 0xc3, 0x43,
	0x37, 0x81, 0xea, 0x8f, 0x32, 0xf6, 0x7a, 0xcc, 0xe6, 0xb9, 0x3a, 0x55, 0x5d, 0x0a, 0x99, 0xea,
	0xf2, 0xb3, 0xb0, 0x35, 0x18, 0x8f, 0xc2, 0x74, 0x6d, 0xa7, 0x1f, 0xb8, 0xc1, 0x1b, 0x8e, 0xae,
	0xcd, 0x04, 0x4f, 0xe1, 0x2c, 0xf4, 0x00, 0xc4, 0x64, 0x93, 0xc4, 0xd9, 0xc8, 0x7a, 0x82, 0x9e,
	0xa7, 0x3d, 0xce, 0xfa, 0xe5, 0x09, 0xed, 0xc7, 0xd1, 0x02, 0xf0, 0x0a, 0xb6, 0x93, 0x4d, 0x12,
	0x18, 0x0e, 0xcf, 0x4e, 0xbe, 0x75, 0xb2, 0x32, 0x98, 0x9c, 0x86, 0xdd, 0x04, 0x29, 0x8b, 0xe7,
	0xab, 0x83, 0x3c, 0x1e, 0x5d, 0xa8, 0xec, 0xa0, 0x77, 0x1a, 0x2d, 0x54, 0xf4, 0x37, 0xba, 0x0f,
	0xab, 0x83, 0xae, 0xf5, 0xc6, 0xf4, 0xdd, 0xfe, 0x59, 0xe0, 0xf5, 0xc3, 0xeb, 0x8e, 0x32, 0xbb,
	0x4a, 0x59, 0xa1, 0x0c, 0xc2, 0xe9, 0x34, 0x38, 0x99, 0xa0, 0xed, 0x5a, 0x5d, 0x26, 0xc8, 0x8f,
	0x23, 0x29, 0x51, 0xe6, 0xb4, 0xfc, 0xf5, 0x15, 0xf2, 0xd7, 0xd7, 0x27, 0xe3, 0x23, 0x23, 0x91,
	0x0d, 0xfb, 0xb3, 0x73, 0x0d, 0x3b, 0xff, 0xe4, 0x28, 0xe7, 0x84, 0x65, 0xe3, 0xff, 0xd2, 0xd9,
	0xef, 0xda, 0x9c, 0xcb, 0x2e, 0xba, 0xfc, 0xb2, 0x8b, 0x76, 0x61, 0xf3, 0xb5, 0xe5, 0x06, 0xe6,
	0xa8, 0x1f, 0xb8, 0x5d, 0xd3, 0xea, 0x0f, 0x5f, 0x3b, 0xbe, 0x63, 0x57, 0x37, 0x59, 0x97, 0x1b,
	0x94, 0xd5, 0xa6, 0x1c, 0x89, 0x33, 0x6a, 0x47, 0x50, 0x9b, 0x8e, 0xbd, 0x4b, 0x65, 0xac, 0x77,
	0x38, 0x8b, 0xaa, 0xff, 0x7a, 0x01, 0x50, 0x1a, 0x21, 0xac, 0xba, 0xbc, 0x07, 0x6b, 0xe9, 0x60,
	0xe7, 0xda, 0x56, 0x53, 0x61, 0x3e, 0x35, 0x27, 0x14, 0xa7, 0xe7, 0x84, 0x99, 0x39, 0x26, 0x99,
	0xbf, 0xdc, 0x68, 0xe1, 0x8a, 0xf2, 0x97, 0x62, 0xd7, 0xff, 0xa0, 0x08, 0x37, 0xd9, 0xc2, 0x78,
	0xea, 0xf8, 0xf9, 0x59, 0x75, 0x9a, 0x45, 0x85, 0x39, 0x2d, 0x2a, 0x66, 0x2c, 0xba, 0x0d, 0x95,
	0x80, 0x77, 0x48, 0x33, 0x6a, 0x68, 0x30, 0x44, 0x24, 0xc3, 0x9b, 0x0c, 0xe8, 0x52, 0x4e, 0x40,
	0x1f, 0x8f, 0x83, 0x34, 0xbb, 0xbe, 0xce, 0x1c, 0x4e, 0x7e, 0x98, 0xbe, 0xd3, 0x84, 0xff, 0x4b,
	0x09, 0x2a, 0xba, 0xd2, 0x62, 0x0e, 0xa5, 0x33, 0xfd, 0x1e, 0x2c, 0x45, 0xee, 0x0e, 0xdb, 0x2f,
	0x76, 0x98, 0xaf, 0xd1, 0x35, 0x28, 0xc7, 0x6b, 0x53, 0xa8, 0x65, 0x89, 0x97, 0x64, 0xb3, 0xe7,
	0xf0, 0x3d, 0x58, 0x62, 0xcc, 0x78, 0xfe, 0x16, 0xe9, 0xe7, 0x0c, 0xb0, 0x2c, 0x4c, 0x9f, 0x9a,
	0x1d, 0x28, 0x9f, 0xfa, 0x5e, 0xcf, 0x1c, 0xf9, 0x2e, 0xcb, 0xa8, 0x95, 0xbd, 0xf5, 0x64, 0x4c,
	0xb6, 0x7d, 0x97, 0x2c, 0x51, 0x81, 0xb6, 0xef, 0xa2, 0x0f, 0x60, 0x31, 0xf0, 0x98, 0xe4, 0x52,
	0xbe, 0xe4, 0x42, 0xe0, 0x51, 0xb9, 0x2f, 0x80, 0xc8, 0xd3, 0x81, 0x79, 0xea, 0x58, 0xc1, 0xc8,
	0x77, 0xc2, 0x5b, 0xb4, 0xb5, 0x44, 0x31, 0xab, 0x2b, 0xad, 0x83, 0x90, 0x47, 0xd6, 0xb9, 0x30,
	0xff, 0x1e, 0xa2, 0x6f, 0x83, 0xb5, 0x30, 0x2f, 0xb1, 0x03, 0x04, 0x9a, 0x2d, 0x72, 0xae, 0xc7,
	0x58, 0x1a, 0x8a, 0x04, 0xc8, 0x6a, 0x27, 0xf9, 0x89, 0xbe, 0x11, 0x2a, 0x4c, 0x03, 0x7f, 0x9a,
	0x52, 0x9e, 0x7c, 0xc8, 0x42, 0x9b, 0x87, 0x8f, 0x59, 0x08, 0x74, 0xe2, 0xdf, 0x74, 0xf9, 0xee,
	0xb0, 0x9c, 0x6e, 0x9b, 0x56, 0xb8, 0x47, 0x11, 0xc8, 0x32, 0xa7, 0x48, 0x01, 0x5b, 0xdd, 0x03,
	0xcb, 0xe7, 0x6c, 0x08, 0xd9, 0x9c, 0x22, 0x05, 0x74, 0x42, 0x9d, 0xbe, 0x1d, 0x32, 0x2b, 0x8c,
	0xb9, 0xc4, 0xbe, 0xa5, 0x00, 0x1d, 0xb0, 0x5a, 0xbd, 0xe3, 0xf5, 0xfb, 0x4e, 0x27, 0x30, 0x7d,
	0xc7, 0x1a, 0xc6, 0x7b, 0x8f, 0xf1, 0xb0, 0xe4, 0x58, 0x82, 0x30, 0x01, 0x22, 0xda, 0x19, 0x0a,
	0x85, 0x9d, 0xe3, 0xfb, 0x9e, 0xcf, 0x56, 0xb5, 0x65, 0x12, 0x7e, 0xd4, 0x7f, 0xb0, 0x00, 0x8b,
	0xe1, 0x1c, 0xd0, 0xb5, 0x93, 0xd6, 0xae, 0x1c, 0x6a, 0xec, 0x37, 0xa5, 0xd1, 0xaa, 0x38, 0xba,
	0xd7, 0xa1, 0xbf, 0xd1, 0x1a, 0x14, 0xdd, 0x01, 0x87, 0x56, 0xd1, 0x1d, 0x50, 0x19, 0x56, 0x28,
	0x53, 0x44, 0xad, 0x12, 0xf6, 0xfb, 0xad, 0x6e, 0x71, 0x76, 0xfe, 0x79, 0x05, 0x56, 0x53, 0x2f,
	0x85, 0xd0, 0x36, 0x4b, 0x80, 0xa6, 0x6e, 0x48, 0x46, 0x5b, 0x37, 0xdb, 0xea, 0x13, 0x55, 0x7b,
	0xa6, 0x8a, 0x57, 0xd0, 0x55, 0x56, 0xd1, 0x47, 0x74, 0x83, 0x9c, 0x28, 0xea, 0xa1, 0x68, 0xa3,
	0xf7, 0x52, 0xe2, 0x44, 0x51, 0x0f, 0x29, 0xfd, 0xb7, 0x0b, 0xe8, 0x53, 0x70, 0x23, 0xc1, 0x68,
	0x48, 0xcd, 0xa6, 0xa9, 0xe8, 0xe6, 0x81, 0x46, 0x9e, 0x49, 0x44, 0xc6, 0xb2, 0xf8, 0x3b, 0x05,
	0xb4, 0x9d, 0x52, 0xf9, 0x71, 0x1b, 0xb7, 0xb1, 0x2c, 0xfe, 0x6e, 0x01, 0xdd, 0x81, 0xeb, 0x09,
	0xba, 0x8e, 0x75, 0x5d, 0xd1, 0x54, 0xb3, 0x45, 0xb4, 0x43, 0x82, 0x75, 0x5d, 0xfc, 0xbd, 0x02,
	0x42, 0xcc, 0xea, 0x48, 0x42, 0x7b, 0x22, 0xfe, 0x51, 0x01, 0x55, 0xd9, 0xc1, 0x40, 0x44, 0x93,
	0x1a, 0x0d, 0xdc, 0x32, 0xb0, 0x2c, 0xfe, 0x71, 0xd6, 0x94, 0x63, 0xed, 0x29, 0x96, 0xcd, 0x16,
	0x26, 0xc7, 0x92, 0x8a, 0x55, 0xa3, 0x79, 0x22, 0xfe, 0x46, 0x31, 0x57, 0xc4, 0xc0, 0xc7, 0x2d,
	0x8d, 0x48, 0x44, 0x69, 0x9e, 0x88, 0xbf, 0x59, 0x44, 0xd7, 0xd8, 0x4d, 0x5d, 0xec, 0x18, 0x1d,
	0x53, 0x8b, 0x9e, 0x9f, 0x88, 0xbf, 0x55, 0x44, 0xd7, 0x61, 0x3b, 0xc1, 0xda, 0x97, 0x64, 0x93,
	0xe0, 0x8f, 0xdb, 0x58, 0x37, 0xc4, 0xaf, 0x08, 0xe8, 0x06, 0xbc, 0x97, 0x72, 0xa8, 0xd4, 0x36,
	0x8e, 0x34, 0xa2, 0x7c, 0x11, 0xcb, 0xe2, 0x57, 0x85, 0xcc, 0x58, 0x5b, 0xd2, 0xc9, 0x31, 0x56,
	0x0d, 0xd6, 0x5c, 0x21, 0x58, 0x16, 0x7f, 0x58, 0xc8, 0xf4, 0x7b, 0xa0, 0x91, 0x7d, 0x45, 0x96,
	0xb1, 0x2a, 0xfe, 0x88, 0x90, 0x19, 0xb2, 0xaa, 0x19, 0x07, 0xec, 0x2d, 0xc5, 0x8f, 0x0a, 0xa8,
	0x0e, 0x37, 0x93, 0xe3, 0xc1, 0xc6, 0x91, 0x26, 0x53, 0x01, 0x53, 0x6a, 0x36, 0xb5, 0x67, 0x58,
	0x16, 0x7f, 0x4c, 0x40, 0xb7, 0xd8, 0x69, 0x68, 0xa2, 0x35, 0x77, 0x9a, 0xb4, 0xdf, 0xc4, 0xe2,
	0x8f, 0x0b, 0xe8, 0x2e, 0xdc, 0x4a, 0x9a, 0x46, 0x07, 0x6b, 0x52, 0xe3, 0xc7, 0xd6, 0xfd, 0x84,
	0x80, 0x6e, 0x43, 0x2d, 0x39, 0xff, 0xe1, 0xb0, 0x4d, 0x43, 0x39, 0xc6, 0x5a, 0xdb, 0x10, 0x7f,
	0x32, 0x6b, 0x63, 0x43, 0x53, 0x0f, 0x9a, 0x4a, 0xc3, 0x10, 0x7f, 0x4a, 0x40, 0x5b, 0xec, 0x48,
	0x33, 0xe2, 0x1c, 0x6a, 0x2a, 0x16, 0x7f, 0x5a, 0x40, 0x1f, 0xc2, 0xdd, 0x1c, 0x85, 0x58, 0x35,
	0x14, 0xe3, 0xc4, 0x34, 0x34, 0xcd, 0x6c, 0x4a, 0xe4, 0x10, 0x8b, 0x3f, 0x23, 0xa0, 0xf7, 0xe1,
	0x76, 0x8e, 0x64, 0x9b, 0x28, 0xa1, 0x98, 0xa6, 0x1e, 0x8a, 0x3f, 0x2b, 0xa0, 0x0f, 0xe0, 0x53,
	0x29, 0xf7, 0xeb, 0xed, 0x56, 0x4b, 0x23, 0x06, 0x96, 0xcd, 0x63, 0x2c, 0x2b, 0x92, 0x69, 0x9c,
	0xb4, 0xb0, 0xf8, 0x73, 0x02, 0x7a, 0x08, 0x3b, 0x93, 0xda, 0xb0, 0x6c, 0x12, 0x49, 0x3d, 0xc4,
	0xcc, 0x3b, 0xba, 0x64, 0x28, 0xfa, 0x81, 0xc2, 0xdc, 0xf3, 0xf3, 0x02, 0xba, 0x09, 0xd5, 0xcc,
	0xa4, 0xe3, 0xe7, 0x06, 0x56, 0x29, 0x56, 0xc5, 0x5f, 0xca, 0xce, 0x40, 0xcc, 0x1a, 0x3b, 0xef,
	0x97, 0xb3, 0x32, 0x8a, 0x6a, 0x60, 0xf2, 0x54, 0x6a, 0x32, 0xf3, 0xf7, 0x89, 0x82, 0x0f, 0xc4,
	0x5f, 0x15, 0xd0, 0x7d, 0xa8, 0x27, 0xe3, 0x6e, 0x8c, 0x49, 0x0a, 0xa5, 0xa7, 0x92, 0xd2, 0x64,
	0xf6, 0xfc, 0xa5, 0x80, 0x3e, 0x03, 0x1f, 0x65, 0x03, 0xce, 0x20, 0x92, 0xaa, 0x4b, 0x0d, 0x83,
	0xf6, 0x2b, 0x6b, 0x38, 0x9c, 0x64, 0xfc, 0x5c, 0xd1, 0x0d, 0x5d, 0xfc, 0xab, 0xec, 0x08, 0x9a,
	0x9a, 0xd6, 0x32, 0x65, 0x6c, 0xe0, 0x06, 0x0d, 0x9b, 0xaf, 0x65, 0xd9, 0xd4, 0xa8, 0x63, 0x49,
	0x3d, 0x31, 0x8f, 0xb4, 0x96, 0x2e, 0xfe, 0x75, 0xd6, 0x78, 0x49, 0x96, 0x69, 0x70, 0x9a, 0x8a,
	0xda, 0xd0, 0x8e, 0x5b, 0x4d, 0x6c, 0x60, 0xf1, 0x6f, 0xb2, 0xd8, 0x95, 0x8e, 0xf7, 0x95, 0xc3,
	0xb6, 0xd6, 0xd6, 0xc5, 0xbf, 0xcd, 0xb2, 0xf6, 0xdb, 0xfa, 0x89, 0x79, 0x84, 0x09, 0x16, 0xff,
	0x2e, 0xab, 0x39, 0xc6, 0x14, 0x26, 0xc7, 0x8a, 0x2a, 0x51, 0xe3, 0xfe, 0x3e, 0x0b, 0xce, 0x34,
	0x78, 0x43, 0x45, 0xff, 0x20, 0xa0, 0x7b, 0x70, 0x27, 0xeb, 0x5f, 0x55, 0x6a, 0x9a, 0x3a, 0x26,
	0x4f, 0x31, 0x31, 0x31, 0x21, 0x1a, 0x11, 0xff, 0x35, 0x8b, 0x61, 0xaa, 0x4b, 0xa1, 0x43, 0xa0,
	0x91, 0x88, 0x65, 0xf1, 0xdf, 0x84, 0x9c, 0xf8, 0x3e, 0x94, 0x0c, 0xfc, 0x4c, 0x3a, 0x11, 0xff,
	0x3d, 0x6b, 0x09, 0xd5, 0xad, 0x34, 0x70, 0x6a, 0x72, 0xfe, 0x23, 0xdb, 0x05, 0x6f, 0x1d, 0x87,
	0xc9, 0x7f, 0x66, 0x4d, 0x7d, 0x8a, 0x09, 0x03, 0x0b, 0x83, 0x5d, 0x04, 0x58, 0xf1, 0xbf, 0x84,
	0x6c, 0x9e, 0xc2, 0xba, 0x2e, 0x1d, 0xe2, 0x44, 0x58, 0x7c, 0x7f, 0x29, 0x03, 0xf8, 0xc3, 0xa6,
	0xb6, 0x2f, 0x35, 0x43, 0xff, 0xe2, 0xa7, 0x98, 0x9c, 0x3c, 0x63, 0xce, 0xf9, 0x93, 0x52, 0x26,
	0xfc, 0xb9, 0x9c, 0x8c, 0x1b, 0x4d, 0x45, 0xc5, 0xe2, 0x9f, 0x96, 0xd0, 0x2e, 0x3c, 0xc8, 0xe1,
	0xa7, 0x50, 0x64, 0x4a, 0x2a, 0xd7, 0xf7, 0x67, 0xa5, 0xcc, 0x08, 0xb8, 0x7c, 0x26, 0xab, 0xfc,
	0x45, 0x69, 0xe7, 0x25, 0x7f, 0x8a, 0x18, 0x9d, 0xe1, 0xf0, 0xf5, 0x86, 0x41, 0x95, 0x8e, 0x93,
	0xa6, 0x18, 0x6d, 0xbc, 0xde, 0x8c, 0xe9, 0x6d, 0xb9, 0x25, 0x16, 0x26, 0xc9, 0x46, 0xa3, 0x25,
	0x16, 0x73, 0xc8, 0x4d, 0x5d, 0x14, 0x76, 0x54, 0x10, 0xb3, 0x1b, 0x34, 0x84, 0x60, 0x8d, 0x8a,
	0xaa, 0x9a, 0x79, 0x84, 0x25, 0x19, 0x13, 0x3d, 0x7c, 0xa2, 0x46, 0x69, 0xcf, 0x63, 0x52, 0x01,
	0x6d, 0x86, 0xd9, 0x89, 0x86, 0x51, 0x44, 0x2c, 0xee, 0x78, 0xcc, 0xd8, 0xcc, 0xde, 0x07, 0xdd,
	0x0c, 0x3d, 0x19, 0xe6, 0x13, 0xac, 0x36, 0xc8, 0x49, 0xcb, 0x30, 0x65, 0x45, 0x67, 0x43, 0xbe,
	0x82, 0xae, 0x87, 0x0b, 0x40, 0x9a, 0xcd, 0xf2, 0xb0, 0x58, 0xc8, 0x6f, 0xcb, 0x73, 0x84, 0x58,
	0xdc, 0x79, 0xcd, 0x0c, 0x1b, 0xd7, 0x3f, 0x6c, 0xa0, 0x8d, 0x68, 0x3d, 0xa5, 0xb1, 0x46, 0x97,
	0xdb, 0x2b, 0xa8, 0x06, 0xdb, 0x94, 0xdc, 0x92, 0x88, 0xa1, 0x34, 0x94, 0x96, 0xa4, 0x1a, 0xe6,
	0xb7, 0x6b, 0x8a, 0x8a, 0x65, 0xb1, 0x80, 0xd6, 0x00, 0x28, 0x8f, 0xe6, 0x81, 0xa7, 0x58, 0x2c,
	0xa2, 0x2d, 0x10, 0xe9, 0xb7, 0xac, 0xe8, 0x0d, 0x4d, 0x55, 0xc3, 0x70, 0x17, 0xd0, 0x2a, 0x2c,
	0x53, 0x6a, 0x18, 0x14, 0xa5, 0x9d, 0x07, 0x00, 0xe3, 0xaa, 0x0f, 0x95, 0xa1, 0xa4, 0xd2, 0xfc,
	0xcc, 0x3c, 0xf5, 0x84, 0x28, 0x7a, 0xcb, 0xc4, 0x2a, 0x1d, 0x9e, 0x2c, 0x16, 0x76, 0x0e, 0x98,
	0x93, 0x53, 0x25, 0x1e, 0x5a, 0x87, 0x8a, 0xde, 0x90, 0x13, 0xe5, 0x03, 0x27, 0x8c, 0x9f, 0x00,
	0x8a, 0xb0, 0x42, 0x09, 0xe3, 0x07, 0x80, 0x7b, 0xbf, 0xbf, 0x0c, 0x82, 0xae, 0xb4, 0x50, 0x0b,
	0x56, 0x92, 0xd7, 0xc2, 0x68, 0x7c, 0x84, 0x99, 0x73, 0xe3, 0x5c, 0xbb, 0x39, 0x85, 0x1b, 0x1e,
	0x87, 0xd6, 0x85, 0x1f, 0x28, 0x16, 0xd0, 0x97, 0x12, 0xcf, 0x9b, 0x93, 0x57, 0xae, 0xe8, 0xde,
	0xe4, 0xe1, 0x40, 0xce, 0x0d, 0x72, 0x6d, 0xe6, 0x9d, 0x2d, 0x32, 0x61, 0x3b, 0xff, 0x65, 0x10,
	0xfa, 0x60, 0x52, 0x7d, 0xde, 0x7d, 0x6e, 0x6d, 0xf6, 0x05, 0x2a, 0xfa, 0x0e, 0x40, 0x93, 0x2f,
	0x0a, 0xd0, 0xf8, 0x22, 0x6e, 0xea, 0x6b, 0x85, 0xda, 0xdd, 0x99, 0x32, 0xfc, 0xc4, 0xf8, 0xbb,
	0x60, 0x33, 0xe7, 0x79, 0x00, 0xca, 0xb6, 0xcd, 0xb5, 0xfc, 0xfd, 0xd9, 0x42, 0xe3, 0x1e, 0x72,
	0x6e, 0xc8, 0x13, 0x3d, 0x4c, 0xbf, 0xbd, 0x4f, 0xf4, 0x30, 0xeb, 0x92, 0xbd, 0x13, 0x3f, 0x25,
	0x48, 0x0f, 0x62, 0xa2, 0x75, 0xee, 0x28, 0xee, 0x5d, 0x20, 0xc5, 0x3b, 0x39, 0x84, 0xb5, 0xf4,
	0x0d, 0x36, 0x1a, 0x5f, 0x58, 0xe6, 0x5e, 0x6d, 0xd7, 0xf2, 0x9f, 0x2e, 0xa4, 0xf0, 0x98, 0xba,
	0xd2, 0xbd, 0x37, 0xd7, 0xed, 0x5d, 0x6d, 0xe6, 0xa1, 0x7e, 0xc2, 0xdb, 0x29, 0xdd, 0x13, 0xde,
	0xce, 0xd3, 0xfc, 0xfe, 0x6c, 0x21, 0xee, 0x88, 0x2f, 0x25, 0xae, 0xf2, 0xa7, 0xd8, 0x3f, 0xeb,
	0x3e, 0xe1, 0x02, 0xfb, 0x4f, 0x60, 0x2b, 0xef, 0xa8, 0x2e, 0x31, 0x97, 0x33, 0x4e, 0xf2, 0x6a,
	0xa9, 0x53, 0xaa, 0xec, 0x39, 0xce, 0x73, 0xd8, 0xce, 0x3f, 0x60, 0x48, 0x84, 0xea, 0xcc, 0x13,
	0x88, 0xda, 0xf6, 0xc4, 0x79, 0x1b, 0xee, 0x0d, 0x82, 0x37, 0xfb, 0x07, 0x5f, 0xbc, 0x7b, 0xe6,
	0x06, 0xe7, 0xa3, 0x17, 0xbb, 0x1d, 0xaf, 0xf7, 0x90, 0xeb, 0x0a, 0xff, 0xe8, 0xd1, 0xf1, 0xba,
	0x11, 0xe1, 0xd7, 0x8a, 0xab, 0x4d, 0xf7, 0x95, 0xf3, 0xc4, 0x0d, 0x76, 0x5b, 0x94, 0xf5, 0x8f,
	0xc5, 0x35, 0xfe, 0xfd, 0xf8, 0x31, 0x23, 0xbc, 0x58, 0x64, 0x4d, 0x1e, 0xfd, 0x77, 0x00, 0x00,
	0x00, 0xff, 0xff, 0x2b, 0xc5, 0x59, 0xc0, 0x67, 0x32, 0x00, 0x00,
}
