types

package
v0.1.0-mage.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2022 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Overview

Package types is a reverse proxy.

It translates gRPC into RESTful JSON APIs.

Index

Constants

View Source
const (
	AttributeValueFundCommunityPool = "fund_community_pool"
	AttributeValueCategory          = ModuleName
)

Community module event types

View Source
const (
	// module name
	ModuleName = "community"

	// ModuleAccountName is the name of the module's account
	ModuleAccountName = ModuleName

	// RouterKey is the top-level router key for the module
	RouterKey = ModuleName

	// Query endpoints supported by community
	QueryBalance = "balance"
)
View Source
const (
	// ProposalTypeCommunityPoolLendDeposit defines the type for a CommunityPoolLendDepositProposal
	ProposalTypeCommunityPoolLendDeposit = "CommunityPoolLendDeposit"
	// ProposalTypeCommunityPoolLendWithdraw defines the type for a CommunityPoolLendDepositProposal
	ProposalTypeCommunityPoolLendWithdraw = "CommunityPoolLendWithdraw"
)

Variables

View Source
var (
	ErrInvalidLengthProposal        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowProposal          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupProposal = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthQuery        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowQuery          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthTx        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTx          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ModuleCdc = codec.NewAminoCodec(amino)
)

Functions

func RegisterInterfaces

func RegisterInterfaces(registry types.InterfaceRegistry)

RegisterInterfaces registers proto messages under their interfaces for unmarshalling, in addition to registering the msg service for handling tx msgs.

func RegisterLegacyAminoCodec

func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)

RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module.

func RegisterMsgServer

func RegisterMsgServer(s grpc1.Server, srv MsgServer)

func RegisterQueryHandler

func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error

RegisterQueryHandler registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over "conn".

func RegisterQueryHandlerClient

func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error

RegisterQueryHandlerClient registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "QueryClient" to call the correct interceptors.

func RegisterQueryHandlerFromEndpoint

func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)

RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.

func RegisterQueryHandlerServer

func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error

RegisterQueryHandlerServer registers the http handlers for service Query to "mux". UnaryRPC :call QueryServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.

func RegisterQueryServer

func RegisterQueryServer(s grpc1.Server, srv QueryServer)

Types

type AccountKeeper

type AccountKeeper interface {
	GetModuleAccount(ctx sdk.Context, moduleName string) authtypes.ModuleAccountI
	GetModuleAddress(name string) sdk.AccAddress
}

AccountKeeper defines the contract required for account APIs.

type BankKeeper

type BankKeeper interface {
	GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins

	SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
	SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
}

BankKeeper defines the contract needed to be fulfilled for banking dependencies.

type CommunityPoolLendDepositProposal

type CommunityPoolLendDepositProposal struct {
	Title       string                                   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Description string                                   `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Amount      github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"`
}

CommunityPoolLendDepositProposal deposits from the community pool into lend

func NewCommunityPoolLendDepositProposal

func NewCommunityPoolLendDepositProposal(title, description string, amount sdk.Coins) *CommunityPoolLendDepositProposal

NewCommunityPoolLendDepositProposal creates a new community pool deposit proposal.

func (*CommunityPoolLendDepositProposal) Descriptor

func (*CommunityPoolLendDepositProposal) Descriptor() ([]byte, []int)

func (*CommunityPoolLendDepositProposal) GetDescription

func (p *CommunityPoolLendDepositProposal) GetDescription() string

GetDescription returns the description of a community pool lend deposit proposal.

func (*CommunityPoolLendDepositProposal) GetTitle

GetTitle returns the title of a community pool lend deposit proposal.

func (*CommunityPoolLendDepositProposal) Marshal

func (m *CommunityPoolLendDepositProposal) Marshal() (dAtA []byte, err error)

func (*CommunityPoolLendDepositProposal) MarshalTo

func (m *CommunityPoolLendDepositProposal) MarshalTo(dAtA []byte) (int, error)

func (*CommunityPoolLendDepositProposal) MarshalToSizedBuffer

