summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchris erway <51567+cce@users.noreply.github.com>2022-02-25 11:53:09 -0500
committerGitHub <noreply@github.com>2022-02-25 11:53:09 -0500
commit6278dc182def3950d79313963fb0efa6ac1ee517 (patch)
tree1846889496b07a888d187f335edfadd41b5e3a83
parent93ab4fffa2a793a6aff2dc5b9629fd57e77d5e3b (diff)
parenta50feadae33a0b1b1ed12b1cb8c740b3a90eedd8 (diff)
Merge pull request #3679 from cce/feature/unlimited-assets-api-split-accountresource
REST API: split msgpack API type AccountResourceModel into two
-rw-r--r--cmd/goal/application.go15
-rw-r--r--cmd/goal/interact.go15
-rw-r--r--daemon/algod/api/algod.oas2.json8
-rw-r--r--daemon/algod/api/algod.oas3.yml12
-rw-r--r--daemon/algod/api/client/restClient.go14
-rw-r--r--daemon/algod/api/server/v2/generated/private/routes.go294
-rw-r--r--daemon/algod/api/server/v2/generated/routes.go390
-rw-r--r--daemon/algod/api/server/v2/handlers.go4
-rw-r--r--daemon/algod/api/spec/v2/model.go44
-rw-r--r--daemon/algod/api/spec/v2/msgp_gen.go368
-rw-r--r--daemon/algod/api/spec/v2/msgp_gen_test.go80
-rw-r--r--ledger/msgp_gen.go64
-rw-r--r--libgoal/libgoal.go4
13 files changed, 820 insertions, 492 deletions
diff --git a/cmd/goal/application.go b/cmd/goal/application.go
index 0f9553468..9769e8cb5 100644
--- a/cmd/goal/application.go
+++ b/cmd/goal/application.go
@@ -23,7 +23,9 @@ import (
"encoding/base64"
"encoding/binary"
"encoding/hex"
+ "errors"
"fmt"
+ "net/http"
"os"
"strconv"
"strings"
@@ -31,6 +33,7 @@ import (
"github.com/spf13/cobra"
"github.com/algorand/go-algorand/crypto"
+ apiclient "github.com/algorand/go-algorand/daemon/algod/api/client"
"github.com/algorand/go-algorand/data/abi"
"github.com/algorand/go-algorand/data/basics"
"github.com/algorand/go-algorand/data/transactions"
@@ -955,6 +958,14 @@ var readStateAppCmd = &cobra.Command{
// Fetching local state. Get account information
ai, err := client.RawAccountApplicationInformation(account, appIdx)
if err != nil {
+ var httpError apiclient.HTTPError
+ if errors.As(err, &httpError) && httpError.StatusCode == http.StatusNotFound {
+ reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
+ }
+ reportErrorf(errorRequestFail, err)
+ }
+
+ if ai.AppLocalState == nil {
reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
}
@@ -981,6 +992,10 @@ var readStateAppCmd = &cobra.Command{
// Get creator information
ai, err := client.RawAccountApplicationInformation(app.Params.Creator, appIdx)
if err != nil {
+ reportErrorf(errorRequestFail, err)
+ }
+
+ if ai.AppParams == nil {
reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
}
diff --git a/cmd/goal/interact.go b/cmd/goal/interact.go
index 5192984ea..6b157a50d 100644
--- a/cmd/goal/interact.go
+++ b/cmd/goal/interact.go
@@ -20,7 +20,9 @@ import (
"encoding/base32"
"encoding/base64"
"encoding/json"
+ "errors"
"fmt"
+ "net/http"
"os"
"strconv"
"strings"
@@ -28,6 +30,7 @@ import (
"github.com/spf13/cobra"
"github.com/algorand/go-algorand/crypto"
+ apiclient "github.com/algorand/go-algorand/daemon/algod/api/client"
"github.com/algorand/go-algorand/data/basics"
"github.com/algorand/go-algorand/data/transactions"
"github.com/algorand/go-algorand/data/transactions/logic"
@@ -673,6 +676,14 @@ var appQueryCmd = &cobra.Command{
// Fetching local state. Get account information
ai, err := client.RawAccountApplicationInformation(account, appIdx)
if err != nil {
+ var httpError apiclient.HTTPError
+ if errors.As(err, &httpError) && httpError.StatusCode == http.StatusNotFound {
+ reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
+ }
+ reportErrorf(errorRequestFail, err)
+ }
+
+ if ai.AppLocalState == nil {
reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
}
@@ -690,6 +701,10 @@ var appQueryCmd = &cobra.Command{
// Get creator information
ai, err := client.RawAccountApplicationInformation(app.Params.Creator, appIdx)
if err != nil {
+ reportErrorf(errorRequestFail, err)
+ }
+
+ if ai.AppParams == nil {
reportErrorf(errorAccountNotOptedInToApp, account, appIdx)
}
diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json
index 6743c5ebe..2e85ac9ab 100644
--- a/daemon/algod/api/algod.oas2.json
+++ b/daemon/algod/api/algod.oas2.json
@@ -226,7 +226,7 @@
},
"/v2/accounts/{address}/assets/{asset-id}": {
"get": {
- "description": "Given a specific account public key, this call returns the account's asset holding and asset params (if they exist) about a given asset ID",
+ "description": "Given a specific account public key and asset ID, this call returns the account's asset holding and asset parameters (if either exist). Asset parameters will only be returned if the provided address is the asset's creator.",
"produces": [
"application/json",
"application/msgpack"
@@ -303,7 +303,7 @@
},
"/v2/accounts/{address}/applications/{application-id}": {
"get": {
- "description": "Given a specific account public key, this call returns the account's application local state and application params (if they exist) about a given application ID",
+ "description": "Given a specific account public key and application ID, this call returns the account's application local state and global state (AppLocalState and AppParams, if either exists). Global state will only be returned if the provided address is the application's creator.",
"produces": [
"application/json",
"application/msgpack"
@@ -2676,7 +2676,7 @@
}
},
"AccountAssetResponse": {
- "description": "AccountAssetResponse describes the asset data for a specific account and asset ID.",
+ "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator.",
"schema": {
"type": "object",
"required": [
@@ -2699,7 +2699,7 @@
}
},
"AccountApplicationResponse": {
- "description": "AccountApplicationResponse describes the application data for a specific account and application ID.",
+ "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator.",
"schema": {
"type": "object",
"required": [
diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml
index e00bd752a..c2617a144 100644
--- a/daemon/algod/api/algod.oas3.yml
+++ b/daemon/algod/api/algod.oas3.yml
@@ -246,7 +246,7 @@
}
}
},
- "description": "AccountApplicationResponse describes the application data for a specific account and application ID."
+ "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator."
},
"AccountAssetResponse": {
"content": {
@@ -271,7 +271,7 @@
}
}
},
- "description": "AccountAssetResponse describes the asset data for a specific account and asset ID."
+ "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator."
},
"AccountResponse": {
"content": {
@@ -1870,7 +1870,7 @@
},
"/v2/accounts/{address}/applications/{application-id}": {
"get": {
- "description": "Given a specific account public key, this call returns the account's application local state and application params (if they exist) about a given application ID",
+ "description": "Given a specific account public key and application ID, this call returns the account's application local state and global state (AppLocalState and AppParams, if either exists). Global state will only be returned if the provided address is the application's creator.",
"operationId": "AccountApplicationInformation",
"parameters": [
{
@@ -1949,7 +1949,7 @@
}
}
},
- "description": "AccountApplicationResponse describes the application data for a specific account and application ID."
+ "description": "AccountApplicationResponse describes the account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator."
},
"400": {
"content": {
@@ -2006,7 +2006,7 @@
},
"/v2/accounts/{address}/assets/{asset-id}": {
"get": {
- "description": "Given a specific account public key, this call returns the account's asset holding and asset params (if they exist) about a given asset ID",
+ "description": "Given a specific account public key and asset ID, this call returns the account's asset holding and asset parameters (if either exist). Asset parameters will only be returned if the provided address is the asset's creator.",
"operationId": "AccountAssetInformation",
"parameters": [
{
@@ -2085,7 +2085,7 @@
}
}
},
- "description": "AccountAssetResponse describes the asset data for a specific account and asset ID."
+ "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator."
},
"400": {
"content": {
diff --git a/daemon/algod/api/client/restClient.go b/daemon/algod/api/client/restClient.go
index e9852e7aa..7f8b2d412 100644
--- a/daemon/algod/api/client/restClient.go
+++ b/daemon/algod/api/client/restClient.go
@@ -78,6 +78,18 @@ func (e unauthorizedRequestError) Error() string {
return fmt.Sprintf("Unauthorized request to `%s` when using token `%s` : %s", e.url, e.apiToken, e.errorString)
}
+// HTTPError is generated when we receive an unhandled error from the server. This error contains the error string.
+type HTTPError struct {
+ StatusCode int
+ Status string
+ ErrorString string
+}
+
+// Error formats an error string.
+func (e HTTPError) Error() string {
+ return fmt.Sprintf("HTTP %s: %s", e.Status, e.ErrorString)
+}
+
// RestClient manages the REST interface for a calling user.
type RestClient struct {
serverURL url.URL
@@ -131,7 +143,7 @@ func extractError(resp *http.Response) error {
return unauthorizedRequestError{errorString, apiToken, resp.Request.URL.String()}
}
- return fmt.Errorf("HTTP %s: %s", resp.Status, errorString)
+ return HTTPError{StatusCode: resp.StatusCode, Status: resp.Status, ErrorString: errorString}
}
// stripTransaction gets a transaction of the form "tx-XXXXXXXX" and truncates the "tx-" part, if it starts with "tx-"
diff --git a/daemon/algod/api/server/v2/generated/private/routes.go b/daemon/algod/api/server/v2/generated/private/routes.go
index 8becf9d34..b0da1ad54 100644
--- a/daemon/algod/api/server/v2/generated/private/routes.go
+++ b/daemon/algod/api/server/v2/generated/private/routes.go
@@ -311,152 +311,154 @@ func RegisterHandlers(router interface {
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
- "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",
+ "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",
+ "iJIpWb2xAAA=",
}
// GetSwagger returns the Swagger specification corresponding to the generated code
diff --git a/daemon/algod/api/server/v2/generated/routes.go b/daemon/algod/api/server/v2/generated/routes.go
index 03802f9ea..205900044 100644
--- a/daemon/algod/api/server/v2/generated/routes.go
+++ b/daemon/algod/api/server/v2/generated/routes.go
@@ -737,200 +737,202 @@ func RegisterHandlers(router interface {
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
- "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",
- "LpdSsnPMSvnh8v8FAAD//6WlkWzfDwEA",
+ "H4sIAAAAAAAC/+y9e3fcNpIo/lXw691zbGubLfmVGeucnP0pdh7asR0fS5md3cg3QZPV3RiRAAcApe74",
+ "+rvfgwJAgiTYTT1sx4n+stXEo1AoFAr1fD9JRVEKDlyryeH7SUklLUCDxL9omoqK64Rl5q8MVCpZqZng",
+ "k0P/jSgtGV9OphNmfi2pXk2mE04LaNqY/tOJhH9VTEI2OdSygulEpSsoqBlYb0rTuh5pnSxF4oY4skMc",
+ "v5h82PKBZpkEpfpQ/sjzDWE8zasMiJaUK5qaT4pcMr0iesUUcZ0J40RwIGJB9KrVmCwY5Jma+UX+qwK5",
+ "CVbpJh9e0ocGxESKHPpwPhfFnHHwUEENVL0hRAuSwQIbragmZgYDq2+oBVFAZboiCyF3gGqBCOEFXhWT",
+ "w58nCngGEncrBXaB/11IgN8g0VQuQU/eTWOLW2iQiWZFZGnHDvsSVJVrRbAtrnHJLoAT02tGXlVKkzkQ",
+ "ysnb756Tx48fPzMLKajWkDkiG1xVM3u4Jtt9cjjJqAb/uU9rNF8KSXmW1O3ffvcc5z9xCxzbiioF8cNy",
+ "ZL6Q4xdDC/AdIyTEuIYl7kOL+k2PyKFofp7DQkgYuSe28a1uSjj/Z92VlOp0VQrGdWRfCH4l9nOUhwXd",
+ "t/GwGoBW+9JgSppBfz5Inr17/3D68ODDv/18lPyv+/Pp4w8jl/+8HncHBqIN00pK4OkmWUqgeFpWlPfx",
+ "8dbRg1qJKs/Iil7g5tMCWb3rS0xfyzovaF4ZOmGpFEf5UihCHRllsKBVromfmFQ8N2zKjOaonTBFSiku",
+ "WAbZ1HDfyxVLVySlyg6B7cgly3NDg5WCbIjW4qvbcpg+hCgxcF0LH7ig3y8ymnXtwASskRskaS4UJFrs",
+ "uJ78jUN5RsILpbmr1NUuK3K6AoKTmw/2skXccUPTeb4hGvc1I1QRSvzVNCVsQTaiIpe4OTk7x/5uNQZr",
+ "BTFIw81p3aPm8A6hr4eMCPLmQuRAOSLPn7s+yviCLSsJilyuQK/cnSdBlYIrIGL+T0i12fb/OvnxNRGS",
+ "vAKl6BLe0PScAE9FNrzHbtLYDf5PJcyGF2pZ0vQ8fl3nrGARkF/RNSuqgvCqmIM0++XvBy2IBF1JPgSQ",
+ "HXEHnRV03Z/0VFY8xc1tpm0JaoaUmCpzupmR4wUp6Prrg6kDRxGa56QEnjG+JHrNB4U0M/du8BIpKp6N",
+ "kGG02bDg1lQlpGzBICP1KFsgcdPsgofxq8HTSFYBOH6QQXDqWXaAw2EdoRlzdM0XUtIlBCQzIz85zoVf",
+ "tTgHXjM4Mt/gp1LCBROVqjsNwIhTbxevudCQlBIWLEJjJw4dhnvYNo69Fk7ASQXXlHHIDOdFoIUGy4kG",
+ "YQom3P6Y6V/Rc6rgqydDF3jzdeTuL0R317fu+KjdxkaJPZKRe9F8dQc2Lja1+o94/IVzK7ZM7M+9jWTL",
+ "U3OVLFiO18w/zf55NFQKmUALEf7iUWzJqa4kHJ7xPfMXSciJpjyjMjO/FPanV1Wu2Qlbmp9y+9NLsWTp",
+ "CVsOILOGNfqawm6F/ceMF2fHeh19NLwU4rwqwwWlrVfpfEOOXwxtsh3zqoR5VD9lw1fF6dq/NK7aQ6/r",
+ "jRwAchB3JTUNz2EjwUBL0wX+s14gPdGF/M38U5Z5DKeGgN1Fi0oBpyw4KsucpdRg7637bL6a0w/2eUCb",
+ "Fvt4kx6+D2ArpShBamYHpWWZ5CKleaI01TjSv0tYTA4n/7bfaFX2bXe1H0z+0vQ6wU5GELXCTULL8gpj",
+ "vDECjdrCJQxnxk/IHyy/Q1GIcbt7hoaY4b05XFCuZ81DpMUI6pP7s5upwbeVYSy+Ow+rQYQT23AOysq1",
+ "tuE9RQLUE0QrQbSimLnMxbz+4f5RWTYYxO9HZWnxgTIhMBS3YM2UVg9w+bQ5QuE8xy9m5PtwbBSwBc83",
+ "5lawMoa5FBbuunLXV60xcmtoRrynCG6nkDOzNR4NRni/DYrDx8JK5Ebc2UkrpvEPrm1IZub3UZ2/DBIL",
+ "cTtMXPh8cpizLxf8JXiy3O9QTp9wnBJnRo66fa9HNmaUOMFci1a27qcddwseaxReSlpaAN0Xe4kyjk8v",
+ "28jCekNuOpLRRWEOznBAawjVtc/azvMQhQRJoQPDN7lIz2/hvM/NOP1jh8OTFdAMJMmopsG5cuclfllj",
+ "xx+wH3IEkBGJ/kf8D82J+WwI3/BFO6x5qTOkXxHo1TPzwLVis53JNMCHtyCFfdMS8xa9EpTPm8l7PMKi",
+ "ZQyP+NY+own28IswS2+UZEdzIa9HLx1C4KRR/RFqRg2Oy7Szs9i0KhOHn4j6wDboDNRYW/pSZIih7vAx",
+ "XLWwcKLpR8CCMqPeBhbaA902FkRRshxu4byuqFr1F2Hec48fkZMfjp4+fPTLo6dfmQdJKcVS0oLMNxoU",
+ "ue/EaKL0JocH/ZWhPFvlOj76V0+8wqg97k4MIcD12GNO1CkYzmAxRqx61ED3Qm5kdRtCNUgpZOSJj6Sj",
+ "RSry5AKkYiKirX3jWhDXwl+0Zfd3Cy25pIqYuVH7VPEM5CyGeb3mCBrTUKhdF4Ud+nTNG9y4AamUdNPb",
+ "AbveyOrcvGP2pI18r8xQpASZ6DUnGcyrZUsmW0hREEoy7IgM8bXIwMjTlboFLtAM1gBjNiIEgc5FpQkl",
+ "XGSAwnel4vxhwHSDOmNUdeuQ5eiVvX/mYAS9lFbLlSbmFS1iW9t0TGhqNyXBu0INaLpqFaVtZaezZoFc",
+ "As2MAAiciLlTJzlFFy6SohZaewOz404RkbgFVylFCkoZwd2KYztB8+3sLusteELAEeB6FqIEWVB5TWC1",
+ "0DTfASi2iYFbixNOB9eHetz02zawO3m4jVQa2d1SgZFdzOnOQcMQCkfi5AIk6qI+6v75Sa67fVU5YCl2",
+ "N/ApK/AJwCkXClLBMxUdLKdKJ7uOrWnUEhPMCoKTEjupOPDAM/QlVdpqJBnPUGS07Abnse9TM8UwwIM3",
+ "ihn57/4y6Y+dGj7JVaXqm0VVZSmkhiy2Bg7rLXO9hnU9l1gEY9fXlxakUrBr5CEsBeM7ZNmVWARRXb/f",
+ "ncq+vzh85Zp7YBNFZQuIBhHbADnxrQLshtayAUDM+6LuiYTDVIdyahPddKK0KEtz/nRS8brfEJpObOsj",
+ "/VPTtk9cVDd8PRNgZtceJgf5pcWstZOuqJHtcGRS0HNzN6GkZlWnfZjNYUwU4ykk2yjfHMsT0yo8AjsO",
+ "6YCQ7Dwxgtk6h6NDv1GiGySCHbswtOABif0NlZqlrERJ4m+wufXnfneC6MufZKApyyEjwQdk4Mh76/7E",
+ "6sK7Y15P0BolhPbB70mhkeXkTOGF0Qb+HDaoAnxjjayngWn2FiTFyKjmdFNOEFBvujEXctgE1jTV+cZc",
+ "c3oFG3IJEoiq5gXT2lrN24KkFmUSDhB9uG6Z0akOrIHS78AYXcYJDhUsr78V04kVW7bDd9oRXFrocAJT",
+ "KUQ+QsXaQ0YUglEqWFIKs+vMOWl4S76npBaQTohBvVHNPO+pFppxBeR/REVSylEAqzTUN4KQyGbx+jUz",
+ "mAusntMpWxsMQQ4FWLkSv+ztdRe+t+f2nCmygEvv2WQadtGxt4evpDdC6dbhuoUXrzluxxHeji96c1E4",
+ "Ga7LU2Y7X/du5DE7+aYzuJ8Uz5RSjnDN8m/MADoncz1m7SGNrKha7V47jjtKoREMHVu33XcpxOKWFERx",
+ "yzY+Tpyx2rQii4pboCrlniNov/EKDbGY1t4L1mvZWrarAnvj/1fUKZwm08YkbRuYC7n5/C4iUrJsHfM8",
+ "yGAd2xR3xvA5dc+8PTYKouYe5MxiEXE+Anmeu6V1eAcpwBxqtWKlGbJxlNhoaDlZ/p/7/3n481HyvzT5",
+ "7SB59h/7794/+fBgr/fjow9ff/1/2z89/vD1g//895horTSbx/V6PxhEiwVxPH7Nj7nVzC+EtA+yjZPz",
+ "xOLTw60lQAalXsW8GksJCnmj9U4s9arZVICOEqWU4gL4lLAZzLo8NluC8tqkHOgCvevwUSHGWPvq82Dp",
+ "zRNHgPVwIaMYWYx+0HaFtImn2bw68s0tSC92ICLb+PSvdWW/ikXoEuoOitooDUVf4WW7/jIg7r/1wnLv",
+ "UAmeMw5JIThsolEQjMMr/Bjrbe+7gc4oeQz17T4mWvB3wGrPM2Yzb4pf3O2Awb+pLba3sPndcTu6ztAZ",
+ "FnU1kJeEkjRnqMkRXGlZpfqMU3wrBuQasZP4F/Cw9uC5bxJXV0S0CW6oM06VwWH9gozqwBcQubO+A/BK",
+ "BFUtl6B0R2peAJxx14pxUnGmca7C7FdiN6wEicaKmW1Z0A1Z0ByVHb+BFGRe6bYcibee0izPneLVTEPE",
+ "4oxTbXiQ0uQV46drHM67xnma4aAvhTyvsRC/opbAQTGVxPn+9/Yrsn+3/JW7CjCAwn72/OZT830Pe8yj",
+ "zEF+/MK9sY5foCDdqFx7sH8yPVzBeBIlMiMYFYyjY3KHtsh98xzwBPSgUd66XT/jes0NIV3QnGVGeLoO",
+ "OXRZXO8s2tPRoZrWRnTUKn6t72L28KVISpqeozl0smR6Vc1nqSj2/dtyfynqd+Z+RqEQHL9l+7Rk+6qE",
+ "dP/i4Q5B9wb8ikTY1YfpxHEddeuaGDdwbEHdOWuFpv9bC3Lv+29Pyb7bKXXPupfaoQO/wIg6wLm+tCxW",
+ "ZvE2PMr6157xM/4CFowz8/3wjGdU0/05VSxV+5UC+Q3NKU9hthTk0HvTvKCanvEeix+MYAz8mEhZzXOW",
+ "kvPwKm6Opo1K6Y9wdvazIZCzs3c980f/4nRTRc+onSC5ZHolKp04t/tEwiWVWQR0Vbtd48g2aGbbrFPi",
+ "xrYU6dz63fhxVk3LUnW9MPvLL8vcLD8gQ+V8DM2WEaWF9EzQcEYLDe7va+HeXJJe+piNSoEivxa0/Jlx",
+ "/Y4kZ9XBwWMgLbfEXx2vMTS5KaGlOLqWl2hXaYQLtwIVrLWkSUmXoKLL10BL3H28qAtUUeY5wW4td0jv",
+ "PIBDNQvw+BjeAAvHlV27cHEntpePn4wvAT/hFmIbw50azf919ytwkLz2dnWcLHu7VOlVYs52dFXKkLjf",
+ "mTqsaml4sjfHKLbk5hC4CLQ5kHQF6TlkGAwDRak301Z3b/FzN5xnHUzZoDHrwYWRDahjmwOpyow6GYDy",
+ "TdfFXIHW3q/+LZzD5lQ0gRFX8SlvezqroYOKlBpcRoZYw2PrxuhuvrMeo3dnWXqHYXSO82RxWNOF7zN8",
+ "kO0NeQuHOEYULU/cIURQGUGEJf4BFFxjoY2X740OQGyRRsiZ2/svouzxNwBxTRrZzdmBwzWhm7H9XgDG",
+ "oYpLReZUQUaEC6G0Pr0BL6sUXcKABipUdo70nG0pSHGQXbdf9L4Ti+611rt1oiDbxolZc5RewHwxBIPa",
+ "wo71389k9em4ghnBzAgOYfMchaXa8cCyHipbSmcb6j0EWpyMQfJG7PBgtDESyjcrqnx0JwbB+hM9ShL4",
+ "iD7q20KSjgPDdRDpWgccec7bPa1x9a0NPSpUE4IU6m5HhBNNJ86XKrYdgqMYlEEOS7tw29gTSuMv32yQ",
+ "gePHxSJnHEgSs4FTpUTKbHhuc9m4OcBIyXuEWA0UGT1CjIwDsNFOhAOT1yI8m3x5FSC58/enfmy0MAV/",
+ "Q9wh0Ho5GcFHlIaRMz7gn+Y5AHWOE/Ut1nHfwWEI41Ni2NwFzQ2bc6rUZpBegAwKr51wGGepfDAk1G5R",
+ "ANrr5UprshfSdVYTSk4e6LhYtwXi7QJFbAsU4ss9gGtcDd2oY6YeuMSHcHU/uHSvBUBHH9Fkn3Hvv53v",
+ "tPbd3L/JGpY+bWJFvYNmjPaH6Ce6SwP466uD62CYN93rOvpUb1sw23FAgRQVY8XmjPQVpH01rIIcUC5O",
+ "WhJEch5TmxvxHpDdnvhuwfsdo40o3zwIzOISlkxpaBRY5lbyGtlPbfSiGN0sxGJ4dbqUC7O+t0LUPNpG",
+ "0VkjXrjMT76CC6EhWTCpdILav+gSTKPvFL4rvzNN44JC2/BuE32wLM4bcNpz2CQZy6s4vbp5//bCTPu6",
+ "VsWoan4OGxQHgaYrMsfENFF3nC1TW4+trQt+aRf8kt7aesedBtPUTCwNubTn+ELORYfzbmMHEQKMEUd/",
+ "1wZRuoVB4sX/AnIdC8gJhAZ7ODPTcLZNAdk7TJkfe9tDKYBi+I6yI21Zi/pWSiFDNXLPTwtDJhotr9fp",
+ "+4RwgVgPPEMPY6tXNHKJjWzrxyFg/hInyKAzGaxTgCzmS2aEriiWMLGHzUUQS2wwnQRhTmNlyiuIamNl",
+ "pPECzQ7JYzisqhUbup0mGXqUmMe7wX+QfrCL9gGORsuSZeuOcteOOvj4p1fS4Pgo6M7q8ay6wXZgIFDk",
+ "xtyNJah2wHvzVrH5lni4ttkozJy2w9JD9h5OxZTPFthHlGFUmNJqF65OgeZ/g83fTVtczuTDdHIzXXAM",
+ "127EHbh+U29vFM9o5LS6wRYTuCLKaVlKcUHzxGnMh0hTigtHmtjcK9g/8cUV18uefnv08o0D/8N0kuZA",
+ "ZVILfoOrwnblF7MqG1s/cEB8NjLD9f0LzD4Mgs2vY55DLfvlClzmp+Bt0ctU0VhQgqPotO6LuK/FTh26",
+ "M/bYJW4x+kBZ23waTaQ1+bTNPPSCstyrAD20A34RuLhx6U6iXCEc4MbmosDql9wqu+md7vjpaKhrB08K",
+ "59qSm6qw6dcUEbzrZmceBKhZRFItKOaZsAqePnPiVZGY45eonKVxdTGfK0Mc3BoDTWOCjQeeFmbEig3Y",
+ "lnnFgrFMMzVCbdEBMpgjikyfs2QId3Ph8uZWnP2rAsIy4Np8kngqOwcVE3s4w0H/OjWyQ38uN7A1NjTD",
+ "30TGCHOsdG88BGK7gBGaHnvgvqgVIH6htXLN/BBYV67gwRDO2LsSt3gfOPpw1GzdwFZtE2KY5rbP/wxh",
+ "2JRou3PselWES/YyMEc0Zy5TyUKK3yD+akdlRyQWwWeVYegJ+xvwWSSkq8tial1dk/q3mX1wu4ekm1Cn",
+ "2Pa6GKB63PnAzogZPLyynXK71TaFZcvXJ04woX/evh2/IRgHc8+nMaeXcxpLb2KEDAPTUWPRbpkFtCC+",
+ "s8e9s2Awl+hnRgLjeN2W2Si9EmQTJtSPCL+mwGCnHS0qNJIBUm0oE0ytKTNXIjJMxS8pt5lQTT97lFxv",
+ "BVaVaXpdCokxtipuwcggZQXN45JDhthvxyRnbMlsHtBKQZBo0g1kEyhbKnLJOq3PQIOa4wU5mAapbN1u",
+ "ZOyCKTbPAVs8tC3mVCEnr9WKdRezPOB6pbD5oxHNVxXPJGR6pSxilSC1UIfPm9oONwd9CcDJAbZ7+Izc",
+ "RwukYhfwwGDR3c+Tw4fPUIVu/ziIXQAu4e82bpIhO/lvx07idIwmWDuGYdxu1Fk0YtRmaR9mXFtOk+06",
+ "5ixhS8frdp+lgnK6hLjrS7EDJtsXdxPVoh288MymGFZaig1hOj4/aGr404Afr2F/FgySiqJgunB2KiUK",
+ "Q09NFkk7qR/O5it2qY48XP4jmntLb+3qPCI/rQrc3m+xVaNR/jUtoI3WKaE2sDpnjSOGz05Gjn16Bsz9",
+ "VKd8srgxc5mlo5iDfhkLUkrGNT4sKr1I/krSFZU0NexvNgRuMv/qSSTfVTvFDb8a4J8c7xIUyIs46uUA",
+ "2XsZwvUl97ngSWE4Svag8ZsPTuWgXTruAeg5etcBdPvQY4UyM0oySG5Vi9xowKlvRHh8y4A3JMV6PVei",
+ "xyuv7JNTZiXj5EErs0M/vX3ppIxCyFiynua4O4lDgpYMLtAZMb5JZswb7oXMR+3CTaD/vHYkL3IGYpk/",
+ "y7GHwDcVy7O/N3FAnZSBkvJ0FTUxzE3HX5qUzvWS7TmO5oZZUc4hjw5n78xf/N0auf3/KcbOUzA+sm03",
+ "FaBdbmdxDeBtMD1QfkKDXqZzM0GI1XZgRO1Jmy9FRnCeJhFJQ2X97IZBWrR/VaB0LBATP1g/HtTvmHeB",
+ "zcpVG69m5HtbkmUFpJUnAaVZVlS5jbmHbAnSKR6rMhc0mxIzzum3Ry+JndX2sflJbVawJQpz7VV03vVB",
+ "1qJxHqE+1WjcZ338ONudaM2qlca0JUrTooyFI5kWp74BxjyFuk4U80LszMgLK2ErL7/ZSQw9LJgsjGRa",
+ "j2Z5PNKE+Y/WNF2h6NriJsMkPz6dnadKFWSxr5PS1omH8NwZuF1GO5vQbkqEeV9cMmUrccAFtCOg6nBA",
+ "93TyEVHt5cmKc0spUR69LVz1Omj3wFn3BK8OjULWQfwVBRclKpnCVbP7nWCvaCaPbqrAXvp6Gyle51P1",
+ "FZZSygVnKebRCGp/1CC7qh5jbAUjUo50lVH+iLsTGjlc0QSFtXOYw+JgykLPCB3i+srK4KvZVEsd9k+N",
+ "5SNWVJMlaOU4G2RTn4TS6UsYV+ASSWGBl4BPCtmyvyCHjJr0klr1e0UywniIAQH4O/PttXseoYvwOeMo",
+ "CDm0OW9kq9HAogPaSE9Mk6UA5dbTTregfjZ9ZphyIIP1u5kvUoBjWPOFWba11fWHOvKWO2cpM22fm7bE",
+ "+pDWP7ecTu2kR2XpJo06jtU7HEujOYjgiAUm8SrwALn1+OFoW8htq8kd71NDaHCBBjso8R7uEUadkbST",
+ "WviC5pVzM0GHFOu4FI2ZZTwCxkvGoSmhEbkg0uiVgBuD53Wgn0ol1VYEHMXTToHmaKWLMTSlnYr2pkN1",
+ "NhhRgmv0cwxvY5NMdYBx1A0awY3yTV25w1B3IEw8x5JBDpH91KgoVTkhKkMn8k6y1BjjMIzbpxluXwD9",
+ "Y9CXiWx3Lak9OVe5iYaiA1MRkze/XUNaWSO0UN6nnKQYbh/cF1GNJlPm8VTM84h334v6Y5CBGB3+5xv8",
+ "N5Y3axglzkp8Za8zbxLGjlcWWNsj9cRNQ0yJYstkPCaQmd8cHc3U16Owpv+tklgulm1APnF+m23sJdyj",
+ "GGO5spNh238Q32t1EORY98BB778r+NWZW2fA0zPI6kPtxWbNG0P+numgezLVLkpIU9KkJOnzBJtjPDaC",
+ "dS+wuc1tWcSoamfIpcB6FJjPvd7jRLKegItjb0Wo91XpA/Q37whHSsqc7a5hFn3MOgfovkv6GGe6ZoO7",
+ "i3BuxThIbCW9pI/bKaTnVh6ERtjcfLPxSQqOasMommsws/oSuEut3nYxHO3otFhAqtnFDjf+/zbCcuMi",
+ "PvXitK1HEXj1s9pxxlfPvKKU3wC0zct+KzxBJpQbgzPk9nkOm3uKtKghmixw6gn1OtGviAHMEpMYEhEq",
+ "Zniw73+nC2aqpgzEgjf02e7QJOgazNIcBKVccy5PkoSGgSpbprwQsQfEqLlM1yuFb6EPyJCnfz9P6vDt",
+ "9QLT0qo6w35dHjPw4zDvxG4Ov0sXfYtBF7XKy8fhgvK/+QgrO4stu9rkkUYF4yWVmW8RlZi9MJ4MeFt1",
+ "/ZetmziLA72oZ2aNW0bfhTeSuwKdb9JcKMaXyZAHU9sTIqzchPaeJmYA4VqAdPnjta9qm2jh3Ti2wbEN",
+ "Fa7K0HWQoAYzMVrgBuO33zYB6piwi9qaxs6WFS6QSCiogU4GYeTDc25D9nP73fus+uCOTnq0yLieXpOd",
+ "ceDeIYepHhJDql8Qd1vu9oW9zlOFcW7Lc6hYTDk3qAyVWKUUWZXaCzo8GOCfdKMzNmxhJVEpP+2vsiew",
+ "5ZjF5GUQWXAOm30rNKUrypt0Mu1jbRNM2jUEcZmd3b7VV1xcYM2XdgHLW4Hzc76EppNSiDwZ0Fod90Pj",
+ "u2fgnKXnkBFzd3hT9kCmZnIflSW1WeJytfGh4GUJHLIHM0LMW6oo9cZbKNqp4TqT83t62/xrnDWrbLYK",
+ "90ibnfG4F4atEn5D/uaH2c7VFBjmd8Op7CA7Ys/XA2H5kl5G8paPLbkWsRl0c0k3RGWhiEkp1wxEHHW+",
+ "+w+1COmHQQc73j/nrVedTX7UsRMICbf8ugsUpFd83fXDKcYuD9eBXK1S0F/n6A1o4XYA92MQ36gm+sgd",
+ "1ijo+RiNQjxFi+mOKg2LEMxvRBBU8uvDX4mEBWY9FGRvDyfY25u6pr8+an82r6+9vejJ/GTKjFZlNzdv",
+ "jGL+PmRXtrbTAReGzn5ULM92EUbLIaXJQIouF784153PkgP1F/tE7h9Vlw7yKmrU7iYgYiJrbU0eTBW4",
+ "mozwMnHdIj4leNmklWR6gxFF/kXFfonG3X9fK2FcudDaB925QNvC/M4jqlHZNLXUvxe24F9h7npUYmss",
+ "0vDtmhZlDu6gfH1v/hd4/Ncn2cHjh3+Z//Xg6UEKT54+Ozigz57Qh88eP4RHf3365AAeLr56Nn+UPXry",
+ "aP7k0ZOvnj5LHz95OH/y1bO/3POFzC2gTZHwf2Ci4OTozXFyaoBtcEJLVtdmMWTsk47SFE+ieZPkk0P/",
+ "0//vT9gsFUUzvP914tzjJiutS3W4v395eTkLu+wv8Y2WaFGlq30/T78mxpvj2nXHhlzgjlqvDEMKuKmO",
+ "FI7w29tvT07J0ZvjWUMwk8PJwexg9hBze5fAackmh5PH+BOenhXu+74jtsnh+w/Tyf4KaI4J380fBWjJ",
+ "Uv9JXdLlEuTMZV81P1082veW//337n36wYy6jMVaWSeksBxyLymp03WhPck6GbXSeymXbWpaJ31z4iPP",
+ "0DfEPvkMa6uRdZw1CV6CwH4fGGUjxQ9/jiTDXrBlJTvVpGptvssLyRT5r5MfXxMhySurc39D0/PQ/yJW",
+ "tN6xsljNeuelUahl2TZpNpr+WN2ZWHZXnNnsc0Cptaqo4URaVhBC0vBVwysPkmfv3j/964fJCEBQb+mq",
+ "9v5K8/xXW+4L1qj8aRfQVtOhau3TRvXQqZE9RZts/TXMOlq3aXsC/coFh1+HtsEBFt0HmuemoeAQ24N3",
+ "6KKNlICH6NHBwUeosz1tjeJJ4rMW7H5y+wvtpOu4rWX3hu0h4RuaYU5IUNou7eGtLe2Wl7RzKcccTQnm",
+ "BiD2hvswnTy9xb369AsyPIjmBFsG8VD9W+Unfs7FJfctjXRTFQWVG5RdgvS1oZT6YfD22g+T7O2/byma",
+ "sxvdbb38oscvdlx399QQk+wnCujk8DPf6yx1qIp0iQphzZRWD2bk+7A3Mmr0u7de7ZXkTUGsUooLlhmW",
+ "62x0Pjyxge2eCkMSopdv8Hq/u4c/6j181NZCtCLNY8C0SHwrTD1L1E0vwr4fVCcR+7USnQf5iq6Rpeej",
+ "5oHtPAIHa1SOYLB3uBuq7zkg7gTw1pJPO8vjx+e79j0XXBOt++AjcuVbFt4+tUDwiuaGToLldnyybfqF",
+ "OyHuTyPE1c4Jtp4KZhzaJtZhTrr99z5bxi2Ici5byAghLnz5Bn2DbA73O5ziwcymvgjbXI8dOEeDneIZ",
+ "5jC5E8w+tmDWT/4TA6NJ6fL5hDGEYdVkB7pKEZNWJsgrZTH6QqWvPzGyBsUtA+luQesavLEnRDlO/NF4",
+ "5h9SeHJIuxOb/tRik/Xt2yI4tTJzOUfQYdkJguLqQaWaliPafOPpcEqUkM4dqpRMSKY3U8I4ycCcPbQg",
+ "ColByE2Zdud0BBz/++roH+iK+uroH+RrcjCtRTCM0YpMb5192jLQ96D7Pm3qm81RLQ5slYV+NwLGaY2k",
+ "gTL/WvjkWoi0gq6/HkLZ2toZY+JZQdeTrZLI9MuRFm8qNHWiK/tU5AqlohOAL+vTdrFSBNY01fmGULx/",
+ "NtYXGAvI+8xYnZL3okzCAaLxR1tm9FVDYlFkV/XyioSwYzLw7fCddrIItdDhMtBhiZ7dgkkPGVEIrifl",
+ "3e3uF7u7fbGUlMKcaYYpEpr7xN9VLSCb2hEO3AEH1hn5H1Gh84stjQax9J44Azr7+jmdABrk582xMF2N",
+ "nb297sL39tyeM0UWcIkclHJs2EXH3t4fQGRd11kVKeGCJxwrd10ACTzm7uTW37Xc+vTg8Re7mhOQFywF",
+ "cgpFKSSVLN+Qn3idhuZmYnnNcyoeJAbayn96nvONFB2I7zeyXXdt00w3kmErkCpQIdQFFt1bedrk9Ddv",
+ "eUwf4gPY1dSbTtAR0FpV7H5Me4aVWUxIDyw432yOX4yRy78QQ+joNFaRey2+Nx/7Boj607z9NP4045jp",
+ "k4Mnnw6CcBdeC02+Q3XZR2bpH1V3ECergNlc2aLSWExC1uICE7cyFXNCpy71KObC3JA6cMjwE8sIbfGB",
+ "PtcwM4zlF79j/fyIIsoRuuyi944v3PGFG/GFLkE1HAHD79X+ezQVhOygdyS/MS3/QCbGwN4iReENLoIs",
+ "QKcrm5agGyYTYSs+G94wT9mWM/6W7X8IdCRnLq7FhYJgLvORAYLY8QcbmfFhOklBRojvR58fx3xmCwzz",
+ "rDMd+tIIaM5hPltwnSjYpVNnyvuguyw4xOzilaB83kzeD9tBtNyGzfAOwVdDcI+pfevyNtvj5RbxpSs+",
+ "gtuSJOQ1ikN4wH2ivz+i2uNj3sgfe0GvBQdrlzYSq6XFOxNkLS5gdRVEis+KYA2PrvxuXHRoGx3f6zXL",
+ "PuzXaXuGhIo32GCHUNHc1KypadlWr9CyBCrVtS/p3eaw086Mxy9CP41WlqE6v1AEFIOXK1oS/2OMGfGP",
+ "a61r38ArqlbxeG/coE2JRRlMK7KouN2qun4UOu14NxKxmNbqasMPxOLwjO8RVRXYG/+/ok8fPvrl0dOv",
+ "JtN6xa6BwUbz+V0kHpll62gqDlj7jEIhPTmdIR6qe4qUdDOYwWcgGdYrkOe5L8PeNo6QAsxFpFas/Bxl",
+ "5dk8XovnB4NosSB1huxj/k3Ndy5AsgUWlKrP0yfOsCIBMij1amtqA1sPq9SrZlPBVWxkyqWQKaW4AD4l",
+ "bAazrhEpWzbJZnOgizoFiRBjXLzq82DpzRNHgPVwIWNEtDcx+sGwQpeq7VMrIxpXKHsJeOTJDj/+rJoK",
+ "/Vk0Fa8FT1COAa69TN1Cy+fTWmDWmGmgGKxrDnChUSEoJIpfIdtSs1GCCwwaaVo80LocDpKxE2NSqtNV",
+ "Ve6/x/9gBP+HJlbeFtjYtwrMbZLMiW1xq64pdkwi29zGJ41wSlWxIK9YKsURZhdy14jaKA1Fv/yi7frL",
+ "ttIN0StH8JxxSArBY/kmfsSvr/DjdLDU/EBndDwY6tstmtOCvwNWe54xrO6m+J39PpSjNxL0O6uVUNbu",
+ "fegHgfTfnJZWAtnmmLR+3n/f+tPZGVxLtap0Ji6DvjY/xNazZVvc6tl6LTKw47ZTssT8LrnIwKWx6B+p",
+ "mmvERVKP36ZdRzhIabVcaVs+MFqbtO6Y0NQeBZuDVe1KWmlb+eRsF0BoLoFmGzIH4ETMzaLbyX8JVXU9",
+ "WCQOyxvjuRcbuEopUlAKsiSsG7QNtDo5CEo+egueEHAEuJ6FKEEWVF4TWMsktgPaLZhXg1tr2Bwf6EM9",
+ "bvptG9idPNxGKoF4hohPGlGUObhHTQSFI3GCsjb7yPvnJ7nu9lUllqaJZA+1X09ZgfkvOOVCQSp4poZz",
+ "/O46tpjVN1iLAluN1Z+UaMUPM/DA1fqSKu0qI7VSIQa5oc0UW5ISDyX2MiP/vU7r1Rs7NfySq0o1RaOs",
+ "7AVZtB4nrLfM9RrW9VxiEYxdC3e2VvCukYewFIxfl5EKsgzrQPtjhossDoNHqBPFIjXtQyAaRGwD5MS3",
+ "CrAbqlgGAGGqQXSdOrRNOUEdX6VFWZrzp5OK1/2G0HRiWx/pn5q2feJyTvfI1zMBKhS8HeSXFrO2QtyK",
+ "KuLgIAU9dzL70vm+92E2hzFRjKcuNfpQXBMr4MS0Co/AjkPaFfvC4986Z53D0aHfKNENEsGOXRhacEzQ",
+ "/F2IhVd993UVdx9RxdwWtAPxqhE07d/7l5TpZCGkSzuPNcgj1upOVivKtKt8717FWjgVsatibhmKGyeo",
+ "j6hCx2ELgg9eMbvf91UxU30n5CjjeKPH1oKYhZGKa+YjkM15q2XM35+l+U56vpOe76TnO+n5Tnq+k57v",
+ "pOc76fljS8+fx9uVJInn0942HAtkIpMvUsL/gmKFPmVwTyP01yI/PhKMiG7O8VYvGA0033dVidFdIVqD",
+ "07rThxWOUzMd46TMqZGGYK19UDeZUwVfPfFOGXUtSZsG3/Aa0+DxI3Lyw5HzP7AOD2LRaXvfV2hTepPD",
+ "A+ctWOep9m6DwClWrkSvQepfP6n3KLHS/ILlQJRB1rfY/AVcQG5EeWv9JOYx0n8enQLNnzvkWK4ESn8j",
+ "sk2HcMz69xEVbZJpLP6MUxmps9snlB6StcBa265wdO8F9eHW/VP629/fsF17FS9uEq+Hu41eYr5DPQeC",
+ "ST32GKuZ2VOPTuJq9H5Wlk0QIkdmDXv63UQtdAu1uYODbY1U4c7flxph4BEfPXh4bKe+kBVhWhFHcevE",
+ "NFoCTxxbSOYi27h66r7kd4vL2lrMw0zWFjoGV0neHYP76oFhs4jRtW6perAM9NKWJ+qqLTBdSV1l6/Mw",
+ "TluKdyvfvD512MHrIJ+b+qd2h+tzjcAN476QZClFVT6w2aP4Bp/ERUn5xqvBjKxYVLkrO4g+9bfLqeta",
+ "WT0+659jwy+5N/7BFrxXnFth+3eLFqywZfcXMlLxDGS8kM2aqysWam7KpO8qXuLLOPVW5+Ydw/r9Ljun",
+ "0lr1V9qidpHC6p0y6neBbH+KK+GNzdI2wGH7flkNQ5jtvBlkwLLwauikNfF3Q5ufvqWXp61i9+N46jpx",
+ "gueNpdIVoEBWS2mRHDDmvpSCZilVGKvDQV8Kef6RJVa9Po7oHRBMzOXVd1U2F/hsp2CJ446SJ9te9W5C",
+ "TLajbD2kzytdNv6nRy40qoWNO1XAH0UV8I0/fIpQLK3YOZxW64dncgSbopd6zaNcar+0uUCHPN6CA+Gy",
+ "ht6q7a43fNuEF2TitCYIyEtCSZozNFAIrrSsUn3GKapAO3UnO+Y9r9gdFqWe+yZxLXxESe6GOuNGqFqQ",
+ "WjEaFakWEDF5fAfgJTZVLZegdIcTLwDOuGvFOFZ8xrmwjGdiPUHNdW04+sy2LOiGLGiOOvzfQAoyN6+I",
+ "MD8MKhSVZnnu7IlmGiIWZ5xqkoNh+q+YEejMcF7nVNvILd3VWBgoT2wLgyVxLcT39itGXbjle70Rqrfs",
+ "56Yi+2cp35fEKtw7yI9fuNxtxy8wHU9jSezB/snMSwXjSZTIzI3vLPJd2iL3jYznCehBY5N0u37GjTCt",
+ "BUFGT/X1yKFrBuidRXs6OlTT2oiOtcCv9V0sbngpEvNkpEvz+5LpVTXHAno+nnh/KerY4v2MQiE4fsv2",
+ "acn2VQnp/sXDHfLBDfgVibCru5v7j6PED+nAnJZ64zFHdXfvB+7lW0iV+/vOj7vTRekuG+1dNtq7fKV3",
+ "2WjvdvcuG+1drta7XK1/1lyts60SostvsjN7ou6pNimRkNqZawYeNmvlWeybJZmeEXK6MvyfmjsALkDS",
+ "nKRUWcGIW0+5gi1XmqgqTQGywzOetCBJReEmvt/81z5zz6qDg8dADh50+1i9RcB5+31RVMVPaGoiX5Oz",
+ "ydmkN5KEQlyAy7qGzbMKbcW2185h/7963B9lb+sKurHKlRUtSzDXmqoWC5Yyi/JcmMfAUnT8+7jALyAN",
+ "cDZTBmHaJrhFfKJfpPPOoS7+PCZ09+/3K5TnOurmM7hLIPPRK3f3N+z2eODWsXsM8Y5lfAqW8dmZxh8o",
+ "191dWrvf2YJCQ2orb+0NJKm6YFtE7+RlJKtONrwZR4C0kkxv8IajJfvlHMz/3xk+rkBe+MuvkvnkcLLS",
+ "ujzc38fM8iuh9P7EXE3NN9X5aO4HurQjuMullOwCs1K++/D/AgAA//8tLGeW2RIBAA==",
}
// GetSwagger returns the Swagger specification corresponding to the generated code
diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go
index 9ad25ca41..17963f46f 100644
--- a/daemon/algod/api/server/v2/handlers.go
+++ b/daemon/algod/api/server/v2/handlers.go
@@ -438,7 +438,7 @@ func (v2 *Handlers) AccountAssetInformation(ctx echo.Context, address string, as
// return msgpack response
if handle == protocol.CodecHandle {
- data, err := encode(handle, model.AccountResourceToAccountResourceModel(record))
+ data, err := encode(handle, model.AccountResourceToAccountAssetModel(record))
if err != nil {
return internalError(ctx, err, errFailedToEncodeResponse, v2.Log)
}
@@ -491,7 +491,7 @@ func (v2 *Handlers) AccountApplicationInformation(ctx echo.Context, address stri
// return msgpack response
if handle == protocol.CodecHandle {
- data, err := encode(handle, model.AccountResourceToAccountResourceModel(record))
+ data, err := encode(handle, model.AccountResourceToAccountApplicationModel(record))
if err != nil {
return internalError(ctx, err, errFailedToEncodeResponse, v2.Log)
}
diff --git a/daemon/algod/api/spec/v2/model.go b/daemon/algod/api/spec/v2/model.go
index 51042098c..9b964accc 100644
--- a/daemon/algod/api/spec/v2/model.go
+++ b/daemon/algod/api/spec/v2/model.go
@@ -22,30 +22,34 @@ import (
"github.com/algorand/go-algorand/ledger/ledgercore"
)
-// AccountResourceModel used to encode AccountResource
-type AccountResourceModel struct {
+// AccountAssetModel is returned by AccountAssetInformation when msgpack format is specified
+type AccountAssetModel struct {
_struct struct{} `codec:",omitempty,omitemptyarray"`
- AssetParams basics.AssetParams `codec:"asset-params"`
- AssetHolding basics.AssetHolding `codec:"asset-holding"`
- AppLocalState basics.AppLocalState `codec:"app-local-state"`
- AppParams basics.AppParams `codec:"app-params"`
+ AssetParams *basics.AssetParams `codec:"asset-params"`
+ AssetHolding *basics.AssetHolding `codec:"asset-holding"`
}
-// AccountResourceToAccountResourceModel converts AccountResource to AccountResourceModel
-func AccountResourceToAccountResourceModel(resource ledgercore.AccountResource) AccountResourceModel {
- resourceModel := AccountResourceModel{}
- if resource.AssetParams != nil {
- resourceModel.AssetParams = *resource.AssetParams
- }
- if resource.AssetHolding != nil {
- resourceModel.AssetHolding = *resource.AssetHolding
- }
- if resource.AppParams != nil {
- resourceModel.AppParams = *resource.AppParams
+// AccountApplicationModel is returned by AccountApplicationInformation when msgpack format is specified
+type AccountApplicationModel struct {
+ _struct struct{} `codec:",omitempty,omitemptyarray"`
+
+ AppLocalState *basics.AppLocalState `codec:"app-local-state"`
+ AppParams *basics.AppParams `codec:"app-params"`
+}
+
+// AccountResourceToAccountAssetModel converts AccountResource to AccountAssetModel
+func AccountResourceToAccountAssetModel(resource ledgercore.AccountResource) AccountAssetModel {
+ return AccountAssetModel{
+ AssetParams: resource.AssetParams,
+ AssetHolding: resource.AssetHolding,
}
- if resource.AppLocalState != nil {
- resourceModel.AppLocalState = *resource.AppLocalState
+}
+
+// AccountResourceToAccountApplicationModel converts AccountResource to AccountApplicationModel
+func AccountResourceToAccountApplicationModel(resource ledgercore.AccountResource) AccountApplicationModel {
+ return AccountApplicationModel{
+ AppParams: resource.AppParams,
+ AppLocalState: resource.AppLocalState,
}
- return resourceModel
}
diff --git a/daemon/algod/api/spec/v2/msgp_gen.go b/daemon/algod/api/spec/v2/msgp_gen.go
index bd5488a3f..48590fd11 100644
--- a/daemon/algod/api/spec/v2/msgp_gen.go
+++ b/daemon/algod/api/spec/v2/msgp_gen.go
@@ -3,75 +3,74 @@ package v2
// Code generated by github.com/algorand/msgp DO NOT EDIT.
import (
+ "github.com/algorand/go-algorand/data/basics"
"github.com/algorand/msgp/msgp"
)
// The following msgp objects are implemented in this file:
-// AccountResourceModel
-// |-----> (*) MarshalMsg
-// |-----> (*) CanMarshalMsg
-// |-----> (*) UnmarshalMsg
-// |-----> (*) CanUnmarshalMsg
-// |-----> (*) Msgsize
-// |-----> (*) MsgIsZero
+// AccountApplicationModel
+// |-----> (*) MarshalMsg
+// |-----> (*) CanMarshalMsg
+// |-----> (*) UnmarshalMsg
+// |-----> (*) CanUnmarshalMsg
+// |-----> (*) Msgsize
+// |-----> (*) MsgIsZero
+//
+// AccountAssetModel
+// |-----> (*) MarshalMsg
+// |-----> (*) CanMarshalMsg
+// |-----> (*) UnmarshalMsg
+// |-----> (*) CanUnmarshalMsg
+// |-----> (*) Msgsize
+// |-----> (*) MsgIsZero
//
// MarshalMsg implements msgp.Marshaler
-func (z *AccountResourceModel) MarshalMsg(b []byte) (o []byte) {
+func (z *AccountApplicationModel) MarshalMsg(b []byte) (o []byte) {
o = msgp.Require(b, z.Msgsize())
// omitempty: check for empty values
- zb0001Len := uint32(4)
- var zb0001Mask uint8 /* 5 bits */
- if (*z).AppLocalState.MsgIsZero() {
+ zb0001Len := uint32(2)
+ var zb0001Mask uint8 /* 3 bits */
+ if (*z).AppLocalState == nil {
zb0001Len--
zb0001Mask |= 0x2
}
- if (*z).AppParams.MsgIsZero() {
+ if (*z).AppParams == nil {
zb0001Len--
zb0001Mask |= 0x4
}
- if (*z).AssetHolding.MsgIsZero() {
- zb0001Len--
- zb0001Mask |= 0x8
- }
- if (*z).AssetParams.MsgIsZero() {
- zb0001Len--
- zb0001Mask |= 0x10
- }
// variable map header, size zb0001Len
o = append(o, 0x80|uint8(zb0001Len))
if zb0001Len != 0 {
if (zb0001Mask & 0x2) == 0 { // if not empty
// string "app-local-state"
o = append(o, 0xaf, 0x61, 0x70, 0x70, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x65)
- o = (*z).AppLocalState.MarshalMsg(o)
+ if (*z).AppLocalState == nil {
+ o = msgp.AppendNil(o)
+ } else {
+ o = (*z).AppLocalState.MarshalMsg(o)
+ }
}
if (zb0001Mask & 0x4) == 0 { // if not empty
// string "app-params"
o = append(o, 0xaa, 0x61, 0x70, 0x70, 0x2d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73)
- o = (*z).AppParams.MarshalMsg(o)
- }
- if (zb0001Mask & 0x8) == 0 { // if not empty
- // string "asset-holding"
- o = append(o, 0xad, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67)
- o = (*z).AssetHolding.MarshalMsg(o)
- }
- if (zb0001Mask & 0x10) == 0 { // if not empty
- // string "asset-params"
- o = append(o, 0xac, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73)
- o = (*z).AssetParams.MarshalMsg(o)
+ if (*z).AppParams == nil {
+ o = msgp.AppendNil(o)
+ } else {
+ o = (*z).AppParams.MarshalMsg(o)
+ }
}
}
return
}
-func (_ *AccountResourceModel) CanMarshalMsg(z interface{}) bool {
- _, ok := (z).(*AccountResourceModel)
+func (_ *AccountApplicationModel) CanMarshalMsg(z interface{}) bool {
+ _, ok := (z).(*AccountApplicationModel)
return ok
}
// UnmarshalMsg implements msgp.Unmarshaler
-func (z *AccountResourceModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
+func (z *AccountApplicationModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
var field []byte
_ = field
var zb0001 int
@@ -85,34 +84,232 @@ func (z *AccountResourceModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
if zb0001 > 0 {
zb0001--
- bts, err = (*z).AssetParams.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "AssetParams")
- return
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AppLocalState = nil
+ } else {
+ if (*z).AppLocalState == nil {
+ (*z).AppLocalState = new(basics.AppLocalState)
+ }
+ bts, err = (*z).AppLocalState.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "AppLocalState")
+ return
+ }
}
}
if zb0001 > 0 {
zb0001--
- bts, err = (*z).AssetHolding.UnmarshalMsg(bts)
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AppParams = nil
+ } else {
+ if (*z).AppParams == nil {
+ (*z).AppParams = new(basics.AppParams)
+ }
+ bts, err = (*z).AppParams.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "AppParams")
+ return
+ }
+ }
+ }
+ if zb0001 > 0 {
+ err = msgp.ErrTooManyArrayFields(zb0001)
if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "AssetHolding")
+ err = msgp.WrapError(err, "struct-from-array")
return
}
}
- if zb0001 > 0 {
+ } else {
+ if err != nil {
+ err = msgp.WrapError(err)
+ return
+ }
+ if zb0002 {
+ (*z) = AccountApplicationModel{}
+ }
+ for zb0001 > 0 {
zb0001--
- bts, err = (*z).AppLocalState.UnmarshalMsg(bts)
+ field, bts, err = msgp.ReadMapKeyZC(bts)
if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "AppLocalState")
+ err = msgp.WrapError(err)
return
}
+ switch string(field) {
+ case "app-local-state":
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AppLocalState = nil
+ } else {
+ if (*z).AppLocalState == nil {
+ (*z).AppLocalState = new(basics.AppLocalState)
+ }
+ bts, err = (*z).AppLocalState.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "AppLocalState")
+ return
+ }
+ }
+ case "app-params":
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AppParams = nil
+ } else {
+ if (*z).AppParams == nil {
+ (*z).AppParams = new(basics.AppParams)
+ }
+ bts, err = (*z).AppParams.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "AppParams")
+ return
+ }
+ }
+ default:
+ err = msgp.ErrNoField(string(field))
+ if err != nil {
+ err = msgp.WrapError(err)
+ return
+ }
+ }
+ }
+ }
+ o = bts
+ return
+}
+
+func (_ *AccountApplicationModel) CanUnmarshalMsg(z interface{}) bool {
+ _, ok := (z).(*AccountApplicationModel)
+ return ok
+}
+
+// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
+func (z *AccountApplicationModel) Msgsize() (s int) {
+ s = 1 + 16
+ if (*z).AppLocalState == nil {
+ s += msgp.NilSize
+ } else {
+ s += (*z).AppLocalState.Msgsize()
+ }
+ s += 11
+ if (*z).AppParams == nil {
+ s += msgp.NilSize
+ } else {
+ s += (*z).AppParams.Msgsize()
+ }
+ return
+}
+
+// MsgIsZero returns whether this is a zero value
+func (z *AccountApplicationModel) MsgIsZero() bool {
+ return ((*z).AppLocalState == nil) && ((*z).AppParams == nil)
+}
+
+// MarshalMsg implements msgp.Marshaler
+func (z *AccountAssetModel) MarshalMsg(b []byte) (o []byte) {
+ o = msgp.Require(b, z.Msgsize())
+ // omitempty: check for empty values
+ zb0001Len := uint32(2)
+ var zb0001Mask uint8 /* 3 bits */
+ if (*z).AssetHolding == nil {
+ zb0001Len--
+ zb0001Mask |= 0x2
+ }
+ if (*z).AssetParams == nil {
+ zb0001Len--
+ zb0001Mask |= 0x4
+ }
+ // variable map header, size zb0001Len
+ o = append(o, 0x80|uint8(zb0001Len))
+ if zb0001Len != 0 {
+ if (zb0001Mask & 0x2) == 0 { // if not empty
+ // string "asset-holding"
+ o = append(o, 0xad, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67)
+ if (*z).AssetHolding == nil {
+ o = msgp.AppendNil(o)
+ } else {
+ o = (*z).AssetHolding.MarshalMsg(o)
+ }
+ }
+ if (zb0001Mask & 0x4) == 0 { // if not empty
+ // string "asset-params"
+ o = append(o, 0xac, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73)
+ if (*z).AssetParams == nil {
+ o = msgp.AppendNil(o)
+ } else {
+ o = (*z).AssetParams.MarshalMsg(o)
+ }
+ }
+ }
+ return
+}
+
+func (_ *AccountAssetModel) CanMarshalMsg(z interface{}) bool {
+ _, ok := (z).(*AccountAssetModel)
+ return ok
+}
+
+// UnmarshalMsg implements msgp.Unmarshaler
+func (z *AccountAssetModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
+ var field []byte
+ _ = field
+ var zb0001 int
+ var zb0002 bool
+ zb0001, zb0002, bts, err = msgp.ReadMapHeaderBytes(bts)
+ if _, ok := err.(msgp.TypeError); ok {
+ zb0001, zb0002, bts, err = msgp.ReadArrayHeaderBytes(bts)
+ if err != nil {
+ err = msgp.WrapError(err)
+ return
}
if zb0001 > 0 {
zb0001--
- bts, err = (*z).AppParams.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "AppParams")
- return
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AssetParams = nil
+ } else {
+ if (*z).AssetParams == nil {
+ (*z).AssetParams = new(basics.AssetParams)
+ }
+ bts, err = (*z).AssetParams.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "AssetParams")
+ return
+ }
+ }
+ }
+ if zb0001 > 0 {
+ zb0001--
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AssetHolding = nil
+ } else {
+ if (*z).AssetHolding == nil {
+ (*z).AssetHolding = new(basics.AssetHolding)
+ }
+ bts, err = (*z).AssetHolding.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "AssetHolding")
+ return
+ }
}
}
if zb0001 > 0 {
@@ -128,7 +325,7 @@ func (z *AccountResourceModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
return
}
if zb0002 {
- (*z) = AccountResourceModel{}
+ (*z) = AccountAssetModel{}
}
for zb0001 > 0 {
zb0001--
@@ -139,28 +336,38 @@ func (z *AccountResourceModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
switch string(field) {
case "asset-params":
- bts, err = (*z).AssetParams.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "AssetParams")
- return
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AssetParams = nil
+ } else {
+ if (*z).AssetParams == nil {
+ (*z).AssetParams = new(basics.AssetParams)
+ }
+ bts, err = (*z).AssetParams.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "AssetParams")
+ return
+ }
}
case "asset-holding":
- bts, err = (*z).AssetHolding.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "AssetHolding")
- return
- }
- case "app-local-state":
- bts, err = (*z).AppLocalState.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "AppLocalState")
- return
- }
- case "app-params":
- bts, err = (*z).AppParams.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "AppParams")
- return
+ if msgp.IsNil(bts) {
+ bts, err = msgp.ReadNilBytes(bts)
+ if err != nil {
+ return
+ }
+ (*z).AssetHolding = nil
+ } else {
+ if (*z).AssetHolding == nil {
+ (*z).AssetHolding = new(basics.AssetHolding)
+ }
+ bts, err = (*z).AssetHolding.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "AssetHolding")
+ return
+ }
}
default:
err = msgp.ErrNoField(string(field))
@@ -175,18 +382,29 @@ func (z *AccountResourceModel) UnmarshalMsg(bts []byte) (o []byte, err error) {
return
}
-func (_ *AccountResourceModel) CanUnmarshalMsg(z interface{}) bool {
- _, ok := (z).(*AccountResourceModel)
+func (_ *AccountAssetModel) CanUnmarshalMsg(z interface{}) bool {
+ _, ok := (z).(*AccountAssetModel)
return ok
}
// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
-func (z *AccountResourceModel) Msgsize() (s int) {
- s = 1 + 13 + (*z).AssetParams.Msgsize() + 14 + (*z).AssetHolding.Msgsize() + 16 + (*z).AppLocalState.Msgsize() + 11 + (*z).AppParams.Msgsize()
+func (z *AccountAssetModel) Msgsize() (s int) {
+ s = 1 + 13
+ if (*z).AssetParams == nil {
+ s += msgp.NilSize
+ } else {
+ s += (*z).AssetParams.Msgsize()
+ }
+ s += 14
+ if (*z).AssetHolding == nil {
+ s += msgp.NilSize
+ } else {
+ s += (*z).AssetHolding.Msgsize()
+ }
return
}
// MsgIsZero returns whether this is a zero value
-func (z *AccountResourceModel) MsgIsZero() bool {
- return ((*z).AssetParams.MsgIsZero()) && ((*z).AssetHolding.MsgIsZero()) && ((*z).AppLocalState.MsgIsZero()) && ((*z).AppParams.MsgIsZero())
+func (z *AccountAssetModel) MsgIsZero() bool {
+ return ((*z).AssetParams == nil) && ((*z).AssetHolding == nil)
}
diff --git a/daemon/algod/api/spec/v2/msgp_gen_test.go b/daemon/algod/api/spec/v2/msgp_gen_test.go
index e11e36d13..57bda723c 100644
--- a/daemon/algod/api/spec/v2/msgp_gen_test.go
+++ b/daemon/algod/api/spec/v2/msgp_gen_test.go
@@ -12,9 +12,9 @@ import (
"github.com/algorand/msgp/msgp"
)
-func TestMarshalUnmarshalAccountResourceModel(t *testing.T) {
+func TestMarshalUnmarshalAccountApplicationModel(t *testing.T) {
partitiontest.PartitionTest(t)
- v := AccountResourceModel{}
+ v := AccountApplicationModel{}
bts := v.MarshalMsg(nil)
left, err := v.UnmarshalMsg(bts)
if err != nil {
@@ -33,12 +33,12 @@ func TestMarshalUnmarshalAccountResourceModel(t *testing.T) {
}
}
-func TestRandomizedEncodingAccountResourceModel(t *testing.T) {
- protocol.RunEncodingTest(t, &AccountResourceModel{})
+func TestRandomizedEncodingAccountApplicationModel(t *testing.T) {
+ protocol.RunEncodingTest(t, &AccountApplicationModel{})
}
-func BenchmarkMarshalMsgAccountResourceModel(b *testing.B) {
- v := AccountResourceModel{}
+func BenchmarkMarshalMsgAccountApplicationModel(b *testing.B) {
+ v := AccountApplicationModel{}
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
@@ -46,8 +46,8 @@ func BenchmarkMarshalMsgAccountResourceModel(b *testing.B) {
}
}
-func BenchmarkAppendMsgAccountResourceModel(b *testing.B) {
- v := AccountResourceModel{}
+func BenchmarkAppendMsgAccountApplicationModel(b *testing.B) {
+ v := AccountApplicationModel{}
bts := make([]byte, 0, v.Msgsize())
bts = v.MarshalMsg(bts[0:0])
b.SetBytes(int64(len(bts)))
@@ -58,8 +58,68 @@ func BenchmarkAppendMsgAccountResourceModel(b *testing.B) {
}
}
-func BenchmarkUnmarshalAccountResourceModel(b *testing.B) {
- v := AccountResourceModel{}
+func BenchmarkUnmarshalAccountApplicationModel(b *testing.B) {
+ v := AccountApplicationModel{}
+ bts := v.MarshalMsg(nil)
+ b.ReportAllocs()
+ b.SetBytes(int64(len(bts)))
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ _, err := v.UnmarshalMsg(bts)
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
+}
+
+func TestMarshalUnmarshalAccountAssetModel(t *testing.T) {
+ partitiontest.PartitionTest(t)
+ v := AccountAssetModel{}
+ bts := v.MarshalMsg(nil)
+ left, err := v.UnmarshalMsg(bts)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if len(left) > 0 {
+ t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
+ }
+
+ left, err = msgp.Skip(bts)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if len(left) > 0 {
+ t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
+ }
+}
+
+func TestRandomizedEncodingAccountAssetModel(t *testing.T) {
+ protocol.RunEncodingTest(t, &AccountAssetModel{})
+}
+
+func BenchmarkMarshalMsgAccountAssetModel(b *testing.B) {
+ v := AccountAssetModel{}
+ b.ReportAllocs()
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ v.MarshalMsg(nil)
+ }
+}
+
+func BenchmarkAppendMsgAccountAssetModel(b *testing.B) {
+ v := AccountAssetModel{}
+ bts := make([]byte, 0, v.Msgsize())
+ bts = v.MarshalMsg(bts[0:0])
+ b.SetBytes(int64(len(bts)))
+ b.ReportAllocs()
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ bts = v.MarshalMsg(bts[0:0])
+ }
+}
+
+func BenchmarkUnmarshalAccountAssetModel(b *testing.B) {
+ v := AccountAssetModel{}
bts := v.MarshalMsg(nil)
b.ReportAllocs()
b.SetBytes(int64(len(bts)))
diff --git a/ledger/msgp_gen.go b/ledger/msgp_gen.go
index 0ec2773f0..5e0a02567 100644
--- a/ledger/msgp_gen.go
+++ b/ledger/msgp_gen.go
@@ -729,14 +729,6 @@ func (z *baseAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
if zb0001 > 0 {
zb0001--
- bts, err = (*z).baseOnlineAccountData.StateProofID.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "StateProofID")
- return
- }
- }
- if zb0001 > 0 {
- zb0001--
bts, err = (*z).baseOnlineAccountData.VoteFirstValid.UnmarshalMsg(bts)
if err != nil {
err = msgp.WrapError(err, "struct-from-array", "VoteFirstValid")
@@ -761,6 +753,14 @@ func (z *baseAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
if zb0001 > 0 {
zb0001--
+ bts, err = (*z).baseOnlineAccountData.StateProofID.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "StateProofID")
+ return
+ }
+ }
+ if zb0001 > 0 {
+ zb0001--
(*z).UpdateRound, bts, err = msgp.ReadUint64Bytes(bts)
if err != nil {
err = msgp.WrapError(err, "struct-from-array", "UpdateRound")
@@ -874,12 +874,6 @@ func (z *baseAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "SelectionID")
return
}
- case "F":
- bts, err = (*z).baseOnlineAccountData.StateProofID.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "StateProofID")
- return
- }
case "C":
bts, err = (*z).baseOnlineAccountData.VoteFirstValid.UnmarshalMsg(bts)
if err != nil {
@@ -898,6 +892,12 @@ func (z *baseAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "VoteKeyDilution")
return
}
+ case "F":
+ bts, err = (*z).baseOnlineAccountData.StateProofID.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "StateProofID")
+ return
+ }
case "z":
(*z).UpdateRound, bts, err = msgp.ReadUint64Bytes(bts)
if err != nil {
@@ -924,13 +924,13 @@ func (_ *baseAccountData) CanUnmarshalMsg(z interface{}) bool {
// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (z *baseAccountData) Msgsize() (s int) {
- s = 3 + 2 + (*z).Status.Msgsize() + 2 + (*z).MicroAlgos.Msgsize() + 2 + msgp.Uint64Size + 2 + (*z).RewardedMicroAlgos.Msgsize() + 2 + (*z).AuthAddr.Msgsize() + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint32Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + (*z).baseOnlineAccountData.VoteID.Msgsize() + 2 + (*z).baseOnlineAccountData.SelectionID.Msgsize() + 2 + (*z).baseOnlineAccountData.StateProofID.Msgsize() + 2 + (*z).baseOnlineAccountData.VoteFirstValid.Msgsize() + 2 + (*z).baseOnlineAccountData.VoteLastValid.Msgsize() + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size
+ s = 3 + 2 + (*z).Status.Msgsize() + 2 + (*z).MicroAlgos.Msgsize() + 2 + msgp.Uint64Size + 2 + (*z).RewardedMicroAlgos.Msgsize() + 2 + (*z).AuthAddr.Msgsize() + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint32Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + msgp.Uint64Size + 2 + (*z).baseOnlineAccountData.VoteID.Msgsize() + 2 + (*z).baseOnlineAccountData.SelectionID.Msgsize() + 2 + (*z).baseOnlineAccountData.VoteFirstValid.Msgsize() + 2 + (*z).baseOnlineAccountData.VoteLastValid.Msgsize() + 2 + msgp.Uint64Size + 2 + (*z).baseOnlineAccountData.StateProofID.Msgsize() + 2 + msgp.Uint64Size
return
}
// MsgIsZero returns whether this is a zero value
func (z *baseAccountData) MsgIsZero() bool {
- return ((*z).Status.MsgIsZero()) && ((*z).MicroAlgos.MsgIsZero()) && ((*z).RewardsBase == 0) && ((*z).RewardedMicroAlgos.MsgIsZero()) && ((*z).AuthAddr.MsgIsZero()) && ((*z).TotalAppSchemaNumUint == 0) && ((*z).TotalAppSchemaNumByteSlice == 0) && ((*z).TotalExtraAppPages == 0) && ((*z).TotalAssetParams == 0) && ((*z).TotalAssets == 0) && ((*z).TotalAppParams == 0) && ((*z).TotalAppLocalStates == 0) && ((*z).baseOnlineAccountData.VoteID.MsgIsZero()) && ((*z).baseOnlineAccountData.SelectionID.MsgIsZero()) && ((*z).baseOnlineAccountData.StateProofID.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteFirstValid.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteLastValid.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteKeyDilution == 0) && ((*z).UpdateRound == 0)
+ return ((*z).Status.MsgIsZero()) && ((*z).MicroAlgos.MsgIsZero()) && ((*z).RewardsBase == 0) && ((*z).RewardedMicroAlgos.MsgIsZero()) && ((*z).AuthAddr.MsgIsZero()) && ((*z).TotalAppSchemaNumUint == 0) && ((*z).TotalAppSchemaNumByteSlice == 0) && ((*z).TotalExtraAppPages == 0) && ((*z).TotalAssetParams == 0) && ((*z).TotalAssets == 0) && ((*z).TotalAppParams == 0) && ((*z).TotalAppLocalStates == 0) && ((*z).baseOnlineAccountData.VoteID.MsgIsZero()) && ((*z).baseOnlineAccountData.SelectionID.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteFirstValid.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteLastValid.MsgIsZero()) && ((*z).baseOnlineAccountData.VoteKeyDilution == 0) && ((*z).baseOnlineAccountData.StateProofID.MsgIsZero()) && ((*z).UpdateRound == 0)
}
// MarshalMsg implements msgp.Marshaler
@@ -1036,14 +1036,6 @@ func (z *baseOnlineAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
if zb0001 > 0 {
zb0001--
- bts, err = (*z).StateProofID.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "struct-from-array", "StateProofID")
- return
- }
- }
- if zb0001 > 0 {
- zb0001--
bts, err = (*z).VoteFirstValid.UnmarshalMsg(bts)
if err != nil {
err = msgp.WrapError(err, "struct-from-array", "VoteFirstValid")
@@ -1067,6 +1059,14 @@ func (z *baseOnlineAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
}
}
if zb0001 > 0 {
+ zb0001--
+ bts, err = (*z).StateProofID.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "struct-from-array", "StateProofID")
+ return
+ }
+ }
+ if zb0001 > 0 {
err = msgp.ErrTooManyArrayFields(zb0001)
if err != nil {
err = msgp.WrapError(err, "struct-from-array")
@@ -1101,12 +1101,6 @@ func (z *baseOnlineAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "SelectionID")
return
}
- case "F":
- bts, err = (*z).StateProofID.UnmarshalMsg(bts)
- if err != nil {
- err = msgp.WrapError(err, "StateProofID")
- return
- }
case "C":
bts, err = (*z).VoteFirstValid.UnmarshalMsg(bts)
if err != nil {
@@ -1125,6 +1119,12 @@ func (z *baseOnlineAccountData) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "VoteKeyDilution")
return
}
+ case "F":
+ bts, err = (*z).StateProofID.UnmarshalMsg(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "StateProofID")
+ return
+ }
default:
err = msgp.ErrNoField(string(field))
if err != nil {
@@ -1145,13 +1145,13 @@ func (_ *baseOnlineAccountData) CanUnmarshalMsg(z interface{}) bool {
// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (z *baseOnlineAccountData) Msgsize() (s int) {
- s = 1 + 2 + (*z).VoteID.Msgsize() + 2 + (*z).SelectionID.Msgsize() + 2 + (*z).StateProofID.Msgsize() + 2 + (*z).VoteFirstValid.Msgsize() + 2 + (*z).VoteLastValid.Msgsize() + 2 + msgp.Uint64Size
+ s = 1 + 2 + (*z).VoteID.Msgsize() + 2 + (*z).SelectionID.Msgsize() + 2 + (*z).VoteFirstValid.Msgsize() + 2 + (*z).VoteLastValid.Msgsize() + 2 + msgp.Uint64Size + 2 + (*z).StateProofID.Msgsize()
return
}
// MsgIsZero returns whether this is a zero value
func (z *baseOnlineAccountData) MsgIsZero() bool {
- return ((*z).VoteID.MsgIsZero()) && ((*z).SelectionID.MsgIsZero()) && ((*z).StateProofID.MsgIsZero()) && ((*z).VoteFirstValid.MsgIsZero()) && ((*z).VoteLastValid.MsgIsZero()) && ((*z).VoteKeyDilution == 0)
+ return ((*z).VoteID.MsgIsZero()) && ((*z).SelectionID.MsgIsZero()) && ((*z).VoteFirstValid.MsgIsZero()) && ((*z).VoteLastValid.MsgIsZero()) && ((*z).VoteKeyDilution == 0) && ((*z).StateProofID.MsgIsZero())
}
// MarshalMsg implements msgp.Marshaler
diff --git a/libgoal/libgoal.go b/libgoal/libgoal.go
index 9c4fc4d62..a0107ba77 100644
--- a/libgoal/libgoal.go
+++ b/libgoal/libgoal.go
@@ -675,7 +675,7 @@ func (c *Client) AccountApplicationInformation(accountAddress string, applicatio
}
// RawAccountApplicationInformation gets account information about a given app.
-func (c *Client) RawAccountApplicationInformation(accountAddress string, applicationID uint64) (accountResource modelV2.AccountResourceModel, err error) {
+func (c *Client) RawAccountApplicationInformation(accountAddress string, applicationID uint64) (accountResource modelV2.AccountApplicationModel, err error) {
algod, err := c.ensureAlgodClient()
if err == nil {
var resp []byte
@@ -697,7 +697,7 @@ func (c *Client) AccountAssetInformation(accountAddress string, assetID uint64)
}
// RawAccountAssetInformation gets account information about a given app.
-func (c *Client) RawAccountAssetInformation(accountAddress string, assetID uint64) (accountResource modelV2.AccountResourceModel, err error) {
+func (c *Client) RawAccountAssetInformation(accountAddress string, assetID uint64) (accountResource modelV2.AccountAssetModel, err error) {
algod, err := c.ensureAlgodClient()
if err == nil {
var resp []byte