func (m *CommunityPoolLendDepositProposal) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*CommunityPoolLendDepositProposal) ProposalRoute

func (p *CommunityPoolLendDepositProposal) ProposalRoute() string

GetDescription returns the routing key of a community pool lend deposit proposal.

func (*CommunityPoolLendDepositProposal) ProposalType

func (p *CommunityPoolLendDepositProposal) ProposalType() string

ProposalType returns the type of a community pool lend deposit proposal.

func (*CommunityPoolLendDepositProposal) ProtoMessage

func (*CommunityPoolLendDepositProposal) ProtoMessage()

func (*CommunityPoolLendDepositProposal) Reset

func (*CommunityPoolLendDepositProposal) Size

func (m *CommunityPoolLendDepositProposal) Size() (n int)

func (*CommunityPoolLendDepositProposal) String

String implements fmt.Stringer

func (*CommunityPoolLendDepositProposal) Unmarshal

func (m *CommunityPoolLendDepositProposal) Unmarshal(dAtA []byte) error

func (*CommunityPoolLendDepositProposal) ValidateBasic

func (p *CommunityPoolLendDepositProposal) ValidateBasic() error

ValidateBasic stateless validation of a community pool lend deposit proposal.

func (*CommunityPoolLendDepositProposal) XXX_DiscardUnknown

func (m *CommunityPoolLendDepositProposal) XXX_DiscardUnknown()

func (*CommunityPoolLendDepositProposal) XXX_Marshal

func (m *CommunityPoolLendDepositProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CommunityPoolLendDepositProposal) XXX_Merge

func (*CommunityPoolLendDepositProposal) XXX_Size

func (m *CommunityPoolLendDepositProposal) XXX_Size() int

func (*CommunityPoolLendDepositProposal) XXX_Unmarshal

func (m *CommunityPoolLendDepositProposal) XXX_Unmarshal(b []byte) error

type CommunityPoolLendWithdrawProposal

type CommunityPoolLendWithdrawProposal struct {
	Title       string                                   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Description string                                   `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Amount      github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"`
}

CommunityPoolLendWithdrawProposal withdraws a lend position back to the community pool

func NewCommunityPoolLendWithdrawProposal

func NewCommunityPoolLendWithdrawProposal(title, description string, amount sdk.Coins) *CommunityPoolLendWithdrawProposal

NewCommunityPoolLendWithdrawProposal creates a new community pool lend withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) Descriptor

func (*CommunityPoolLendWithdrawProposal) Descriptor() ([]byte, []int)

func (*CommunityPoolLendWithdrawProposal) GetDescription

func (p *CommunityPoolLendWithdrawProposal) GetDescription() string

GetDescription returns the description of a community pool withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) GetTitle

GetTitle returns the title of a community pool withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) Marshal

func (m *CommunityPoolLendWithdrawProposal) Marshal() (dAtA []byte, err error)

func (*CommunityPoolLendWithdrawProposal) MarshalTo

func (m *CommunityPoolLendWithdrawProposal) MarshalTo(dAtA []byte) (int, error)

func (*CommunityPoolLendWithdrawProposal) MarshalToSizedBuffer

func (m *CommunityPoolLendWithdrawProposal) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*CommunityPoolLendWithdrawProposal) ProposalRoute

func (p *CommunityPoolLendWithdrawProposal) ProposalRoute() string

GetDescription returns the routing key of a community pool withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) ProposalType

func (p *CommunityPoolLendWithdrawProposal) ProposalType() string

ProposalType returns the type of a community pool withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) ProtoMessage

func (*CommunityPoolLendWithdrawProposal) ProtoMessage()

func (*CommunityPoolLendWithdrawProposal) Reset

func (*CommunityPoolLendWithdrawProposal) Size

func (m *CommunityPoolLendWithdrawProposal) Size() (n int)

func (*CommunityPoolLendWithdrawProposal) String

String implements fmt.Stringer

func (*CommunityPoolLendWithdrawProposal) Unmarshal

func (m *CommunityPoolLendWithdrawProposal) Unmarshal(dAtA []byte) error

func (*CommunityPoolLendWithdrawProposal) ValidateBasic

func (p *CommunityPoolLendWithdrawProposal) ValidateBasic() error

ValidateBasic stateless validation of a community pool withdraw proposal.

func (*CommunityPoolLendWithdrawProposal) XXX_DiscardUnknown

func (m *CommunityPoolLendWithdrawProposal) XXX_DiscardUnknown()

func (*CommunityPoolLendWithdrawProposal) XXX_Marshal

func (m *CommunityPoolLendWithdrawProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CommunityPoolLendWithdrawProposal) XXX_Merge

func (*CommunityPoolLendWithdrawProposal) XXX_Size

func (m *CommunityPoolLendWithdrawProposal) XXX_Size() int

func (*CommunityPoolLendWithdrawProposal) XXX_Unmarshal

func (m *CommunityPoolLendWithdrawProposal) XXX_Unmarshal(b []byte) error

type HardKeeper

type HardKeeper interface {
	Deposit(ctx sdk.Context, depositor sdk.AccAddress, coins sdk.Coins) error
	Withdraw(ctx sdk.Context, depositor sdk.AccAddress, coins sdk.Coins) error
}

HardKeeper defines the contract needed to be fulfilled for Mage Lend dependencies.

type MsgClient

type MsgClient interface {
	// FundCommunityPool defines a method to allow an account to directly fund the community module account.
	FundCommunityPool(ctx context.Context, in *MsgFundCommunityPool, opts ...grpc.CallOption) (*MsgFundCommunityPoolResponse, error)
}

MsgClient is the client API for Msg service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewMsgClient

func NewMsgClient(cc grpc1.ClientConn) MsgClient

type MsgFundCommunityPool

type MsgFundCommunityPool struct {
	Amount    github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"`
	Depositor string                                   `protobuf:"bytes,2,opt,name=depositor,proto3" json:"depositor,omitempty"`
}

MsgFundCommunityPool allows an account to directly fund the community module account.

func NewMsgFundCommunityPool

func NewMsgFundCommunityPool(depositor sdk.AccAddress, amount sdk.Coins) MsgFundCommunityPool

NewMsgFundCommunityPool returns a new MsgFundCommunityPool

func (*MsgFundCommunityPool) Descriptor

func (*MsgFundCommunityPool) Descriptor() ([]byte, []int)

func (*MsgFundCommunityPool) Equal

func (this *MsgFundCommunityPool) Equal(that interface{}) bool

func (MsgFundCommunityPool) GetSignBytes

func (msg MsgFundCommunityPool) GetSignBytes() []byte

GetSignBytes gets the canonical byte representation of the Msg.

func (MsgFundCommunityPool) GetSigners

func (msg MsgFundCommunityPool) GetSigners() []sdk.AccAddress

GetSigners returns the addresses of signers that must sign.

func (*MsgFundCommunityPool) Marshal

func (m *MsgFundCommunityPool) Marshal() (dAtA []byte, err error)

func (*MsgFundCommunityPool) MarshalTo

func (m *MsgFundCommunityPool) MarshalTo(dAtA []byte) (int, error)

func (*MsgFundCommunityPool) MarshalToSizedBuffer

func (m *MsgFundCommunityPool) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgFundCommunityPool) ProtoMessage

func (*MsgFundCommunityPool) ProtoMessage()

func (*MsgFundCommunityPool) Reset

func (m *MsgFundCommunityPool) Reset()

func (MsgFundCommunityPool) Route

func (msg MsgFundCommunityPool) Route() string

Route return the message type used for routing the message.

func (*MsgFundCommunityPool) Size

func (m *MsgFundCommunityPool) Size() (n int)

func (*MsgFundCommunityPool) String

func (m *MsgFundCommunityPool) String() string

func (MsgFundCommunityPool) Type

func (msg MsgFundCommunityPool) Type() string

Type returns a human-readable string for the message, intended for utilization within tags.

func (*MsgFundCommunityPool) Unmarshal

func (m *MsgFundCommunityPool) Unmarshal(dAtA []byte) error

func (MsgFundCommunityPool) ValidateBasic

func (msg MsgFundCommunityPool) ValidateBasic() error

ValidateBasic does a simple validation check that doesn't require access to any other information.

func (*MsgFundCommunityPool) XXX_DiscardUnknown

func (m *MsgFundCommunityPool) XXX_DiscardUnknown()

func (*MsgFundCommunityPool) XXX_Marshal

func (m *MsgFundCommunityPool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgFundCommunityPool) XXX_Merge

func (m *MsgFundCommunityPool) XXX_Merge(src proto.Message)

func (*MsgFundCommunityPool) XXX_Size

func (m *MsgFundCommunityPool) XXX_Size() int

func (*MsgFundCommunityPool) XXX_Unmarshal

func (m *MsgFundCommunityPool) XXX_Unmarshal(b []byte) error

type MsgFundCommunityPoolResponse

type MsgFundCommunityPoolResponse struct {
}

MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.

func (*MsgFundCommunityPoolResponse) Descriptor

func (*MsgFundCommunityPoolResponse) Descriptor() ([]byte, []int)

func (*MsgFundCommunityPoolResponse) Equal

func (this *MsgFundCommunityPoolResponse) Equal(that interface{}) bool

func (*MsgFundCommunityPoolResponse) Marshal

func (m *MsgFundCommunityPoolResponse) Marshal() (dAtA []byte, err error)

func (*MsgFundCommunityPoolResponse) MarshalTo

func (m *MsgFundCommunityPoolResponse) MarshalTo(dAtA []byte) (int, error)

func (*MsgFundCommunityPoolResponse) MarshalToSizedBuffer

func (m *MsgFundCommunityPoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgFundCommunityPoolResponse) ProtoMessage

func (*MsgFundCommunityPoolResponse) ProtoMessage()

func (*MsgFundCommunityPoolResponse) Reset

func (m *MsgFundCommunityPoolResponse) Reset()

func (*MsgFundCommunityPoolResponse) Size

func (m *MsgFundCommunityPoolResponse) Size() (n int)

func (*MsgFundCommunityPoolResponse) String

func (*MsgFundCommunityPoolResponse) Unmarshal

func (m *MsgFundCommunityPoolResponse) Unmarshal(dAtA []byte) error

func (*MsgFundCommunityPoolResponse) XXX_DiscardUnknown

func (m *MsgFundCommunityPoolResponse) XXX_DiscardUnknown()

func (*MsgFundCommunityPoolResponse) XXX_Marshal

func (m *MsgFundCommunityPoolResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgFundCommunityPoolResponse) XXX_Merge

func (m *MsgFundCommunityPoolResponse) XXX_Merge(src proto.Message)

func (*MsgFundCommunityPoolResponse) XXX_Size

func (m *MsgFundCommunityPoolResponse) XXX_Size() int

func (*MsgFundCommunityPoolResponse) XXX_Unmarshal

func (m *MsgFundCommunityPoolResponse) XXX_Unmarshal(b []byte) error

type MsgServer

type MsgServer interface {
	// FundCommunityPool defines a method to allow an account to directly fund the community module account.
	FundCommunityPool(context.Context, *MsgFundCommunityPool) (*MsgFundCommunityPoolResponse, error)
}

MsgServer is the server API for Msg service.

type QueryBalanceRequest

type QueryBalanceRequest struct {
}

QueryBalanceRequest defines the request type for querying x/community balance.

func (*QueryBalanceRequest) Descriptor

func (*QueryBalanceRequest) Descriptor() ([]byte, []int)

func (*QueryBalanceRequest) Marshal

func (m *QueryBalanceRequest) Marshal() (dAtA []byte, err error)

func (*QueryBalanceRequest) MarshalTo

func (m *QueryBalanceRequest) MarshalTo(dAtA []byte) (int, error)

func (*QueryBalanceRequest) MarshalToSizedBuffer

func (m *QueryBalanceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryBalanceRequest) ProtoMessage

func (*QueryBalanceRequest) ProtoMessage()

func (*QueryBalanceRequest) Reset

func (m *QueryBalanceRequest) Reset()

func (*QueryBalanceRequest) Size

func (m *QueryBalanceRequest) Size() (n int)

func (*QueryBalanceRequest) String

func (m *QueryBalanceRequest) String() string

func (*QueryBalanceRequest) Unmarshal

func (m *QueryBalanceRequest) Unmarshal(dAtA []byte) error

func (*QueryBalanceRequest) XXX_DiscardUnknown

func (m *QueryBalanceRequest) XXX_DiscardUnknown()

func (*QueryBalanceRequest) XXX_Marshal

func (m *QueryBalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryBalanceRequest) XXX_Merge

func (m *QueryBalanceRequest) XXX_Merge(src proto.Message)

func (*QueryBalanceRequest) XXX_Size

func (m *QueryBalanceRequest) XXX_Size() int

func (*QueryBalanceRequest) XXX_Unmarshal

func (m *QueryBalanceRequest) XXX_Unmarshal(b []byte) error

type QueryBalanceResponse

type QueryBalanceResponse struct {
	Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"`
}

QueryBalanceResponse defines the response type for querying x/community balance.

func (*QueryBalanceResponse) Descriptor

func (*QueryBalanceResponse) Descriptor() ([]byte, []int)

func (*QueryBalanceResponse) GetCoins

func (*QueryBalanceResponse) Marshal

func (m *QueryBalanceResponse) Marshal() (dAtA []byte, err error)

func (*QueryBalanceResponse) MarshalTo

func (m *QueryBalanceResponse) MarshalTo(dAtA []byte) (int, error)

func (*QueryBalanceResponse) MarshalToSizedBuffer

func (m *QueryBalanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryBalanceResponse) ProtoMessage

func (*QueryBalanceResponse) ProtoMessage()

func (*QueryBalanceResponse) Reset

func (m *QueryBalanceResponse) Reset()

func (*QueryBalanceResponse) Size

func (m *QueryBalanceResponse) Size() (n int)

func (*QueryBalanceResponse) String

func (m *QueryBalanceResponse) String() string

func (*QueryBalanceResponse) Unmarshal

func (m *QueryBalanceResponse) Unmarshal(dAtA []byte) error

func (*QueryBalanceResponse) XXX_DiscardUnknown

func (m *QueryBalanceResponse) XXX_DiscardUnknown()

func (*QueryBalanceResponse) XXX_Marshal

func (m *QueryBalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryBalanceResponse) XXX_Merge

func (m *QueryBalanceResponse) XXX_Merge(src proto.Message)

func (*QueryBalanceResponse) XXX_Size

func (m *QueryBalanceResponse) XXX_Size() int

func (*QueryBalanceResponse) XXX_Unmarshal

func (m *QueryBalanceResponse) XXX_Unmarshal(b []byte) error

type QueryClient

type QueryClient interface {
	// Balance queries the balance of all coins of x/community module.
	Balance(ctx context.Context, in *QueryBalanceRequest, opts ...grpc.CallOption) (*QueryBalanceResponse, error)
}

QueryClient is the client API for Query service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewQueryClient

func NewQueryClient(cc grpc1.ClientConn) QueryClient

type QueryServer

type QueryServer interface {
	// Balance queries the balance of all coins of x/community module.
	Balance(context.Context, *QueryBalanceRequest) (*QueryBalanceResponse, error)
}

QueryServer is the server API for Query service.

type UnimplementedMsgServer

type UnimplementedMsgServer struct {
}

UnimplementedMsgServer can be embedded to have forward compatible implementations.

func (*UnimplementedMsgServer) FundCommunityPool

type UnimplementedQueryServer

type UnimplementedQueryServer struct {
}

UnimplementedQueryServer can be embedded to have forward compatible implementations.

func (*UnimplementedQueryServer) Balance

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL