diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index e0827feb16..3315137360 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -3948,6 +3948,10 @@ "fix-signers": { "description": "If true, signers for transactions that are missing signatures will be fixed during evaluation.", "type": "boolean" + }, + "populate-resources": { + "description": "If true, return populated resource arrays for each transaction based on unnamed resources", + "type": "boolean" } } }, @@ -4230,7 +4234,40 @@ } } }, - "SimulateTransactionGroupResult": { + "ResourceArrays": { + "description": "Resource arrays that are required for a transaction", + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "type": "string", + "x-algorand-format": "Address" + } + }, + "assets": { + "type": "array", + "items": { + "type": "integer", + "x-algorand-format": "uint64" + } + }, + "apps": { + "type": "array", + "items": { + "type": "integer", + "x-algorand-format": "uint64" + } + }, + "boxes": { + "type": "array", + "items": { + "$ref": "#/definitions/BoxReference" + } + } + } + }, + "SimulateTransactionGroupResult": { "description": "Simulation result for an atomic transaction group", "type": "object", "required": [ @@ -4265,6 +4302,13 @@ }, "unnamed-resources-accessed": { "$ref": "#/definitions/SimulateUnnamedResourcesAccessed" + }, + "extra-resource-arrays": { + "description": "Present if populate-resource-arrays is true in the request and additional tranactions are needed to name all the accessed resources.", + "type": "array", + "items": { + "$ref": "#/definitions/ResourceArrays" + } } } }, @@ -4296,6 +4340,10 @@ "description": "The account that needed to sign this transaction when no signature was provided and the provided signer was incorrect.", "type": "string", "x-algorand-format": "Address" + }, + "populated-resource-arrays": { + "description": "Present if populate-resource-arrays is true in the request. In this case, it will be all of the resources this transaction needs to be evaluated.", + "$ref": "#/definitions/ResourceArrays" } } }, diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml index 3fb04f5add..da0e678657 100644 --- a/daemon/algod/api/algod.oas3.yml +++ b/daemon/algod/api/algod.oas3.yml @@ -2250,6 +2250,39 @@ ], "type": "object" }, + "ResourceArrays": { + "description": "Resource arrays that are required for a transaction", + "properties": { + "accounts": { + "items": { + "type": "string", + "x-algorand-format": "Address" + }, + "type": "array" + }, + "apps": { + "items": { + "type": "integer", + "x-algorand-format": "uint64" + }, + "type": "array" + }, + "assets": { + "items": { + "type": "integer", + "x-algorand-format": "uint64" + }, + "type": "array" + }, + "boxes": { + "items": { + "$ref": "#/components/schemas/BoxReference" + }, + "type": "array" + } + }, + "type": "object" + }, "ScratchChange": { "description": "A write operation into a scratch slot.", "properties": { @@ -2306,6 +2339,10 @@ "description": "If true, signers for transactions that are missing signatures will be fixed during evaluation.", "type": "boolean" }, + "populate-resources": { + "description": "If true, return populated resource arrays for each transaction based on unnamed resources", + "type": "boolean" + }, "round": { "description": "If provided, specifies the round preceding the simulation. State changes through this round will be used to run this simulation. Usually only the 4 most recent rounds will be available (controlled by the node config value MaxAcctLookback). If not specified, defaults to the latest available round.", "type": "integer" @@ -2375,6 +2412,13 @@ "description": "Total budget consumed during execution of app calls in the transaction group.", "type": "integer" }, + "extra-resource-arrays": { + "description": "Present if populate-resource-arrays is true in the request and additional transactions with the following resources need to be added to the transaction group.", + "items": { + "$ref": "#/components/schemas/ResourceArrays" + }, + "type": "array" + }, "failed-at": { "description": "If present, indicates which transaction in this group caused the failure. This array represents the path to the failing transaction. Indexes are zero based, the first element indicates the top-level transaction, and successive elements indicate deeper inner transactions.", "items": { @@ -2421,6 +2465,9 @@ "description": "Budget used during execution of a logic sig transaction.", "type": "integer" }, + "populated-resource-arrays": { + "$ref": "#/components/schemas/ResourceArrays" + }, "txn-result": { "$ref": "#/components/schemas/PendingTransactionResponse" }, diff --git a/daemon/algod/api/server/v2/generated/data/routes.go b/daemon/algod/api/server/v2/generated/data/routes.go index dc0159d20d..f4a3cd931b 100644 --- a/daemon/algod/api/server/v2/generated/data/routes.go +++ b/daemon/algod/api/server/v2/generated/data/routes.go @@ -274,67 +274,69 @@ var swaggerSpec = []string{ "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", - "/xb9Ejq6CAEA", + "+pbcLAyzn4cZcKzullPRIAcyVG/lWMjNNSbn71bxPJmqlQ9dzf0q8i1RERQpmeQVkFvvzJFiEg3eF4y0", + "6mmQon+i6o+d4tHTwliOVCQOhrMcKXgPxmsyh9/ViE1mv0kssBMAmjJIDHbugnyNz5BFp0x+mLwiyrKC", + "LmjOvI+SmVKlorBvkmDDDZWm8XgyBMiCnJLnoYHCD54i3XRF+wT/pKSFPl2hWjINrfv/pnkbh8X3U7aY", + "/szNLN2baqk0dMrou96Uo7V5soQJUPE/C2E117ubZFccFP+fQGYeywcD6ZoYunYhbRzdEIdlqa4zvGay", + "pkJJyijh2pmuGBXK5bX9HD9eQBSRx40XsXdszQuWK60hj3ukX+oSVBulISsVBuilYgeW1mlMG3yeJ1mp", + "VkxVuSqAKv2kKWhsrlpKjgIvRPFQSRQQ7eA7b+oT0fHEKZ00RB7ADIXkg4nxw+a/dn0o50Cbj4sWnZEX", + "eiTWHIzPv+UxRI2H8CLhUMKavhU4fasuxRbpBnTqyC+Z1TXMmW/Rr24eXWMbYQyB0tDStShLfPIvtpHP", + "vAk5SaO2UhViat9GNmD5KNDQp93JcMsmsdGUmRrsfxKiERXqHEN0rwTGcXUTUpBmVTn5qcnSEXOliziF", + "FrNrrerVOkpW3mAumE907Y0r8Sg/mhpD7fA1opviCdsoY73VgkZqN6ENX/wkV9JqVZZdAyepeyvvtfmO", + "b8/y3L5Q6nLB88v7aCORyjYrLebhrX4/0LSdSffS1HWFuYxK4x9O+0ztMOzSH6PJLLvHdAcOlkMeiwjM", + "d4d5+mH/zdlwYf11ddl7WiU+k4xbtRF5+pT/uSI3R+MtU0wzmf+O6nRSxhJshuwnvj6bQB1k2kM0g+TJ", + "QoNnzDMCH7CADMX9F7W5/rhsCZ71jVzdQ+bi5bosH5U+ewAgpPSM3vE+ZLmxbNhwFbWitBsYbtEHdOI9", + "h1Ftt4PNjXDnQFm4FVCDSNoGwE/IkDWnPIUUlbtQ2/D9fpvI8EbAf9hP5R3mMRYueNGSlqaAwZD0aIQj", + "pNOl742te40pFBZTI+yaQswTZY4IgPGYuw4MkyLvjgWDpK9w+Wd8RHN/SYZPtIH2hRPfCT1auoYAgPai", + "PGY5KgrhY50Gwje55ZSTS31mDC+HSqCLfwEe/cP46QS733cT9uwTCT17yUUJRZYqa3remH/nkRHLv3rs", + "lnVHMYUutpzXoaqoG7vW4HMSkQ6mu67lijt8qKb50EkjC9gCPZn6FbQiOW4euTahpGqiPTubqrISrqCD", + "f58oqUZdQFxB6GuazqwAqNDR3zc/p0IOY9EmgddaQxYFrU3BbtJISYilnWIHLJBJe+lWZsQ1zFTO4iC6", + "EkXdo99jJbCuhd1xtgSqBkpcFhT9qdP8SCMEajdnoX9KsguYeDeNLR/NkdOo28ePD4Yg12aMCcp0BHKc", + "BazxXeJsRRPjQCTeslFT8Ws5butPcdKgD0/cJ6FkhNivtpCjkOcVUii8Sjri//MJhZDaHack/ui6JBxZ", + "a5BMqqh66zU3jebWpicNP9DE2EhIb+64QbxGGyh8+51lOBgzvTyF6SCjoAqn7rUj74fmhNzOifa7HOq9", + "Z3p0vBS5GfBm+j22znBQvEKHDbDgvnSk4bQqLKXqL0R/IczZog4DOQmAKrvGGv5zCNEKRMjBUesVHmFa", + "eYPQPfdJePtmLRG9KtnwHVMa/3H6/D9rXorlDlkWgd/YUMyaO2r04REUt+Njtd3E+wXXeQAsWNZUmIrW", + "LaaOGQ23c6NEQDuZIJTgUmzDLyHeBgxJIlacW8eDTb1AK5W7/XvbOcSCX3xIpLThRWxDwXSuuw6jCQm+", + "Xe//v32xGk8VsjBWJc9DHV9fSKzLsrBWdyAuu4bN/ifNQxYZSKCp/90SrQ7ekeIG5vHbO5tGiyR1wB7U", + "RR7Uh7rVMiZa+XuVcPZ4zyYt5a534VYuulBN9RD4cXHZj4P/ZKblvZ7GA+D/UfA+Uk46hpcqR38ELO93", + "kwbdeKG2mYalORQGRq6Jhdq2AJvGeC1kroEbios7/8Gr9G0iYSEbHbmNPGhGKWApZMsshaxqm1CJUNOW", + "uwhhsYMH0TriLh2TEpxcesXLH65Aa1GMbZw7HVR4NS7kEpxavm/CONTcqcMBhGnVQXxF3bpM4mbuAqdS", + "cRRUbSyXBddF3FxIloN29z675jtzc+9h43E55D/kkTTTze0ReRKRtAmQcudDN27p22sA5Hfo5JvgnMPo", + "/YRjrrHapH1xQxj+FM65Dd9mpVrhW9+RA+EzSKM3l7RJJdHBQPLZtHWHeYz4FfZPg8UzPCOyCmedMsX+", + "c/8DbiVqpD9KYfeefLL+9h9fU3Q8HcyAVLlqn+gQsQzPY+q9vE+RFL+ZD8JmeFAWaA+iTYQRz1vX4zCy", + "ixjy4pMtxO6F6UUJu1E1qVf5ZGTI0Phg9jzCAdM+OOG5D6IcWuUGVgtCytznNDjSaEeej3AvjYCHVhXj", + "z3p32iawzY1zTCXH/VkMskpVWT4lMpvq6xTeAeMh7cI4Qh+Re2Vk3U0olGkqTnWyk3VKTx1bzHK09NUh", + "P2KV71P6xyxOIxy969xRS+RleITJzoaxeo1dZt5/Cdq1qDVMgnGmIa81Wpyv+e5wccCRvO4Xfzv77NHj", + "nx9/9jlzDVghVmDa2gC94npt9K6QfRPSx43XHSzPpjch5AghxAXPbnj62GyKP2vEbU2b+HdQWvAYU3Xi", + "Akgcx0RRtxvtFY7TPsD5Y21XapF3vmMpFPz2e6ZVWaZrszRyVcIXk9qtyBvjNJAKtBHGOkbY9S0L275b", + "MGs0D2KG7ivK+aRkDsEU7alA2JHwutRCxsLekZ9hBgbvgGKwrUrPq8hptG9dXk8jCx0KjRhvtIAo6kos", + "WQqixisajOze8InG9SiSvWG2FNOeIkT/PiRNenFZ+/3cvlty2aY5vdvEhHgRDuUNSHPM1TGeXeQmnKT1", + "Evxh+EciXcqdcY1mub8Fr0jqB3syA5wNIkqaVCGTQBumzkiQBwIw8ia+85o5es4ZpQvX5CVAf0LwRffF", + "j+9aH/XBx1sISehwALz4kXvbrnlv5MH5nfNuf9cgJVrKuzFK6Cz/0Lv5wHqbiyTaIm80sRYMsSU1FAuj", + "pAjmWZNrYEQrGaQk0EpZ5jTTskykMiA7Dp6pmHCcSqCvePnxucbXQht7hviA4tX4A8b4PXuMZEKluVk2", + "zRd80tzR2/W7m1q+xPQJfwe3R8l7zg/l/fmD2wyNO7ykUPpl49gGya5xTAo6evQ5W/iSOJWGXJh+nMB1", + "EE6a59ugxdKHCsPWHngvfmidPyl7CzJehqAe9n3k3mrc/x7C9oj+zkxl5OQmqTxFfQOySOAvxaPiEtoH", + "rotblk+5WXKmKM3ikcmZhsXBpy6PEhC5S6c2MFzn5Nu6g9vERd2ubWpmsclVWN6+fWMXUxKCpSumuO6Y", + "kexOSqccVTjlN8hFRjjyY/h5UxTz01h2asrAPJJBv7cftSgPBqx06iF8mM9WIMEIgxn/f/YVnj7uXRog", + "oPwow6NKsN4mqRMhJrHWzuTRVFGlgwlFDny3RGZ6fHuc11rYHVb3DgY08XMya9o3TQYen8Gp8aX5u8+q", + "S5Ah3qPN11ObcLt+o3iJ9xG5+KS7hVR5wr6iPPz+oPz13uI/4NO/PCkefvroPxZ/efjZwxyefPbFw4f8", + "iyf80RefPoLHf/nsyUN4tPz8i8Xj4vGTx4snj598/tkX+adPHi2efP7Ff9xzfMiBTICGAhxPZ/8rOytX", + "Kjt7eZ69dsC2OOGV+Bbc3qCuvFRYfdYhNceTCBsuytnT8NP/CCfsJFebdvjw68xXUZutra3M09PT6+vr", + "k7jL6QoTdGRW1fn6NMyDNUE78srL8+b1A8Xh4I621mPcVE8KZ/jt1VcXr9nZy/OTlmBmT2cPTx6ePPIF", + "6CWvxOzp7FP8CU/PGvf9FLPgnhpf4OK0qqjExYf57NTTof9rDbzEVFfujw1YLfLwSQMvdv7/5pqvVqBP", + "8O0L/XT1+DRIHKfvfQ6TD/u+ncbRH6fvO6leigM9Q3TDoSan70MR6/0DdgoY+7iyqMNEQPc1O11g4aqp", + "TSFe3fhSUFUxp+9R2B79/dRbTNIfUemh03QaUiaNtKTkGOmPHRS+t1u3kP3DuTbReDm3+bquTt/jf/Bg", + "RCuiXLunditP0Ul8+r6DCP95gIju7233uMXVRhUQgFPLJVX+3vf59D39G00E2wq0cBIn5rfyv1IewlMs", + "ALkb/ryT3qVZQip71I/SAGnEofbHTubtw8GGV5wXofHFTuZBNA5xj8gBHj98SNM/wf/MfIG0Xo6lU3+e", + "Z3RnHzTMdLLbIn/t2eQaeOl5JNiTGcLw6OPBcC4p1tExXLoYPsxnn31MLJxLJ8PwkmFLmv7Tj7gJoK9E", + "Duw1bCqluRbljv0om3DNqFx1igIvpbqWAXInVdSbDdc7lNY36goM85WwI+JkGpx8RCEd6OZvaRivNe74", + "yJtZVS9Kkc/mlMv4HUpkNiWcBEPRcKZgJGsH756Kbw6eiem70JV59ySPmgTngeQUNPxQYB/ub9j7vpuV", + "prqX2qDZvxjBvxjBHTICW2s5ekSj+wszIELlHwjnPF/DPn4wvC2jC35WqVSikIs9zMLXGRrjFRddXtGG", + "E86evplWhtN7NshoXYBxh/kkKCxOGm/1Cd1wpHDm0a8a7bVfwOxpqnzZuz/E/f6My3CeOztOrkuuSwG6", + "oQIuh6Wf/sUF/p/hAlTDjtO+zpmFsjTx2bcKzz55eXxiW0net4l8oJOHuBWmOz+fBttESgfttnzf+bOr", + "V5l1bQt1Hc2CVn1ySQ21DPexNv2/T6+5sNlSaZ/+li8t6GFnC7w89bWuer+25SUGX7BmRvRj/Po0+esp", + "9+pG6hvyurGOA3049dWrfCONQqRz+Nxa1mJLFfLZxkb15p3jcgb0VWDBreHl6ekpPn1ZK2NPZx/m73tG", + "mfjju4awQhXfWaXFFVYbeTefbTOlxUpIXmbeqtEW7Js9Pnk4+/B/AwAA//+etxoxYAwBAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/experimental/routes.go b/daemon/algod/api/server/v2/generated/experimental/routes.go index 5d9044ed56..c0f78b9fdb 100644 --- a/daemon/algod/api/server/v2/generated/experimental/routes.go +++ b/daemon/algod/api/server/v2/generated/experimental/routes.go @@ -290,71 +290,74 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/model/types.go b/daemon/algod/api/server/v2/generated/model/types.go index d03f3d99f0..755bdd9375 100644 --- a/daemon/algod/api/server/v2/generated/model/types.go +++ b/daemon/algod/api/server/v2/generated/model/types.go @@ -766,6 +766,14 @@ type PendingTransactionResponse struct { Txn map[string]interface{} `json:"txn"` } +// ResourceArrays Resource arrays that are required for a transaction +type ResourceArrays struct { + Accounts *[]string `json:"accounts,omitempty"` + Apps *[]uint64 `json:"apps,omitempty"` + Assets *[]uint64 `json:"assets,omitempty"` + Boxes *[]BoxReference `json:"boxes,omitempty"` +} + // ScratchChange A write operation into a scratch slot. type ScratchChange struct { // NewValue Represents an AVM value. @@ -801,6 +809,9 @@ type SimulateRequest struct { // FixSigners If true, signers for transactions that are missing signatures will be fixed during evaluation. FixSigners *bool `json:"fix-signers,omitempty"` + // PopulateResources If true, return populated resource arrays for each transaction based on unnamed resources + PopulateResources *bool `json:"populate-resources,omitempty"` + // Round If provided, specifies the round preceding the simulation. State changes through this round will be used to run this simulation. Usually only the 4 most recent rounds will be available (controlled by the node config value MaxAcctLookback). If not specified, defaults to the latest available round. Round *uint64 `json:"round,omitempty"` @@ -837,6 +848,9 @@ type SimulateTransactionGroupResult struct { // AppBudgetConsumed Total budget consumed during execution of app calls in the transaction group. AppBudgetConsumed *uint64 `json:"app-budget-consumed,omitempty"` + // ExtraResourceArrays Present if populate-resource-arrays is true in the request and additional transactions with the following resources need to be added to the transaction group. + ExtraResourceArrays *[]ResourceArrays `json:"extra-resource-arrays,omitempty"` + // FailedAt If present, indicates which transaction in this group caused the failure. This array represents the path to the failing transaction. Indexes are zero based, the first element indicates the top-level transaction, and successive elements indicate deeper inner transactions. FailedAt *[]uint64 `json:"failed-at,omitempty"` @@ -864,6 +878,9 @@ type SimulateTransactionResult struct { // LogicSigBudgetConsumed Budget used during execution of a logic sig transaction. LogicSigBudgetConsumed *uint64 `json:"logic-sig-budget-consumed,omitempty"` + // PopulatedResourceArrays Resource arrays that are required for a transaction + PopulatedResourceArrays *ResourceArrays `json:"populated-resource-arrays,omitempty"` + // TxnResult Details about a pending transaction. If the transaction was recently confirmed, includes confirmation details like the round and reward details. TxnResult PendingTransactionResponse `json:"txn-result"` diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go index 7e8da1ba91..331ec46063 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/private/routes.go @@ -169,231 +169,234 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go index 31d870e45e..95bea833a5 100644 --- a/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/nonparticipating/public/routes.go @@ -746,308 +746,310 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "z0/tvgEA", + "H4sIAAAAAAAC/+z9fXfbtrIojH8VLN+7Vl6uKCdp2rOb3+q6Pzfpi2/TNCt2u+85TZ8WIiEJxxTADYC2", + "1D757s/CDACCJChRtuIku/4rsUgCg8FgMO/z11EuV5UUTBh99Oyvo4oqumKGKfiL5rmshcl4Yf8qmM4V", + "rwyX4uiZf0a0UVwsjiZH3P5aUbM8mhwJumLNO/b7yZFi/6q5YsXRM6NqNjnS+ZKtqB3YbCr7dhhpnS1k", + "5oY4wSFOXxy92/KAFoViWveh/EmUG8JFXtYFI0ZRoWluH2lyxc2SmCXXxH1MuCBSMCLnxCxbL5M5Z2Wh", + "p36R/6qZ2kSrdJMPL+ldA2KmZMn6cD6XqxkXzEPFAlBhQ4iRpGBzeGlJDbEzWFj9i0YSzajKl2Qu1Q5Q", + "EYgYXibq1dGzX480EwVTsFs545fw37li7E+WGaoWzBz9Nkktbm6YygxfJZZ26rCvmK5Lowm8C2tc8Esm", + "iP1qSn6stSEzRqggb759Tj777LMv7UJW1BhWOCIbXFUze7wm/Pzo2VFBDfOP+7RGy4VUVBRZeP/Nt89h", + "/jO3wLFvUa1Z+rCc2Cfk9MXQAvyHCRLiwrAF7EOL+u0XiUPR/Dxjc6nYyD3Blw+6KfH8H3RXcmryZSW5", + "MIl9IfCU4OMkD4s+38bDAgCt9yuLKWUH/fVR9uVvfz2ePH707n/8epL9l/vz88/ejVz+8zDuDgwkX8xr", + "pZjIN9lCMQqnZUlFHx9vHD3opazLgizpJWw+XQGrd98S+y2yzkta1pZOeK7kSbmQmlBHRgWb07o0xE9M", + "alFaNmVHc9ROuCaVkpe8YMXEct+rJc+XJKcah4D3yBUvS0uDtWbFEK2lV7flML2LUWLhuhY+YEEfLzKa", + "de3ABFsDN8jyUmqWGbnjevI3DhUFiS+U5q7S+11W5HzJCExuH+BlC7gTlqbLckMM7GtBqCaU+KtpQvic", + "bGRNrmBzSn4B37vVWKytiEUabE7rHrWHdwh9PWQkkDeTsmRUAPL8ueujTMz5olZMk6slM0t35ymmKyk0", + "I3L23yw3dtv/z9lPr4hU5EemNV2w1zS/IEzksmDFlJzOiZAmIg1HS4BD++XQOhxcqUv+v7W0NLHSi4rm", + "F+kbveQrnljVj3TNV/WKiHo1Y8puqb9CjCSKmVqJIYBwxB2kuKLr/qTnqhY57H8zbUuWs9TGdVXSDSBs", + "RddfPZo4cDShZUkqJgouFsSsxaAcZ+feDV6mZC2KEWKOsXsaXay6Yjmfc1aQMMoWSNw0u+DhYj94GuEr", + "AscPMghOmGUHOIKtEzRjT7d9Qiq6YBHJTMnPjrnBUyMvmAiETmYbeFQpdsllrcNHAzDC1NslcCENyyrF", + "5jxBY2cOHZbB4DuOA6+cDJRLYSgXrLDMGYCWhiGzGoQpmnC7vtO/xWdUsy+eDt3xzdORuz+X3V3fuuOj", + "dhteyvBIJq5O+9Qd2LRk1fp+hH4Yz635IsOfexvJF+f2tpnzEm6i/7b759FQa2ACLUT4u0nzhaCmVuzZ", + "W/HQ/kUycmaoKKgq7C8r/OnHujT8jC/sTyX+9FIueH7GFwPIDLAmFS74bIX/2PHS7Nisk3rFSykv6ipe", + "UN5SXGcbcvpiaJNxzH0J8yRou7Hicb72ysi+X5h12MgBIAdxV1H74gXbKGahpfkc/lnPgZ7oXP1p/6mq", + "0n5tqnkKtZaO3ZUM5gNnVjipqpLn1CLxjXtsn1omwFCRoM0bx3ChPvsrArFSsmLKcByUVlVWypyWmTbU", + "wEj/U7H50bOj/3Hc2F+O8XN9HE3+0n51Bh9ZkRXFoIxW1R5jvLaij97CLCyDhkfAJpDtgdDEBW6iJSVu", + "WXDJLqkw00ZlafGDcIB/dTM1+EZpB/HdUcEGEU7wxRnTKAHji/c0iVBPAK0E0AoC6aKUs/DD/ZOqajAI", + "z0+qCvEB0iPjIJixNddGP4Dl0+YkxfOcvpiS7+KxQRSXotzYywFFDXs3zN2t5W6xYFtya2hGvKcJbKdU", + "U7s1Hg1WzD8ExYFasZSllXp20op9+Xv3bkxm9vdRH38aJBbjdpi4QNFymEMdB36JlJv7HcrpE44z90zJ", + "Sffb65GNHWULwejTBouHJh74hRu20jspIYIooia3PVQpujlyQmIGwl6fTH7WDCmkogsuANqJVZ8EWdEL", + "3A8JeLeEwHTQi5CWUIIMJlQnczrUT3t2lk+AWlMb6yVRK6mWXBvQq+FlsmQlCM5UeIKOSeValDFiw7cs", + "IsB8pWiFtOyeoNjFBejz+BLCesOLd+SdmIQ5YvfRRgNU12bLO1lnEhLgGh0Yvi5lfvE91csDnPCZH6tP", + "+zANWTJaMEWWVC8TB6dD281oY+jbvgg0S2bRVNOwxJdyoQ+wxFLuw7qq6jktSzt1n2V1VgsDjzrIZUns", + "y4StOBjMneKIFnbUv8g3NF9asYDktCwnjalIVlnJLllplXYuBFMTYpbUNIcfRvZ6DZwjzSyzM4xEq3Fm", + "JjCxqWCLUIysKNxAK6vNVGX7m8BBNV2xjhQEN6KswYoQKRqnL/zq2CUTwJPC0AB+WCNYa+LBp3Zu9whm", + "FhIXhxZA4913AX+BX7SAtm8396loppCqQJu1sb9xRXKpcAi84d3k9j+MquZjpM77lWKZG0LRS6Y0Le3q", + "Oot6EMj3UKdzx8ksqKHRyXRUmFbAkHPAdyDeMZWw0vwE/6ElsY+tFGMpqaEeDsKIjNypBV7MFlU4k30B", + "7K2SrNCUSSqaX+wF5fNm8jSbGXXyvkHrqdtCt4iwQ+drXuhDbRMMNrRX7ROCtivPjnqyyFamE801BgHn", + "siLIPjogIKeA0RAhcn3wa+1ruU7B9LVc9640uWYH2Qk7zmhm/7Vcv3CQSbUb8zD2GKTbBQq6YhpuNxEz", + "TjtL45c7mUl1PWmic8EI0ngbCbWjRsLUpIMkeLWuMnc2Ex4LfKEzUBPgsV0I6A6fwlgLC2eGvgcsaDvq", + "IbDQHujQWJCripfsAKS/TApxM6rZZ0/I2fcnnz9+8vuTz7+wJFkpuVB0RWYbwzS578xyRJtNyR4ktSOQ", + "LtKjf/HU+6ja46bG0bJWOVvRqj8U+r5Q+8XXiH2vj7U2mmHVAcBRHJHZqw3RTtCta0F7wWb14owZYzXd", + "10rOD84NezOkoIOXXlfKCha67Sd00tJxYV85Zmuj6HEFbzJRYJyBXQfXVgdczQ5CVEMbXzSzFMRhtGA7", + "D8W+29RMs4m3Sm1UfQjzBlNKquQVXClpZC7LzMp5XCYMFK/dG8S94ber6v6O0JIrqomdG7yXtSgG7BBm", + "LcbfXzj0+Vo0uNl6g+F6E6tz847ZlzbyGy2kYioza0GAOlvmkbmSK0JJAR+CrPEdMyh/8RU7M3RV/TSf", + "H8baKWGghB2Hr5i2MxF8w0o/muVSYDDfDpONG3UMerqI8V4mMwyAw8jZRuTgKjvEsR22Zq24AL+93og8", + "Mm1ZGEtWLFpkeXMT1hA6cKp7OgGORcdLeAy2+hesNPRbqc4b8fU7Jevq4Oy5O+fY5VC3GOcNKOy33gzM", + "xaJsB5AuLOzT1Bo/yIKeByMCrgGgB4p8yRdLE+mLr5V8D3dicpYUoPAAjUWl/aZvMnolC8tMTK0PIEo2", + "gzUcztJtzNfoTNaGUCJkwWDza50WMgdCDiHWCUK0TCy3gn2CazJjlrpyWtvV1hWBAKTefdF8mNEcT2gG", + "qNED4RchbgbfwukwnK1UjBYbMmNMEDlzMQ4u+gIWSSF6yngxzYm4CX7RgqtSMmdasyJzpuidoPn38Oow", + "W/AEgAPAYRaiJZlTdWNgLy53wnnBNhnE+mly/4df9IMPAK+RhpY7EAvvpNDbtaf1oR43/TaC604ekx1a", + "6pBqrXhrGUTJDBtC4V44Gdy/LkS9Xbw5Wi6ZgpCS90rxfpKbEVAA9T3T+02hrauBCHanplsJz26YoEJ6", + "wSo1WEm1yXaxZftSy5ZgVxBxwhQnhoEHBK+XVBsMg+KiAJsmXicwDwphdophgAfVEDvyL14D6Y+d23tQ", + "6FoHdUTXVSWVYUVqDeCRHZzrFVuHueQ8GjvoPEaSWrNdIw9hKRrfIctpwPAHNcH/6jy6/cWBT93e85sk", + "KltANIjYBsiZfyvCbhzFOwAI1w2ikXC47lBOCB2eHGkjq8pyC5PVInw3hKYzfPvE/Ny82ycudHLgvV1I", + "psGB4t53kF8hZjF+e0k1cXB4FzuYczBeqw+zPYyZ5iJn2TbKBxXPvhUfgZ2HtK4WihYsK1hJN4ngAHxM", + "8PG2AWDHG3VXGpZhIG560xtK9nGPW4aWMJ5OCY8EnpDcHkGrCjQE4r7eMXLBYOwUc3J0dC8MBXMlt8iP", + "B8vGrU6MCLfhpTR2xx09AMiOo48BeAAPYejrowI+zhrdszvFfzLtJghyxP6TbJgeWkIz/l4LGLAFuxyn", + "6Lx02HuHAyfZ5iAb28FHho7sgGH6NVWG57wCXecHtjm46tedIOk4JwUzlJesINEDVAOr+HuCIaTdMa+n", + "Co6yvfXB7xnfEsvxYTpt4C/YBnTu15ibEJk6DqHLJka19xMVBAD1Ec9WBI9fYWuam3JjBTWzZBtyxRQj", + "up5hCEPfn2JklcUDJP0zW2Z03tmkb3Sru/gMhoqWl4o1Q51gO3znHcWghQ6nC1RSliMsZD1kJCEYFTtC", + "Kml3nbv0J58A4ympBaRj2uCaD9f/Pd1CM6yA/KesSU4FqFy1YUGmkQoEBRAg7QxWBAtzuuDEBkOsZCuG", + "miQ8efiwu/CHD92ec03m7MrnDNoXu+h4+BDsOK+lNq3DdQB7qD1up4nrAxxX9uJzWkiXp+yOeHIjj9nJ", + "153Bg7fLnimtHeHa5d+YAXRO5nrM2mMaGRftBeOO8uW044N664Z9P+OruqTmEF4rdknLTF4ypXjBdnJy", + "NzGX4ptLWv4UPoN8SJZbGs1ZlkMW38ix2Ln9BhP/7DhccHuAMeh/LEDsFL86w492qJhNpCpfrVjBqWHl", + "hlSK5Qzz3azkqMNSpwQj4fMlFQtQGJSsFy64FccBhl9rNM2oWvSGSApVZi0yMHKnLgAXpuZTHq04xahV", + "6boWclRgrmiYz2W5jrmZoz3oegySTrLJ0aDGa5F62Wi8iJx23uaIy6Al70X4aSYe6UoB1FnZp4+veFvs", + "YbKb+35M9s3QKSj7E0cRv83DoaBfq26XmwMIPTgQUaxSTMMVFZupND6V8zhH24cKbrRhq74lHz/9feD4", + "vRnUF6UouWDZSgq2SZYl4YL9CA+TxwmuyYGPQWAZ+rarg7Tg74DVnmcMNd4Uv7Db3RPa9Vjpb6U6lEsU", + "Bxwt3o/wQO50t7spr+snpWWZcC26DM4uA9CTEKzLFaFay5yDzHZa6ImLCkZvpEv3bKP/dchLOcDZ647b", + "8aHFxQHARszKilCSlxwsyFJoo+rcvBUUbFTRUhNBXF4ZH7ZaPvevpM2kCSumG+qtoBDAFyxXyYCNOUuY", + "ab5lzBsvdb1YMG06us6csbfCvcUFqQU3MNfKHpcMz0vFFERSTfHNFd2QuaUJI8mfTEkyq01b+ocEZW14", + "WTqHnp2GyPlbQQ0pGdWG/MjF+RqG805/f2QFM1dSXQQspG/3BRNMc52lg82+w6cQ1++Wv3Qx/hDujo99", + "0GlTMeHILrNVJOX/uf+/n/16kv0Xzf58lH35v45/++vpuwcPez8+effVV/9v+6fP3n314H//z9ROedhT", + "6bMO8tMXTjM+fQHqTxSq34X91uz/Ky6yJJHF0Rwd2iL3oVSEI6AHbeOYWbK3wqyFJaRLWvLC8pbrkEP3", + "humdRTwdHappbUTHGObXuqdScQMuQxJMpsMary1F9eMz04nq4JR0uedwXua1wK300jfmYfr4MjmfhGIE", + "WKfsGYFM9SX1QZ7uzyeff3E0aTLMw/OjyZF7+luCknmxTtURKNg6pSvGSRL3NKnoRjOT5h4AezKUDmM7", + "4mFXbDVjSi95dfucQhs+S3M4n7LkbE5rcSowwN+eH3BxbpznRM5vH26jGCtYZZap+kUtQQ3eanaTsU7Y", + "SaXkJRMTwqds2rX5FFZfdEF9JaNzH5iqpByjDYVzgITmqSLCeryQUYaVFP100hvc5a8Prg65gVNwdedM", + "RfTe++6bc3LsGKa+hyUtcOioCEFClXbJk62AJMvN4pyyt+KteMHmYH2Q4tlbUVBDj2dU81wf15qpr2lJ", + "Rc6mC0me+XzMF9TQt6InaQ0WVoySpklVz0qek4tYIWnIE4tl9Ud4+/ZXWi7k27e/9WIz+uqDmyrJX3CC", + "zArCsjaZK/WTKXZFVcr3pUOpFxgZa3ltmxWFbFmjgdSXEnLjp3kerSrdLfnQX35VlXb5ERlqV9DAbhnR", + "RoZ8NCuguJReu7+vpLsYFL3ydpVaM03+WNHqVy7MbyR7Wz969Blk9jU1EP5wV76lyU3FRltXBktSdI0q", + "sHBUKyFWPavoIuVie/v2V8NoBbsP8vIKbBxlSeCzVtahTzCAoZoFhBTnwQ1AOPZODobFneFXvqxjegnw", + "CLawnYB9o/2K8uevvV07cvBpbZaZPdvJVWlL4n5nQrW3hRWyfDSG5gvQVl1hvBkj+ZLlF65iGVtVZjNp", + "fe4Dfpyg6VkH11jLDjMMoZoSOChmjNRVQZ0oTsWmW9ZGY0YFDPqGXbDNuWyKMe1Tx6ZdVkUPHVSg1Ei6", + "tMQaH1s3RnfzXVSZTzR11UkgedOTxbNAF/6b4YOMIu8BDnGKKFplP4YQQVUCEUj8Ayi4xkLteDci/dTy", + "uMiZMPySZazkCz5LleH9Z98f5mG1VOkqD7oo5DCgJnxOrCo/w4vVqfeKigWz17O9UqWmJVZVTQZtgD60", + "ZFSZGaNmq51fxAUpPHSgUl5B5jVY+CZ2CWxt95sbsNgJdmW1CjAU4Tsuenk6HH+GgLPimvD4zxtNYTqo", + "6zrUJSoO+ls5YDeotS40L6YzgAufrxiULJVXdl8sFNJV28SiLtH9Umu6YAO6S+y9G1kPo+Xxg0F2SSRJ", + "GUTOu6JGTxJIgowvZ3bNyTPM7BN7iEHN7ARk+pnQQex8RlBE2yFsVoIAGyJXce+panlRsSrwEGhp1sKU", + "aERBD0YbI/FxXFLtjyPUS/VcdpR09h7LvmwrTXcaxRJGRVFD4Tl/G3Y5aE/vdwXqfFU6X4ouVvpHlJWz", + "uhekL6S2QwoQTQtWsgUuHF/2hNIUTGo2yMLx03wOvCVLhSVGBupIAHBzMKu5PCQEfSNk9AgpMo7AhsAH", + "GJi8kvHZFIt9gBSu4BP1Y8MVEf3N0ol9GKhvhVFZ2cuVD/gbc88BXCmKRrLoRFTDMISLCbFs7pKWls05", + "XbwZpFchDRSKTj00F3rzYEjR2OKawit/rzWhkHCd1cTSrAc6LWpvgXgm1xlmKCd1kdl6Zuk9mbsA+dKp", + "g4m16O5pMpNrCOeCqwVj5XfAMgyHByOyvay5BnqF74bkLARm27Tb5dwUFWogGWdoDeQyJOiNmXpAthwi", + "l/tReblrAdAxQzW9GpxZYqf5oC2e9C/z5labNGVTfVpY6vgPHaHkLg3gr28faxeE+74p/DdcXMyfqFup", + "hNe3LN2kQiF+XGHVwX0KFHbJoQXEFqy+7sqBSbS2Y73aeI2wlmIllvn2nZJ9tGlWMlCCs5Zoml2kIgWs", + "Ls/gHj/zn0XGOtg9KjYPogBCxRZcG9Y4jXxc0Icwx1MonyzlfHh1plJzu743UobLH93m8GFrmbe+AojA", + "n3OlTQYet+QS7EvfajAifWtfTUug7RBFbDbAizTHhWkv2CYreFmn6dXN+8MLO+2rcNHoega3GBcYoDWD", + "5hjJwOUtU2Ns+9YFv8QFv6QHW++402BftRMrSy7tOT6Rc9FhYNvYQYIAU8TR37VBlG5hkFHCeZ87RtJo", + "FNMy3eZt6B2mwo+9M0rNp70P3fw4UnItURnAdIagXCxY4cubeX+YiIrIlVIsoi5OVbWtZt6UYOk6qDy3", + "pWidC8NnQ0H4kbifcVGwdRr6WCsAyJvMOii4B5MsmMByJWmzUBI1cYg/vBHZ6m7ZF9pNAEgGQZ93nNlN", + "dDLuUthO2ICS0cLpJJr59W0/lv0NcaibDIVPtyqfbj9CMCDQFDdRY5N+GYIBBkyrihfrjuMJRx00gtG9", + "rMsD0hawFjfYDgy0g6CTBNcqpe1CrZ2B/Rh03mOrlWHstQsstvRNc5eAX9QKPBityOZ+3fagq41c+w+/", + "nBmp6II5L1SGIN1oCFjOPmiIqqJrYjiGkxR8Pmex90Vfx3PQAq5nYy9GkG6CyNIumpoL88XTFBntoJ4G", + "xt0oS1NMghaGfPLnfS+Xl+kjU1K4EqKtuYarKpmu/wPbZL/QsrZKBle6Cc91bqf25bvHrl+ufmAbGHln", + "1KsFbMeugOXpDQMaTFn6wyMdFbC+p1sl/kG9bG3hHjt1kt6lA22Na8owTPzNLdNqWtBeyk0ORhMkYWEZ", + "sxtn6dgEe3pYG/FdUt61CbzYLYNE8n48Fde+hWX/Kgq1KHbR7jmjpSdeWM7Ru8nRzSIBUreZG3EHrl+H", + "CzSJZ4g0Rc9wK7BnT5TTqlLykpaZi5cYuvyVvHSXP7zuwytuWZNJU/b5NycvXzvw302O8pJRlQVLwOCq", + "4L3qk1kVtnHYfpVgtW9n6ERLUbT5oSJzHGNxBZW9O8amXlOUJn4mOoou5mKeDnjfyftcqA8ucUvID6tC", + "xE/j88SAn3aQD72kvPTORg/tQHA6LG5cZ50kV4gHuHGwUBTzlR2U3fROd/p0NNS1gyfBXD9Bacq0xiFc", + "4UpgRS74hx5cevpWqhbzd5mJyeCh9ydWWSEb8TgQq+37V3aFqSlBweuPxR/2ND58GB+1hw8n5I/SPYgA", + "hN9n7nfQLx4+THoPk2YsyyTASiXoij0IWRaDG3G7CrhgV+Mu6JPLVZAs5TAZBgrFKCCP7iuHvSvFHT4L", + "90vBSmZ/mo5R0uNNR3THwIw5QWdDmYghyHSFLTM1kaIbUw1JsJa0gNm7lgzojO0fIVGvwIGZ6ZLn6dAO", + "MdOWvQoMprQvE3h5wFprR6z5QGyuqHk0ln1tTM3UDpDRHElk6mTZ1gZ3M+mOdy34v2pGeGG1mjlnCu61", + "zlXnlQMYtSeQpu1ibmD0UzXD38QOssXf5G1B24wgW/13L4JPyS801fRnzwjweMYe494Sve3ow1EzZrMt", + "2yGY4/SYMa3TPaNzzrqBOZKt0LnO5kr+ydKOEPAfJQpheMcnBzPvn0ykIve6LCU4lZuO7s3su7Z7vG48", + "tPE31oX9okPXsetcpulTvd9GXkfp1elyzQ7JQ0pYHGHQTg0YYC1wvKJgWGiD4qOPqMDzhFUgWhlm6VMZ", + "53Ie4/jNqXQw9/JfS3o1o6keMVYXsjBF29uKkzKS+I/9BuhQ4wBnJ1EEd3iXYyW5iqnGB9GvSntNvQan", + "Ha3RNAoMUFSsukwwTKHUMjFMLa6owC7i9jvkV+5rzdAFb7+6kgrqQOp0SFfBcr5KmmPfvv21yPvhOwVf", + "cGyQXWsWdWB2AxEsNglU5LpYh8odDjWnc/JoErWBd7tR8Euu+axk8MZjfGNGNVyXwR0ePrHLY8IsNbz+", + "ZMTry1oUihVmqRGxWpKge4KQFwITZ8xcMSbII3jv8ZfkPoRkan7JHlgsOiHo6NnjLyGgBv94lLplXYPz", + "bSy7AJ7tg7XTdAwxqTiGZZJu1HT09Vwx9icbvh22nCb8dMxZgjfdhbL7LK2ooAuWzs9Y7YAJv4XdBHd+", + "By8CvQFMGyU3hJv0/MxQy58Gcr4t+0MwSC5XK25WLnBPy5Wlp6a9Mk7qh8Ne/65flIfLP4T418qH/3Vs", + "XbesxtDVQM4WRCm/Ah9tjNYJoVj8s+RNZLrv10lOfW1haKAV+mYhbuxcdukgS0Kg+pxUigsD9o/azLN/", + "WLVY0dyyv+kQuNnsi6eJRlTtXi1iP8BvHe+KaaYu06hXA2TvZRb3LbkvpMhWlqMUD5oaC9GpHAzUTYdk", + "DsWFbh96rORrR8kGya1ukRuNOPWNCE9sGfCGpBjWsxc97r2yW6fMWqXJg9Z2h35+89JJGSupUg0DmuPu", + "JA7FjOLsEjLm0ptkx7zhXqhy1C7cBPoPG//kRc5ILPNnOakIRB7NbcnyVor/5cem8jk4VjETsWMDlCph", + "7XR2u1uONtzP6tb132LAGDwbwNxotMEofawMRN9jeH345kPEC3VBwj1vGRwf/0GU1cFBjn/4EIB++HDi", + "xOA/nrQfI3t/+DBdgDhpcrO/Nli4iUYM36b28GuZMID5roUhoMjVR0gYIIcuKfvAMsGZG2pC2h3ibl+K", + "OEx+VzraNH0K3r79FZ54PMAfXUR8YGYJG9hkKQwf9naHzCTJFOF5FOdOyddyPZZwOneQJ56PAEUDKBlp", + "noOV9DqAJt31O+NFIhq1o85YKa2SGTcFiu35nw6e7eInW7Bd87L4pant1rlIFBX5MhklPLMf/o4yeusK", + "RlaZ7DOypEKwMjkc6ra/ex04oaX/txw7z4qLke92O9DicjuLawBvg+mB8hNa9HJT2glirLbLZoWyDOVC", + "FgTmaZpaNMyx38o51UIzkd8Mw65q4+JWIRfcFRya8xLCMNN+Y3gzU9QMFNCCfue+v5AdB9qPazQz4OhM", + "EcpXcDFruqpKBifzkim6gE+lYJ3PoYQajBx1rCC6so/gTShYIYmplSByPo+WwYThipWbCamo1jjII7ss", + "toa5j549fvQoafYC7IxYKWLRL/OnZimPj+EVfOKaLGErgL2A3Q3ru4ai9tnYPuG4npL/qpk2KZ4KDzBz", + "Fbyk9tbGfpKh9+mUfAeVjywRt0rdg7nSFxFuF9Ssq1LSYgLFjc+/OXlJcFb8BlvIYz/LBVjr2uSfdK+M", + "LzDqKzsNVM4ZP872Uh521dpkof1kqjahfaNpkMk7MTdgx4uxMyUv0IQaGvjjJARKZKsVK6Jul6jEA3HY", + "/xhD8yXYJlsS0DCvHN+I1bOzxnMTZR+G7kfAsC3crhcrtmKdEGmWTF1xzSAjn12ydjnEUBvU2cZ9ecT2", + "8lQtBFLKdA9hNPQ62hftHjiUZH1QQRKyDuL3tExhP+Z9+9KewVfpXIxOk9uO198X1/MltsmPzrmQUyEF", + "z6EVQkqShtJt49yUI7pGpP2L+sid0MThSrbWDbnADouDzXY9I3SI67v8o6d2U5E68E/D1q7l2oIZ7Tgb", + "Kya+07VziHGhmetmZYko5pNSJYKakokQIYBiTzKCqkwDFs5v7bNXzv4NRTEuuABLl0Ob08/QZVVqDp5p", + "QbghC8m0W087m0f/ar+ZQpXGgq1/m76UC56f8QWMgWF0dtkYM9of6sRHkLqITfvuc/uuq50ffm6Fg+Gk", + "J1XlJh3ug54UJM1aDCI4FbfkA0ki5Ibx49G2kNvW0G+4Ty2hsUuIWmMV3MM9wgi9tNujfGN1S6QoeINg", + "RmWygC4XCTBecuFdqOkLIk9eCbAxcF4HvtO5ogZ1h1E87ZzRciABAjKU0Qd/06G6nQMsSmCNfo7hbWza", + "gA8wjvBCI/FTsSH+UFjqjoSJ57QModOJpt4gVTkhqoDkok6b7xTjsIw78ymTLXTtTN8Ln0M3jn1voqEa", + "hbO6WDCT0aJIlbb6Gp4SeOqTxNia5XVoQhWyA9s1yvvU5ibKpdD1astc/oUbThf1zU9QQ9y73+8wVNqZ", + "beDfVAem4Z1xQdN7Z+X6COliv8L8/SzjlNRraTrTfJGNxwTcKTdHRzP19Qi9+f6glO7TdT+KbNwOl4v3", + "KMXfvrEXR1y4txefjldLqKsLseASnvuCR6EiZJsrwVXW6zMGUQ+weYkt6wDvX0wCfknLgUz42FeC9yv6", + "D4by4fPB8g3UuPJchpKtLGiw5BHGCne8L30X4lB8MIYHH85r4da6FaHDvrsfWp46jBFrmMWgh+56TrRm", + "g/f1ov1wOVQiwffpgOdxPxAXxTNxZeDZJZe1j77yMdBeJcRfXQmeVt+PgfUnMws+tNdi0Mdy7vrX4jKd", + "Tv7DL+iFJUwYtfkIPC69Te82lUlIu2ieal4hofXhqFaIrVtxTA+bVLsUJxt6WxmylhYt9drP9MjqxRhx", + "oIePd5Oj02KvCzPVcucIR0kdu5d8sTRQsf97RgumXu/oSNB0IYAjVknNmw6kpR3MlYBdwnDTsckGloB5", + "3FGhP5YPQr1kuYG2s01wnWJsn/4KdjLv9LnrTDCsToecDNeQYFsXgn6v2R13fK9wUlT8C/t0TsfX3D8J", + "IdSYAXZFdVOupZMzPTpzcz5nOVRF3lqo6p9LJqIiSBNvlwFY5lHdKh7ymKCu9/5WxwagbXWktsIT9de5", + "MThDeewXbHNPkxY1JBuHhiS+6xQOBgygC8zXkB4yJLuoMa4DZQAWfEiwK8XcNMcYrPkclV275lyeJO3F", + "0ZRi2zJluun5qLnsp3uVfYSUnKFaVv2eycP6xwtoUa1dgBwNhYdjLZ2c9hvnXLnCxVBWLPhOfAljpv1v", + "voYgzlLyC9c/ALCCnqorqgr/xkGKQuHdxNNAz8PMvEng6Ac5JFoxQC5UXkorRmRDCWXtnIkQcHhPY2Ro", + "U8AH4JozpVgRXCKl1Cwz0id8bINjGyow/PVaSNCD7Y8QuMHS12+a2t7QBo5CqWvqol7jBRLFVtRCp6IK", + "3MNzbkP2c3zuk/B9G7CdFqZAr7v70frUHa57SIypfk7cbbk7uf86xiYuBFOZ9zx1y3GLdkU2qLtZ1Dle", + "0PHBCAa50bVztrCSpJ0m76+yoyNESfIXbHOMSpBv5Ot3MAYaJScEPSo42tnkg5rfdAruxUHA+7B15Cop", + "y2zA2XHaryHepfgLnl8wqAEYQtwHerST+2BjD97sq+XG18yuKiZY8WBKyInApCLv2G63F+xMLu6ZbfOv", + "YdaixrL+zqg2fSvS2RlQcF/dkJv5YbbzMM0sq7vhVDjIjgrVazEUcnMFxfnbXTynY7Xyvqu520W+ISqE", + "IiWTvGHo1juxpJhEg/MFA606GsTon6j7Y6t59Lgwlj0ViZ3hLHsK3r3xQuXwQ40YKvuNYoGtANCUQaK3", + "c2foa3wOLDpl8oPiFVGVFXBBU+J8lESXMhWFfZ0CG3aoNI3HkwFAhokxdR4CFG7wFOmmO9on+CcWLXTl", + "CuWcKNa4/69bt7HffD9li+nOHGZp31RzqVirjb79Gmu0hpQlKIAK/5lxo6jaXKe6Yq/5/wgyc1jeGUgX", + "YuiahTRxdH0clqW8yuCayUKHkpRRwr6n22KUb5fXfGf58YxFEXlUOxF7Q5a0ILlUiuXxF+lMXYRqJRXL", + "SgkBeqnYgbmxGtMK0vMEKeWCyCqXBcNOP2kKGpqrFoKCwMuieKgkCpB2IM8bv4noeOSUVhpCD2AGQvLO", + "wvh+88/tN1hzoKnHhYvO0As9EGvOtKu/5TCEL/fhBcLBgjVdK3D6Vp3zNdANU6kjPydG1WxC3Bvd7ubR", + "NbbiWiMogZaueFlCyj9fRz7zEHKSRm0lK8DUto0MYLkoUP9Ns5P+lk1iI7SZ6u1/EqIBFeoUQnQvOcRx", + "tQtSoGZVWfkpVOmIudJZXEKLmKWS9WIZFSsPmPPmE1U740o8ys+6hlA7yEa0UzwlK6mNs1rgSM0mNOGL", + "93MpjJJl2TZworq3cF6bH+n6JM/NSykvZjS/eAA2EiFNWGkx8bn63UDTZibVKVPXFuYybI2/u+wzvgdh", + "l+4YjWbZHabbc7Ds8lhEYP62m6fv9t+c9BfWXVebvadV4hNBqJErnqdP+acVuTkYb5limsn6d9inEyuW", + "wGvAfuLrMwTqANPuo5kJmmw0eEIcI3ABC8BQ7H9Bm+uOS+bMsb6Bq7vPXJxcl+WD0mcHAIAU0+gt7wOW", + "G8uGgavIBZbdgHCLLqAj7zmIarsZbHaEgwNl2I2A6kXSBgDvoyFrgnUKMSp3Jtf++YOmkOG1gH+3ncpb", + "zGMoXPCsIS2FAYO+6NEAR0iXS98aW3cOJRRmYyPsQiPmkTJHBMBwzF0LhlGRd/uCgdKXv/wzOqC5v0bD", + "J9hAu8KJ+wg8WqpmHgDlRHmoclQU3MU69YRvdMtJK5e6yhhODhUML/4Zc+jvx08n2P22m7Bjn0jo2XPK", + "S1Zkqbamp8H8O4mMWC7rsd3WHcQUvNhyWvuuonbsWjFXkwh1MNV2LVfU4kOG1/tOGlGwNcOUqT+ZkijH", + "TSLXJiuxm2jHziarrGSXrIV/VyipBl2AXzL/rQ4fk4KxChz9XfNzKuQwFm0SeK0Vy6KgtTHYTRopEbG4", + "U2SHBTJpL12LDLmGHstZLESXvKg79LuvBNa2sFvOlkBVT4nLvKI/dpqfcQRP7frEf5+S7DwmfhvHlvfm", + "yGnUbePHO0OQaz3EBEU6AjmuAhZ8lzBbEWIckMQbNqoreiWGbf0pTur14ZH7xKWIEPvNmuUg5DmFlBVO", + "JR3w/7mCQkDtllMif7SfJBxZSyaIkFH31iuqg+bWlCf1P+DE8BIXztxxjXiNJlD45jtLYDCiO3UK00FG", + "XhVO3Wt73g/hhNzMifZBDvXWMz04XorcNHNm+i22Tn9QnEIHL0DDfWFJw2pV0ErVXYjuQpiQWe0HshIA", + "dnaNNfwXzEcrICF7R61TeLhu5A1E98QV4e2atXiUVbKiGyIV/GP1+X/VtOTzDbAsBD/YUPSSWmp04REY", + "t+Nite3E2wXXiQfMW9aknwrXzceOGQ23saNEQFuZwLfgkmRFL1i8DRCShKw4N5YH63oGVip7+3e2s48F", + "t3hfSGlFi9iGAuVcNy1G4wt826//f03GajyVr8JYlTT3fXxdI7E2y4Je3Z64zJKttqc091mkJ4HQ/7sh", + "WuW9I8U1zOM3dzYNNklqgd3ri9zrD3WjZYy08nc64Wzxno1ayqF34UYuOt9NdRf4cXPZ28F/stLyVk/j", + "DvA/FrwPtJOO4cXO0beA5e1uUq8bz+Q6U2yud4WBoWtiJtcNwDoYr7nIFaMa4+JOf3IqfVNImIugIzeR", + "B2GUgs25aJglF1VtEioRaNpiEyEsdvAAWgfcpUNSgpVLL2n50yVTihdDG2dPBzZejRu5eKeW+zZhHAp3", + "an8Arht1ELKoG5dJ/Jq9wLFVHAZVa0NFQVURv84FyZmy9z65oht9fe9h8Ljs8h/SSJpp1/aIPIlA2ghI", + "uXGhGzf07QUA6QGdfCOccxC9n3DMBatN2hfXh+GTcM6t6Dor5QJyfQcOhKsgDd5c1CalAAcDymfj1u3n", + "0fxPtn0aaJ7hGJGRMOuYKbaf+59gK0Ej/Vlws/Xko/W3m3yN0fF4MD1SxaJJ0UFi6Z/HVL68K5EU58x7", + "YdMnlHnaY9EmsgHPW9vjMLCLEPLiii3E7oXxTQnbUTWprHw0MmRgfNBbknCYbhJOaO6CKPtWuZ7VApEy", + "cTUN9jTaoefD30sD4IFVRbuz3p42BLbZcfbp5Li9ikFWySrLx0RmY3+dwjlgHKRtGAfoI3KvDKw7hELp", + "0HGqVZ2s1Xpq32aWg62vdvkRq3yb0j9kcRrg6G3njpwDL4MjjHY2iNULdplJNxO0bVELTIJQolheK7A4", + "X9HN7uaAA3Xdz74/+fzxk9+ffP4FsS+Qgi+YbnoDdJrrNdG7XHRNSLcbr9tbnklvgq8Rgojznl2f+hg2", + "xZ015La6Kfzbay24j6k6cQEkjmOiqdu19grGaRJwPq7tSi3y4DuWQsH73zMlyzLdmyXIVQlfTGq3Im+M", + "1UAqpjTXxjLCtm+ZmyZvQS/BPAgVui+x5pMUOfOmaEcF3AyE16UWMhT2DvwMKjA4BxRh66p0vAqdRtvW", + "5fQ0tNCB0AjxRjMWRV3xOUlBFLyi3sjuDJ9gXI8i2QOzxZj2FCG6/JA06cVt7bdz+3bLZZPm9HYTE+KF", + "P5TXIM0hV8dwdZHrcJLGS/DR8I9EuZSDcY2w3PfBK5L6wZbKACe9iJJQKmQUaP3SGQnyAAAGcuJb2cxR", + "OmdULlyhlwD8Cd4X3RU/fmx81DuTtwAS/8EO8OIk9+a9kG/kwPnAdbd/DEiJlvLbECW0lr8rb96z3nCR", + "RFvkjCbGMI1sSfbFwqgogn4eag0MaCW9kgRKSkOsZlqWiVIGaMeBMxUTjlUJ1CUtb59rfMuVNieAD1a8", + "GU5gjPPZYyQjKvX1qmm+pKPmjnLXDze1eA3lE/7J7B4l7zk3lPPn924zMO7QEkPp58GxzQS5gjEx6Ojx", + "F2TmWuJUiuVcd+MErrxwEtK3meJzFyrM1mZHvviudf4izQ3IeO6DesiryL0V3P8OwuaIfmCmMnByk1Se", + "or4eWSTwl+JRcQvtHdfFDdunXK84U1Rmcc/iTP3m4GOXhwWI7KVTa9Zf5+jbuoXbxEXdrG1sZbHRXVje", + "vv3VzMYUBEt3TLGfQ0Wyg7RO2atxynuoRYY4cmO4eVMU88tQdWqswDxQQb+zHzUvdwastPohvJscLZhg", + "mmuo+P+76/B0u3ephwDro/SPKsJ6k6JOiJjEWluTR1NFnQ5GNDlwnyUq00PucV4rbjbQ3dsb0Pjvyapp", + "34UKPK6CU/ClubvPyAsmfLxHU6+n1v52/U7SEu4jdPEJewvJckq+wTr87qB8dW/2H+yzfzwtHn32+D9m", + "/3j0+aOcPf38y0eP6JdP6eMvP3vMnvzj86eP2OP5F1/OnhRPnj6ZPX3y9IvPv8w/e/p49vSLL//jnuVD", + "FmQE1DfgeHb0f7OTciGzk9en2bkFtsEJrfgPzO4N6MpzCd1nLVJzOIlsRXl59Mz/9P/3J2yay1UzvP/1", + "yHVRO1oaU+lnx8dXV1fT+JPjBRToyIys8+Wxnwd6grbkldenIfsB43BgRxvrMWyqI4UTePbmm7NzcvL6", + "dNoQzNGzo0fTR9PHrgG9oBU/enb0GfwEp2cJ+34MVXCPtWtwcVxV2OLi3eTo2NGh+2vJaAmlruwfK2YU", + "z/0jxWixcf/XV3SxYGoKuS/40+WTYy9xHP/lapi8s5MnXYPY8SAqc+/jFqt6VvLcVwvkGm3EmJ6g4zbP", + "aDyv9YTMsBG4D/kVBUQhYVkQHTfDPy0sLvHz04af+V7m4Do+evZroq6cT5vxLbbjuLIo4uz/nP30ikhF", + "nObzmuYXIWXI54g1eXFxipj9cupJ+181U5uG9BxTnBzp0KefiXpl+YvLPVrpRdUusdwIXCmDUA/XfmZL", + "MRHNh4pDDU8D618EScOhLdd9lH3521+f/+Pd0QhAoPyVZtBx9Q9aln+gBY2tIQ63E1wzGQp7mjQVbOCD", + "ZicnYKwKT6PPm3fanQn+EFKwP4a2wQGW3AdalvZFKVhqD36DnqBALHAcnzx65HmQk/Aj6I7dmYpmGdWM", + "Ax0IYRRPEtcYqM+r8NGbUKRW0QrP4omPNt5UwYWDL00tS3p6wIW2S+neeLnd4XqL/poWPlUFl/L4k13K", + "qcBwT3vn4N34bnL0+Se8N6fC8hxaEngzarjdv2h+FhdCXgn/ppWL6tWKqg1IPSbwwm6HKLrQ4DcFFoln", + "O6qDKBZHv70bvPWO47jG479aRcyKG92J6Ehp9VfbcU3e00OcE8bClD73w/2TqoKwzrPw/KSqsH8/hAow", + "DrcfW3Nt9IMp+S7+uuX/QEjQ/dFKIfDt7H2T/JY7PGqMm7y0W0Um7u7vD3t/n7TtILxgwvA5B5k8BUzr", + "FGyFqReQdNMLtJ9SFBUr2zfmORSqd6JF5pogjhwDj9MBO3yOqHSDM/2W0hJ3Muo73A3gbkhMiuANElPT", + "XvR2WLOveR1uktaV8R4Z9ycu9P1IS0sn0XI7vaVOX9wJg38rYTDUxl2gdFZVBxAPfXLGrleO/3L1Xg8h", + "NYJ6PEpejDXv6Nsovv5+h+M8mJKT7jvXYyuuXu5OSdC+dycDfgwyIBYc3iX9OTr+oHJfnNq1T6ZVS2Cx", + "v4/6+BMX9P7GyBqU7Cyku2W6a7DPnrzmmPV7Y6v/lnKaQ9qdhPa3ltBCFfsbyWhxeOuxqzQQSWw3MvB1", + "DXjcBEms3ckg4mxQnQRy7vEIT5pQfstiMEbZRSfriVcewRmLeiVu1qSnWvZFrO9YrMN+vTl9sUu6+oRM", + "QaMbkidugfTevG9emvRMvLkdz8Q43vT00dPbgyDehVfSkG/hFn/PHPK9srQ0We3LwrZxpOOZXO/iSqLD", + "lkJ5P3toWzwqVHGdRM/t2xjjcR+yetst7B5Mydfu1abSh8taX0jLqHw2GFUL/MjyOosMcs//+QzGvzcl", + "30KOo9ETCFXDMnH2RS7Ms8dPPnvqXlH0CiPBuu/Nvnj67OSrr9xrleLCQMgA6jm917VRz5asLKX7wN0R", + "/XHtg2f/9z//azqd3tvJVuX6680r7Hn9sfDWSapeZCCAod36xDcppa27XuQ7UXcrHv6v5Tp5C8j13S30", + "wW4hi/1/i9tn1iYjp4gGY2erK9YBbyM8JvvcR6GgueU74TKZklfSNSisS6qwBgwUINZkUVNFhWGsmHpK", + "hSw7jXXv8pJDeQBFNFOXTGWah0LftWKhUEml2CVE2DclclsQ7Gb0EIf70TL5H+k6So2fhWvaSLdkMHuu", + "6JpAxx1DNDMTrJK2Jl99RR5NGu2lLO0AWUBMirmu6ProFq1+e3dIeeGwI9Xu8F4Ye4wFqZF+QjnKRtX4", + "u3PuT1ZyR3J3G3sgzrm346dx7MR2BNcGcKsFAQU7A7WkdV1V5aYpm2ulPC9CpVmcnWGsceAj9hHsNE0n", + "ldAueu8O8Z0R4EaspEtQe7INyFnVx3+BXh7zjN65hZy7v5e7NPIdKbnyziNJ5szkS5fu20F9gj0pl3I4", + "zJtWXPCVhfLR5L1LNbCL/XLJcRf2gmKS/ZhGf1EmJjjwmEoQ8U+Vq9VvH/M5VoL37VJ8xUJwTbli2qH1", + "MSrf2Azdhfz7rOCKtlo574byeTN5XyADtBzC/3mH4P0Q3GOO37iKBni83CL+HZICvCqZkVeySTpHDerf", + "0vX4Pm/2972gV1Iw9LFbyRdp8c6dGsQOyzgQKb7aCOovTXOy64ogx75Kz1Y55Hv70g5ZZMztDRV/PsUr", + "/PtkLaPWLWPXNt1ZSqEZbQxzti9i+4S42Mn0Q2oxH4SffoSqzYfgWLfDYuCQej7jxAJxWKYDBXyQmI8r", + "X21piAO9tC9HchnWNBrNjYwMYWgsUTmIzFgpxUJ/nKxoG3Wk8ZKgEqxThV1Yeuuf/g3P7nPX18S4tGNX", + "LUpzkTOi5YqBymBldFd0GiH8x+1BaPjK99AXcXrrB+Yunz/67PamP2PqkueMnLNVJRVVvNyQn0XoX3IT", + "bqcJdXseW4MTzIEL8Da1q4rlcQmkGzBBudjiXXN266Yuoka5StaGKayI1+l4xXtMOmUPBobx0k59AHmu", + "lItPTZzzWB9byPk5LUtA1y4nEww8Kkq5LHE/2Yob07SFiG9X8g3Nl2FvJ411L/QB9PXDJ52KkzCyawqH", + "qf6a2X02jESriawVTGHLeQO9mVYUApZXdWl4Vba/Cd0eodtPIgwJaTNuFHD6wq8OnbNy3gzdpV9fbdwN", + "PrVzu0cws5C4OKoY8O5gW+k0kJq2gMa+Vz78OupW5HouuWKGXHWqSzaxM1XFqGo+Rsq/XymWuSEUvWRK", + "UzisnUU9uBPVPw5Rfe3KGX8kgnrSR3lTXn/9q6gVRf2XWfPi3W65PKoIvKdIzkUkksfsAs/a9WXx3VEU", + "3b7spy/iRBUZamZ5AWEAFIuiPXO1/tfRSBcIFGmRc6eH1QIB9WUsncTqskjkfBLiNK1CKufPyFvxkOgl", + "9VWW3Z9PPv9iwIlj53HV5/punGYg+xiHGePL+aQ9U4eVOAJ+n932bu+3iZMjXqwTpeRFwdZR95J2o2R3", + "H97TpKIbn9HR7+iZrqgcFNN42BWz15Re8ur2q/Zqw2fpsuXeEncGjZ7O1+JUfB0Mslha1koN1Yeo1jo5", + "MoqxglVmubOIM7zV7CZz5Zy5do13sNTuhPApm2Il2qZBWrFg7mKipGR0HjqdSTkmjy/iM5bQPFVEWI8X", + "MkaSTtIPyLxAlLdvJ23y3fCi88jrCsUfVAgzH0oIyzpSWBstH04mg5YNkyjyqlLSyFyWGEZZV5VUJpxu", + "PR1leWBDgl7L8DBEuDcS5ta80DtdOufw1gFsAG3K1p+MS+fcoynl00kt6pqlZZu5xrC0c1mRXqN/C8IH", + "5Wt3SmWKn3XcP5+698cMkt6BnUE5Nfmyro7/gv9Aad13Tc4uNB3Rx2YtjqHN5PFfW6NrgaWWVjZR2K+k", + "ZdLtNa1Mxsi+hM+b3ijfStVtCL4zeraDtEn30seWmRCGm2CP70eb/FsrYVtdZ50Nv3k0SGLE3nkNJSmi", + "RnuBdqOOO77KBLbZTJDwXfTSx7Wgxp8456IgNNrGjq0ptOb3OsA/PtlFfwgX5e2HbH3+CZ+zV9KQ01VV", + "shUThhU3C3wnXQ7nb4+t1+1+goG7+vvR8f07P77xfU5PkEV2XvB76D1RFSPmp6MKygrZu/r9qDt3N/nH", + "fZM/D97WmAzv7uVP515WPhPp7gr++K/gzz7Z1bzHGKaRV/I1nMPta7jRxPe8kHvCgLNhdQwH2/zKoHp3", + "V6m/lcr3lbu7xT9Rpyju5OhArDEWml2WWDflIbLOPirox9kZyjJhaRg6qJMQ68WhXqPMOXTnOS30xAWV", + "oXHCneI7weejFnyivb6Te+5MD5+Y6WFAynFaf1mOETT2FYAuV7Jg3rEq53NXH3lI+mk3fbTkqQ1dVQS/", + "nA7GYZ/zFTuzb/6EUxz0im3A7ohFHfAssjTLpSj0iCgON+p17yFwNA0DcOuezbADHhZXOWl6bZJ9E5Vf", + "7FEC6SJfQ7NOXyfaIaNgl8QS4PQAZHv8F/4L5rRK6sRqzjwB9zbmvtsWLHyN47YAJK9BCMUK2v4rOSeP", + "sP51LSDJvenKTUVBjNpYQdWX+1OMliRvJbcGOPon52zw5OxUBXqrG1hTWheQzQk9ZARDp7DAD7d+AJ5T", + "4Ui+jyAjCSWCLajhl8y7/Kd3xaiufZu5UlBbGOCE0KLA09hsArtkakN0PdNW1hHtHKV7un1e9mAYbF0x", + "xe0VTcvGAY9qwjFWmtoWR3SGb9zw0urwIqxvpdpRi/5mddWv5Jz8yHMlT8qFDLHweqMNW/V6XrtPfx/o", + "V+ANCf2YVSlKLli2kiLVifknePojPEx9DdW6hj4+tw+Hvu3ct234O2C15xlzJ98Uvx/J6b9RoEtntYpV", + "UlntdrbB/Aug/z2Pkj80G5H3T9JG5JFTyz2MBoqbM7d+PvbpCK1Wzck3/2r96SrSuTf1sjaFvIpmARsA", + "hjOOKUYFwveeSR6Nza2dPcn1+7W6vU9vU4SH1NkKTxMteJuHw114/6ZJ2M45ExOJy2m8ZEp3FLm7TOx/", + "q0zs0fu+FzfGlvO7OFqtDyu7vJIFw3GbdFx79FNNUIQsmOuM3xdZQlhkOmXI31/Ne50kjpzWi6UhdUWM", + "TKWLNB9mNEcmm6EilJ4wKjuM6hJMt6SXjNBSMVpY5ZUJImd20c1NCoukGgo/+5wTF/yZFJoiuColc6Y1", + "KzLf9GUXaP49DFU3W/AEgAPAYRaiJZlTdWNgLy53wnnBNhkow5rc/+EXq1rfOrwoNG5HLJabTaC3m3bd", + "h3rc9NsIrjt5THaY0I1UCylyclWVzCXJJVC4F04G968LUW8Xb44WyCLj75ni/SQ3I6AA6num95tCW1eZ", + "vb/7ID7Hp+d8BZKYoEJ6C2RqsJJqk+1iy/aleC3ariDihClODAMPqKYvqTZvXL50AWUe8TqBeVDGtlMM", + "A2xvUdQtEiP/gg9TY+f2PhS61sSN4HOgWJFag2DrLXO9YuswF9RO8WOHJCu0Be4aeQhL0fgOWVHnG0JN", + "5Pe3wyUWB5ZK6kwZfVS2gGgQsQ2QM/9WhN3Y4T8ACNcNopFwoJJ/TDkzKUtGBeaqyqqy3MJktQjfDaHp", + "DN8+MT837/aJC2th4L1dSKbjBDgH+RViVoMpd0k1cXCQFb1wOXIL18m0D7M9jBmUWcq2UT4Yd+1b8RHY", + "eUjraqFowbKClTRhdPkZHxN8vG0A2HFPntmlNCybQY2U9KY3lKwGjUlhaAnj6ZTwSOAJye0RtMpzQyDu", + "6x0jFwzGTjEnR0f3wlAwV3KL/HiwbNzqAQOWHcPuuKMHANlx9DEAD+AhDH19VMDHWWM+6E7xn0y7CYIc", + "sf8kG6aHltCMv9cCuoa/+AJr3RQd9t7hwEm2OcjGdvCRoSObMjV+km6BbpTTe0yya5taIwVweh3l9viK", + "cpPNpUJBOqNzw9TO0Pl/Uu4d5z59V7qqKwRGcPemGweYfNxPznERBIG468KSiKskZe8wSh6TFRe1wSey", + "NhMsf60YzZdWaI9tsDgSdAR2RZoUW1BVlNAtdh7uTamw6JPpXPAAdCIfsa3x23V/K9Woovrt0pGUG1IL", + "w8uosVDQ2z8+6+WdReLOInFnkbizSNxZJO4sEncWiTuLxJ1F4s4icWeRuLNI/H0tEh+qTFLmJQ5fsVFI", + "kXWDKe9iKf+tqsqHq8obSMA6cUW5cW3yfZWCYbvFHoYgw2gJOOAlG47uxqDT829OXhIta5UzklsIuSBV", + "Sa1qwNYmNG2eUc2+eOpTDfHqpCvs/A73q33hsyfk7PsTX3F06Spjtt+9f4LxakSbTckeuLZoTBQoifr+", + "aExYpLv2aNRfCb65s2t1zUuIjNfkG3j7BbtkpayYwmKGxKia9S0+54yWzx1udhh8/mknd6G2f9jR/pi0", + "jF4ObStaeTHfr5VqQjHjkryIcjD/mNNSsz+G0jBxvBWtUv2Vw8WHpiBgJl/LYtM5IXbXjmED22ejqTvK", + "BVWbRJWofgpElzSMtOzKEVbflvXu4NVx+0TbJ7NdFJaS1rEMfnr0ISpPloUNG9YbChN15x06OUrlmHZr", + "oR4FAEcVBoQ0CdwT8ga/+7BlAAEid8QaZv7RRDG23wxMA961SoRjPZ9qLoFHfPL0wtmfWMIu6pwRbjTx", + "BXZ3Xy+To3VmR1owkTkGlM1kscla7OuodQsVXFOt2Wq2+yaK+SecuHD52Cfb76kPc428iBa3jSfHRLPO", + "HAMe4M4bw0bz5oAtGNGx5wjj75tFD7HRGATi+FPKqNThffsyvWaazR3ju2N80WnsSARcuILkXSYyfY+M", + "T21ULYZ53jdrltcWuPgk3wfrPLjk2Nq0nKwFm9WLhdUW+j46aKMD43EpPhArxOWO5YL7URAOHrrl3zRJ", + "vTtcn7tEeeP3fWXGB7AdVGzAmbGqqNh4ly/LNF/VJeIQm0ofltFizfBUienG9jdk1X7tTX6R7dZdte3f", + "ES3kimqC+8sKUovCZTz1aluvxfg6Jzj0+Vo0bHprTRNcb2J1bt4xV4Tf5XaquSYVU5lZCzxQrcPkOhjg", + "yf2gtbTvro3buzYwUZ0NMNh+Nf6GIRzo9lARX4PrI+q51CTmtTox0XY6YesZWDSGU1zi5kz45kEDS3rD", + "t+NLGnOL85+ysiKU5CUH76oU2qg6N28FBf9NtLBpP/bEG6qHed9z/0rahZjw8Lmh3goKQUbBq5PkgXOW", + "cGF8y5hnsbpeLJi2fDQmoDljb4V7iwtSC6uFyTlZ8VzJDFNr7fmysssU31zRDZlDRRNJ/mRKkpm99aNd", + "R1uyNrwsXbCLnYbI+VtBDSkZ1Yb8yC0HtsP5cgoh5IyZK6kuAhbSvXoWTDDNdZY2zHyHT6Edjlu+NwCC", + "MRMfN20sbrcPjoedF4OQn76AGDWoxlxyHfdf7MJ+a77xFRdZksjOl4y4cLEubZH7UAPOEdCDtuPILNlb", + "YW8/IwlwfGquRw5dD1DvLOLp6FBNayM6jiK/1lHq30G4DEkwmTu3y79RCmlEB96zCRuP9fU7e7+ni6V1", + "5TJoDTp0IeNT1z5x4CWnQLSMZJ0CN+6N8xbIW/0Xn35ZycPrkh6NB9Mm+wP22VW7QR7gzW/4hNBSigXW", + "VbTapYR94qKqDQSAv08DHrukZSYvmVK8YHrkSrkU31zS8qfw2bvJEVuzPDOK5ixDi8JYrJ3bb5BOodGg", + "4IbTMgOteixA7BS/OsOPdtzHUbfR1YoVnBpWbkilWM4KLETGNWn0+SkWaCD5kooFXN1K1oslvobjXDHF", + "QmNGq0J3h0gXglmLDIvS9WE8cY2a47q9jObLROMYuOCszu4Jqmj1pBq5B62So0NK+uRoUNC2SL1sQucQ", + "OW02M0KKaMkDEX6aiQ9Ro/WO6O+I/lMn+lRJRUDdvGOtQHzF2/KezVrvu4DoLVrJPkh14bsS/f/uJfo9", + "B9KEEkVbOki6NxzVhBtyBWWRZozY+6sG67xruOf0dci0i466q7SpXXu+fEm5cDV1Ql4DwGFV4tWKG+Pb", + "074XwyYyM7BoWnSwvFbcbEBroRX//YLZ//9mxX7N1KVXaGpVHj07WhpTPTs+LmVOy6XU5vjo3SR+pjsP", + "fwvw/+V1kUrxS6tfvQOwpeILLuyde0UXC6YaE+LRk+mjo3f/XwAAAP//fa3EH5PCAQA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/private/routes.go b/daemon/algod/api/server/v2/generated/participating/private/routes.go index 981fddde61..1006a224d2 100644 --- a/daemon/algod/api/server/v2/generated/participating/private/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/private/routes.go @@ -393,75 +393,77 @@ var swaggerSpec = []string{ "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", - "AAD//wm+5emgGwEA", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/generated/participating/public/routes.go b/daemon/algod/api/server/v2/generated/participating/public/routes.go index 0ada10df52..763d22354a 100644 --- a/daemon/algod/api/server/v2/generated/participating/public/routes.go +++ b/daemon/algod/api/server/v2/generated/participating/public/routes.go @@ -177,238 +177,241 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/daemon/algod/api/server/v2/handlers.go b/daemon/algod/api/server/v2/handlers.go index 4a97d94d07..13eb4406c9 100644 --- a/daemon/algod/api/server/v2/handlers.go +++ b/daemon/algod/api/server/v2/handlers.go @@ -1211,6 +1211,7 @@ type PreEncodedSimulateTxnResult struct { TransactionTrace *model.SimulationTransactionExecTrace `codec:"exec-trace,omitempty"` UnnamedResourcesAccessed *model.SimulateUnnamedResourcesAccessed `codec:"unnamed-resources-accessed,omitempty"` FixedSigner *string `codec:"fixed-signer,omitempty"` + PopulatedResourceArrays *model.ResourceArrays `codec:"populated-resource-arrays,omitempty"` } // PreEncodedSimulateTxnGroupResult mirrors model.SimulateTransactionGroupResult @@ -1221,6 +1222,7 @@ type PreEncodedSimulateTxnGroupResult struct { FailureMessage *string `codec:"failure-message,omitempty"` UnnamedResourcesAccessed *model.SimulateUnnamedResourcesAccessed `codec:"unnamed-resources-accessed,omitempty"` Txns []PreEncodedSimulateTxnResult `codec:"txn-results"` + ExtraResourceArrays *[]model.ResourceArrays `codec:"extra-resource-arrays,omitempty"` } // PreEncodedSimulateResponse mirrors model.SimulateResponse @@ -1248,6 +1250,7 @@ type PreEncodedSimulateRequest struct { ExtraOpcodeBudget uint64 `codec:"extra-opcode-budget,omitempty"` ExecTraceConfig simulation.ExecTraceConfig `codec:"exec-trace-config,omitempty"` FixSigners bool `codec:"fix-signers,omitempty"` + PopulateResources bool `codec:"populate-resources,omitempty"` } // SimulateTransaction simulates broadcasting a raw transaction to the network, returning relevant simulation results. diff --git a/daemon/algod/api/server/v2/utils.go b/daemon/algod/api/server/v2/utils.go index 6f36784ee4..2a8b2a6756 100644 --- a/daemon/algod/api/server/v2/utils.go +++ b/daemon/algod/api/server/v2/utils.go @@ -564,10 +564,45 @@ func convertSimulateInitialStates(initialStates *simulation.ResourcesInitialStat } } +func convertPopulatedResourceArrays(populatedResources simulation.PopulatedResourceArrays) *model.ResourceArrays { + // Convert the resources to the model structs + accounts := make([]string, len(populatedResources.Accounts)) + for i, account := range populatedResources.Accounts { + accounts[i] = account.String() + } + assets := make([]uint64, len(populatedResources.Assets)) + for i, asset := range populatedResources.Assets { + assets[i] = uint64(asset) + } + apps := make([]uint64, len(populatedResources.Apps)) + for i, app := range populatedResources.Apps { + apps[i] = uint64(app) + } + boxes := make([]model.BoxReference, len(populatedResources.Boxes)) + for i, box := range populatedResources.Boxes { + boxes[i] = model.BoxReference{ + App: uint64(box.App), + Name: []byte(box.Name), + } + } + + populatedResourceArrays := model.ResourceArrays{ + Accounts: &accounts, + Assets: &assets, + Apps: &apps, + Boxes: &boxes, + } + + return &populatedResourceArrays +} + func convertTxnGroupResult(txnGroupResult simulation.TxnGroupResult) PreEncodedSimulateTxnGroupResult { txnResults := make([]PreEncodedSimulateTxnResult, len(txnGroupResult.Txns)) for i, txnResult := range txnGroupResult.Txns { txnResults[i] = convertTxnResult(txnResult) + if populatedResources, ok := txnGroupResult.PopulatedResourceArrays[i]; ok { + txnResults[i].PopulatedResourceArrays = convertPopulatedResourceArrays(populatedResources) + } } encoded := PreEncodedSimulateTxnGroupResult{ @@ -578,6 +613,15 @@ func convertTxnGroupResult(txnGroupResult simulation.TxnGroupResult) PreEncodedS UnnamedResourcesAccessed: convertUnnamedResourcesAccessed(txnGroupResult.UnnamedResourcesAccessed), } + extraResourceArrays := make([]model.ResourceArrays, len(txnGroupResult.PopulatedResourceArrays)-len(txnResults)) + + // Check the rest of txnGroupResult.PopulatedResourceArrays to see if there are any non-empty ones, staring at the len(txnResults) + for i := len(txnResults); i < len(txnGroupResult.PopulatedResourceArrays); i++ { + extraResourceArrays[i] = *convertPopulatedResourceArrays(txnGroupResult.PopulatedResourceArrays[i]) + } + + encoded.ExtraResourceArrays = &extraResourceArrays + if len(txnGroupResult.FailedAt) > 0 { failedAt := slices.Clone[[]uint64, uint64](txnGroupResult.FailedAt) encoded.FailedAt = &failedAt @@ -623,6 +667,7 @@ func convertSimulationRequest(request PreEncodedSimulateRequest) simulation.Requ ExtraOpcodeBudget: request.ExtraOpcodeBudget, TraceConfig: request.ExecTraceConfig, FixSigners: request.FixSigners, + PopulateResources: request.PopulateResources, } } diff --git a/ledger/simulation/resources.go b/ledger/simulation/resources.go index 3b4546cd28..40379bcdf9 100644 --- a/ledger/simulation/resources.go +++ b/ledger/simulation/resources.go @@ -605,3 +605,596 @@ func (p *resourcePolicy) AvailableBox(app basics.AppIndex, name string, operatio } return p.tracker.addBox(app, name, readSize, *p.initialBoxSurplusReadBudget, p.ep.Proto.BytesPerBoxReference) } + +// txnResources tracks the resources being added to a transaction during resource population +type txnResources struct { + // The prefilled resources are resources that were given in the txn group and thus cannot be removed + // The assumption is that these are prefilled because of one of the following reasons: + // - This transaction has already been signed + // - One of the foreign resources is accessed on-chain + prefilledAssets map[basics.AssetIndex]struct{} + prefilledApps map[basics.AppIndex]struct{} + prefilledAccounts map[basics.Address]struct{} + prefilledBoxes []logic.BoxRef + + // The following fields are resources that are available to the transaction group because they were used in a transaction field (like `Sender`) rather than a foreign array. + assetFromField basics.AssetIndex + appFromField basics.AppIndex + accountsFromFields map[basics.Address]struct{} + + // These are the fields currently being populated, thus we can mutate them however we'd like + assets map[basics.AssetIndex]struct{} + apps map[basics.AppIndex]struct{} + boxes []logic.BoxRef + accounts map[basics.Address]struct{} + + maxTotalRefs int + maxAccounts int +} + +func (r *txnResources) getTotalRefs() int { + return len(r.accounts) + len(r.assets) + len(r.apps) + len(r.boxes) + len(r.prefilledAccounts) + len(r.prefilledAssets) + len(r.prefilledApps) + len(r.prefilledBoxes) +} + +// Methods for determining room for specific references + +func (r *txnResources) hasRoom() bool { + return r.getTotalRefs() < r.maxTotalRefs +} + +func (r *txnResources) hasRoomForAccount() bool { + return r.hasRoom() && (len(r.accounts)+len(r.prefilledAccounts)) < r.maxAccounts +} + +func (r *txnResources) hasRoomForCrossRef() bool { + return r.hasRoomForAccount() && r.getTotalRefs() < r.maxTotalRefs-1 +} + +func (r *txnResources) hasRoomForBoxWithApp() bool { + return r.getTotalRefs() < r.maxTotalRefs-1 +} + +// Methods for determining if a resource is available + +func (r *txnResources) hasApp(app basics.AppIndex) bool { + if r.appFromField == app { + return true + } + if _, hasStatic := r.prefilledApps[app]; hasStatic { + return true + } + if _, hasRef := r.apps[app]; hasRef { + return true + } + return false +} + +func (r *txnResources) hasAsset(aid basics.AssetIndex) bool { + _, hasStatic := r.prefilledAssets[aid] + _, hasRef := r.assets[aid] + return r.assetFromField == aid || hasStatic || hasRef +} + +func (r *txnResources) hasAccount(addr basics.Address) bool { + if r.appFromField.Address() == addr { + return true + } + + for app := range r.apps { + if app.Address() == addr { + return true + } + } + + for app := range r.prefilledApps { + if app.Address() == addr { + return true + } + } + + if _, hasField := r.accountsFromFields[addr]; hasField { + return true + } + if _, hasStatic := r.prefilledAccounts[addr]; hasStatic { + return true + } + if _, hasRef := r.accounts[addr]; hasRef { + return true + } + + return false +} + +func (r *txnResources) addAccount(addr basics.Address) error { + if !r.hasRoomForAccount() { + return fmt.Errorf("no room for account: %s", addr.String()) + } + r.accounts[addr] = struct{}{} + return nil +} + +func (r *txnResources) addAsset(aid basics.AssetIndex) error { + if !r.hasRoom() { + return fmt.Errorf("no room for asset: %d", aid) + } + r.assets[aid] = struct{}{} + return nil +} + +func (r *txnResources) addApp(aid basics.AppIndex) error { + if !r.hasRoom() { + return fmt.Errorf("no room for app: %d", aid) + } + r.apps[aid] = struct{}{} + return nil +} + +// addBox adds a box to the box array. It does NOT add the app to the app array. +func (r *txnResources) addBox(app basics.AppIndex, name string) error { + if !r.hasRoom() { + return fmt.Errorf("no room for box %d : %s", app, name) + } + r.boxes = append(r.boxes, logic.BoxRef{App: app, Name: name}) + return nil +} + +// addBoxWithApp adds a box to the box array. It also adds the app to the app array. +func (r *txnResources) addBoxWithApp(app basics.AppIndex, name string) error { + if !r.hasRoomForBoxWithApp() { + return fmt.Errorf("no room for box %d : %s", app, name) + } + r.boxes = append(r.boxes, logic.BoxRef{App: app, Name: name}) + r.apps[app] = struct{}{} + return nil +} + +func (r *txnResources) addAppLocal(app basics.AppIndex, addr basics.Address) error { + if !r.hasRoomForCrossRef() { + return fmt.Errorf("no room for app local %d : %s", app, addr.String()) + } + r.apps[app] = struct{}{} + r.accounts[addr] = struct{}{} + return nil +} + +func (r *txnResources) addAssetHolding(addr basics.Address, aid basics.AssetIndex) error { + if !r.hasRoomForCrossRef() { + return fmt.Errorf("no room for asset holding %d : %s", aid, addr.String()) + } + r.accounts[addr] = struct{}{} + r.assets[aid] = struct{}{} + return nil +} + +func (r *txnResources) addAddressFromField(addr basics.Address) { + if !addr.IsZero() { + r.accountsFromFields[addr] = struct{}{} + } +} + +// PopulatedResourceArrays is a struct that contains all the populated arrays for a txn +type PopulatedResourceArrays struct { + Accounts []basics.Address + Assets []basics.AssetIndex + Apps []basics.AppIndex + Boxes []logic.BoxRef +} + +func (r *txnResources) getPopulatedArrays() PopulatedResourceArrays { + accounts := make([]basics.Address, 0, len(r.accounts)+len(r.prefilledAccounts)) + for account := range r.accounts { + accounts = append(accounts, account) + } + for account := range r.prefilledAccounts { + accounts = append(accounts, account) + } + + assets := make([]basics.AssetIndex, 0, len(r.assets)+len(r.prefilledAssets)) + for asset := range r.assets { + assets = append(assets, asset) + } + for asset := range r.prefilledAssets { + assets = append(assets, asset) + } + + apps := make([]basics.AppIndex, 0, len(r.apps)+len(r.prefilledApps)) + for app := range r.apps { + apps = append(apps, app) + } + for app := range r.prefilledApps { + apps = append(apps, app) + } + + boxes := make([]logic.BoxRef, 0, len(r.boxes)+len(r.prefilledBoxes)) + boxes = append(boxes, r.boxes...) + boxes = append(boxes, r.prefilledBoxes...) + + return PopulatedResourceArrays{ + Accounts: accounts, + Assets: assets, + Apps: apps, + Boxes: boxes, + } +} + +// resourcePopulator is used to populate app resources for a transaction group +type resourcePopulator struct { + txnResources map[int]*txnResources + appCallIndexes []int + groupSize int +} + +func (p *resourcePopulator) addTransaction(txn transactions.Transaction, groupIndex int, consensusParams config.ConsensusParams) { + p.txnResources[groupIndex] = &txnResources{ + prefilledAssets: make(map[basics.AssetIndex]struct{}), + prefilledApps: make(map[basics.AppIndex]struct{}), + prefilledAccounts: make(map[basics.Address]struct{}), + prefilledBoxes: []logic.BoxRef{}, + accountsFromFields: make(map[basics.Address]struct{}), + assets: make(map[basics.AssetIndex]struct{}), + apps: make(map[basics.AppIndex]struct{}), + accounts: make(map[basics.Address]struct{}), + boxes: []logic.BoxRef{}, + maxTotalRefs: consensusParams.MaxAppTotalTxnReferences, + maxAccounts: consensusParams.MaxAppTxnAccounts, + } + + // The Sender will always be implicitly available for every transaction type + p.txnResources[groupIndex].addAddressFromField(txn.Sender) + + switch txn.Type { + case protocol.ApplicationCallTx: + for _, asset := range txn.ForeignAssets { + p.txnResources[groupIndex].prefilledAssets[asset] = struct{}{} + } + + for _, app := range txn.ForeignApps { + p.txnResources[groupIndex].prefilledApps[app] = struct{}{} + } + + for _, account := range txn.Accounts { + p.txnResources[groupIndex].prefilledAccounts[account] = struct{}{} + } + + for _, box := range txn.Boxes { + ref := logic.BoxRef{App: txn.ForeignApps[box.Index], Name: string(box.Name)} + p.txnResources[groupIndex].prefilledBoxes = append(p.txnResources[groupIndex].prefilledBoxes, ref) + } + + p.txnResources[groupIndex].appFromField = txn.ApplicationID + + case protocol.AssetTransferTx: + p.txnResources[groupIndex].assetFromField = txn.XferAsset + p.txnResources[groupIndex].addAddressFromField(txn.AssetReceiver) + p.txnResources[groupIndex].addAddressFromField(txn.AssetCloseTo) + p.txnResources[groupIndex].addAddressFromField(txn.AssetSender) + + case protocol.PaymentTx: + p.txnResources[groupIndex].addAddressFromField(txn.Receiver) + p.txnResources[groupIndex].addAddressFromField(txn.CloseRemainderTo) + + case protocol.AssetConfigTx: + p.txnResources[groupIndex].assetFromField = txn.ConfigAsset + + case protocol.AssetFreezeTx: + p.txnResources[groupIndex].assetFromField = txn.FreezeAsset + p.txnResources[groupIndex].addAddressFromField(txn.FreezeAccount) + } +} + +func (p *resourcePopulator) addAccount(addr basics.Address) error { + var err error + + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addAccount(addr) + if err == nil { + return nil + } + } + + return err +} + +func (p *resourcePopulator) addAsset(asset basics.AssetIndex) error { + var err error + + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addAsset(asset) + if err == nil { + return nil + } + } + + return err +} + +func (p *resourcePopulator) addApp(app basics.AppIndex) error { + var err error + + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addApp(app) + if err == nil { + return nil + } + } + return err +} + +func (p *resourcePopulator) addBox(app basics.AppIndex, name string) error { + var err error + + // First try to find txn with app already available + for _, i := range p.appCallIndexes { + if app == basics.AppIndex(0) || p.txnResources[i].hasApp(app) { + err = p.txnResources[i].addBox(app, name) + if err == nil { + return nil + } + } + } + + // Then try to find txn with room for both app and box + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addBoxWithApp(app, name) + if err == nil { + return nil + } + } + + return err +} + +func (p *resourcePopulator) addHolding(addr basics.Address, aid basics.AssetIndex) error { + var err error + + // First try to find txn with account already available + for _, i := range p.appCallIndexes { + if p.txnResources[i].hasAccount(addr) { + err = p.txnResources[i].addAsset(aid) + if err == nil { + return nil + } + } + } + + // Then try to find txn with asset already available + for _, i := range p.appCallIndexes { + if p.txnResources[i].hasAsset(aid) { + err = p.txnResources[i].addAccount(addr) + if err == nil { + return nil + } + } + } + + // Finally try to find txn with room for both account and holding + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addAssetHolding(addr, aid) + if err == nil { + return nil + } + } + + return err +} + +func (p *resourcePopulator) addLocal(addr basics.Address, aid basics.AppIndex) error { + var err error + + // First try to find txn with account already available + for _, i := range p.appCallIndexes { + if p.txnResources[i].hasAccount(addr) { + err = p.txnResources[i].addApp(aid) + if err == nil { + return nil + } + } + } + + // Then try to find txn with app already available + for _, i := range p.appCallIndexes { + if p.txnResources[i].hasApp(aid) { + err = p.txnResources[i].addAccount(addr) + if err == nil { + return nil + } + } + } + + // Finally try to find txn with room for both account and app + for _, i := range p.appCallIndexes { + err = p.txnResources[i].addAppLocal(aid, addr) + if err == nil { + return nil + } + } + + return err +} + +func (p *resourcePopulator) populateResources(groupResourceTracker ResourceTracker, txnResources []ResourceTracker) error { + // We don't want to mutate the groupResourceTracker because it is used later in simulate for UnnamedResourcesAccessed + groupResources := struct { + Assets map[basics.AssetIndex]struct{} + Apps map[basics.AppIndex]struct{} + Accounts map[basics.Address]struct{} + Boxes map[logic.BoxRef]struct{} + AssetHoldings map[ledgercore.AccountAsset]struct{} + AppLocals map[ledgercore.AccountApp]struct{} + }{ + Assets: make(map[basics.AssetIndex]struct{}, len(groupResourceTracker.Assets)), + Apps: make(map[basics.AppIndex]struct{}, len(groupResourceTracker.Apps)), + Accounts: make(map[basics.Address]struct{}, len(groupResourceTracker.Accounts)), + Boxes: make(map[logic.BoxRef]struct{}, len(groupResourceTracker.Boxes)), + AssetHoldings: make(map[ledgercore.AccountAsset]struct{}, len(groupResourceTracker.AssetHoldings)), + AppLocals: make(map[ledgercore.AccountApp]struct{}, len(groupResourceTracker.AppLocals)), + } + + for asset := range groupResourceTracker.Assets { + groupResources.Assets[asset] = struct{}{} + } + + for app := range groupResourceTracker.Apps { + groupResources.Apps[app] = struct{}{} + } + + for account := range groupResourceTracker.Accounts { + groupResources.Accounts[account] = struct{}{} + } + + for box := range groupResourceTracker.Boxes { + groupResources.Boxes[box] = struct{}{} + } + + for holding := range groupResourceTracker.AssetHoldings { + groupResources.AssetHoldings[holding] = struct{}{} + } + + for local := range groupResourceTracker.AppLocals { + groupResources.AppLocals[local] = struct{}{} + } + + // First populate resources that HAVE to be assigned to a specific transaction + for i, tracker := range txnResources { + for asset := range tracker.Assets { + err := p.txnResources[i].addAsset(asset) + if err != nil { + return err + } + } + + for app := range tracker.Apps { + err := p.txnResources[i].addApp(app) + if err != nil { + return err + } + } + + for account := range tracker.Accounts { + err := p.txnResources[i].addAccount(account) + if err != nil { + return err + } + } + } + + // Then assign cross-reference resources because they have the most strict requirements (one account and another resource) + for holding := range groupResources.AssetHoldings { + err := p.addHolding(holding.Address, holding.Asset) + if err != nil { + return err + } + + // Remove the resources from the global tracker in case they were added separately + delete(groupResources.Assets, holding.Asset) + delete(groupResources.Accounts, holding.Address) + } + + for local := range groupResources.AppLocals { + err := p.addLocal(local.Address, local.App) + if err != nil { + return err + } + + // Remove the resources from the global tracker in case they were added separately + delete(groupResources.Apps, local.App) + delete(groupResources.Accounts, local.Address) + } + + // Then assign boxes because they can take up to two slots + for box := range groupResources.Boxes { + err := p.addBox(box.App, box.Name) + if err != nil { + return err + } + + // Remove the app from the global tracker in case it was added separately + delete(groupResources.Apps, box.App) + } + + // Then assign accounts because they have a lower limit than other resources + for account := range groupResources.Accounts { + err := p.addAccount(account) + if err != nil { + return err + } + } + + // Finally assign the remaining resources which just require one slot + for app := range groupResources.Apps { + err := p.addApp(app) + if err != nil { + return err + } + } + + for asset := range groupResources.Assets { + err := p.addAsset(asset) + if err != nil { + return err + } + } + + for i := 0; i < groupResourceTracker.NumEmptyBoxRefs; i++ { + err := p.addBox(0, "") + if err != nil { + return err + } + } + + return nil +} + +func (p *resourcePopulator) getPopulatedArrays() map[int]PopulatedResourceArrays { + populatedArrays := map[int]PopulatedResourceArrays{} + for _, i := range p.appCallIndexes { + resources := p.txnResources[i] + if resources == nil { + continue + } + + pop := resources.getPopulatedArrays() + if i >= p.groupSize && len(pop.Accounts)+len(pop.Assets)+len(pop.Apps)+len(pop.Boxes) == 0 { + break + } + populatedArrays[i] = resources.getPopulatedArrays() + } + return populatedArrays +} + +// makeResourcePopulator creates a ResourcePopulator from a transaction group +func makeResourcePopulator(txnGroup []transactions.SignedTxn, consensusParams config.ConsensusParams) resourcePopulator { + populator := resourcePopulator{ + txnResources: map[int]*txnResources{}, + appCallIndexes: []int{}, + groupSize: len(txnGroup), + } + + for i, txn := range txnGroup { + if txn.Txn.Type != protocol.ApplicationCallTx { + continue + } + + populator.appCallIndexes = append(populator.appCallIndexes, i) + populator.addTransaction(txn.Txn, i, consensusParams) + } + + for i := len(txnGroup); i < consensusParams.MaxTxGroupSize; i++ { + populator.appCallIndexes = append(populator.appCallIndexes, i) + populator.txnResources[i] = &txnResources{ + prefilledAssets: make(map[basics.AssetIndex]struct{}), + prefilledApps: make(map[basics.AppIndex]struct{}), + prefilledAccounts: make(map[basics.Address]struct{}), + prefilledBoxes: []logic.BoxRef{}, + accountsFromFields: make(map[basics.Address]struct{}), + assets: make(map[basics.AssetIndex]struct{}), + apps: make(map[basics.AppIndex]struct{}), + accounts: make(map[basics.Address]struct{}), + boxes: []logic.BoxRef{}, + maxTotalRefs: consensusParams.MaxAppTotalTxnReferences, + maxAccounts: consensusParams.MaxAppTxnAccounts, + } + } + + return populator +} diff --git a/ledger/simulation/resources_test.go b/ledger/simulation/resources_test.go index b154031f57..2ed6540ea3 100644 --- a/ledger/simulation/resources_test.go +++ b/ledger/simulation/resources_test.go @@ -23,6 +23,7 @@ import ( "github.com/algorand/go-algorand/data/basics" "github.com/algorand/go-algorand/data/transactions" "github.com/algorand/go-algorand/data/transactions/logic" + "github.com/algorand/go-algorand/ledger/ledgercore" "github.com/algorand/go-algorand/protocol" "github.com/algorand/go-algorand/test/partitiontest" "github.com/stretchr/testify/require" @@ -296,3 +297,167 @@ func TestGlobalVsLocalResources(t *testing.T) { }, groupAssignment.localTxnResources[2].Apps) }) } + +func TestPopulatorWithLocalResources(t *testing.T) { + partitiontest.PartitionTest(t) + t.Parallel() + + txns := make([]transactions.SignedTxn, 1) + txns[0].Txn.Type = protocol.ApplicationCallTx + + consensusParams := config.Consensus[protocol.ConsensusCurrentVersion] + populator := makeResourcePopulator(txns, consensusParams) + + txnResources := make([]ResourceTracker, 1) + + // Note we don't need to test a box here since it will never be a local txn resource + addr := basics.Address{1, 1, 1} + app := basics.AppIndex(12345) + asset := basics.AssetIndex(12345) + + txnResources[0].Accounts = make(map[basics.Address]struct{}) + txnResources[0].Assets = make(map[basics.AssetIndex]struct{}) + txnResources[0].Apps = make(map[basics.AppIndex]struct{}) + + txnResources[0].Accounts[addr] = struct{}{} + txnResources[0].Assets[asset] = struct{}{} + txnResources[0].Apps[app] = struct{}{} + + err := populator.populateResources(ResourceTracker{}, txnResources) + require.NoError(t, err) + + require.Len(t, populator.getPopulatedArrays(), 1) + + require.Equal( + t, + PopulatedResourceArrays{ + Assets: []basics.AssetIndex{asset}, + Apps: []basics.AppIndex{app}, + Accounts: []basics.Address{addr}, + Boxes: []logic.BoxRef{}, + }, + populator.txnResources[0].getPopulatedArrays(), + ) +} + +func TestPopulatorWithGlobalResources(t *testing.T) { + partitiontest.PartitionTest(t) + t.Parallel() + + txns := make([]transactions.SignedTxn, 4) + txns[0].Txn.Type = protocol.PaymentTx // include payment to ensure it doesn't get resources + txns[1].Txn.Type = protocol.ApplicationCallTx + txns[2].Txn.Type = protocol.ApplicationCallTx + txns[3].Txn.Type = protocol.ApplicationCallTx + + app1 := basics.AppIndex(1) + txns[3].Txn.ApplicationID = app1 + + consensusParams := config.Consensus[protocol.ConsensusCurrentVersion] + populator := makeResourcePopulator(txns, consensusParams) + + txnResources := make([]ResourceTracker, 3) + groupResources := ResourceTracker{} + + // Resources + addr2 := basics.Address{2} + app3 := basics.AppIndex(3) + asset4 := basics.AssetIndex(4) + app5 := basics.AppIndex(5) + box5 := logic.BoxRef{App: app5, Name: "box"} + addr6 := basics.Address{6} + asa7 := basics.AssetIndex(7) + box1 := logic.BoxRef{App: app1, Name: "box"} + app1Addr := app1.Address() + asa8 := basics.AssetIndex(8) + addr9 := basics.Address{9} + addr10 := basics.Address{10} + app11 := basics.AppIndex(11) + app12 := basics.AppIndex(12) + addr13 := basics.Address{13} + emptyBox := logic.BoxRef{App: 0, Name: ""} + + // Holdings + holding6_7 := ledgercore.AccountAsset{Address: addr6, Asset: asa7} // new addr and asa + holding1_8 := ledgercore.AccountAsset{Address: app1Addr, Asset: asa8} // new asa + holding9_8 := ledgercore.AccountAsset{Address: addr9, Asset: asa8} // new addr + + // Locals + local10_11 := ledgercore.AccountApp{Address: addr10, App: app11} // new addr and app + local1_12 := ledgercore.AccountApp{Address: app1Addr, App: app12} // new app + local13_1 := ledgercore.AccountApp{Address: addr13, App: app1} // new addr + + groupResources.Accounts = make(map[basics.Address]struct{}) + groupResources.Assets = make(map[basics.AssetIndex]struct{}) + groupResources.Apps = make(map[basics.AppIndex]struct{}) + groupResources.Boxes = make(map[logic.BoxRef]uint64) + groupResources.AssetHoldings = make(map[ledgercore.AccountAsset]struct{}) + groupResources.AppLocals = make(map[ledgercore.AccountApp]struct{}) + + groupResources.Accounts[addr2] = struct{}{} + groupResources.Assets[asset4] = struct{}{} + groupResources.Apps[app3] = struct{}{} + groupResources.Boxes[box1] = 1 + groupResources.Boxes[box5] = 1 + groupResources.AssetHoldings[holding6_7] = struct{}{} + groupResources.AssetHoldings[holding1_8] = struct{}{} + groupResources.AssetHoldings[holding9_8] = struct{}{} + groupResources.AppLocals[local10_11] = struct{}{} + groupResources.AppLocals[local1_12] = struct{}{} + groupResources.AppLocals[local13_1] = struct{}{} + + // These resources should not have an effect on the population because they are inlcuded in a cross-reference or box + groupResources.Apps[app12] = struct{}{} // app from appLocal + groupResources.Accounts[addr10] = struct{}{} // addr from appLocal + groupResources.Accounts[addr6] = struct{}{} // addr from holding + groupResources.Assets[asa7] = struct{}{} // asa from holding + groupResources.Apps[app5] = struct{}{} // app from box + + groupResources.NumEmptyBoxRefs = 11 + + err := populator.populateResources(groupResources, txnResources) + require.NoError(t, err) + require.Equal(t, consensusParams.MaxTxGroupSize-1, len(populator.txnResources)) + + require.Nil(t, populator.txnResources[0]) + + pop1 := populator.txnResources[1].getPopulatedArrays() + pop2 := populator.txnResources[2].getPopulatedArrays() + pop3 := populator.txnResources[3].getPopulatedArrays() + pop4 := populator.txnResources[4].getPopulatedArrays() + + // Txn 1 has all the new multi-resources (ie. both resources are not already in a txn) + // Txn 1 also gets the app and address resource because they are added before other resources + require.ElementsMatch(t, pop1.Apps, []basics.AppIndex{box5.App, local10_11.App, app3}) + require.ElementsMatch(t, pop1.Boxes, []logic.BoxRef{box5}) + require.ElementsMatch(t, pop1.Accounts, []basics.Address{addr2, holding6_7.Address, local10_11.Address}) + require.ElementsMatch(t, pop1.Assets, []basics.AssetIndex{holding6_7.Asset}) + + // Txn 2 has the asset and empty boxes because they are added last and txn 0 is full + require.ElementsMatch(t, pop2.Apps, []basics.AppIndex{}) + require.ElementsMatch(t, pop2.Boxes, []logic.BoxRef{emptyBox, emptyBox, emptyBox, emptyBox, emptyBox, emptyBox, emptyBox}) + require.ElementsMatch(t, pop2.Accounts, []basics.Address{}) + require.ElementsMatch(t, pop2.Assets, []basics.AssetIndex{asset4}) + + // Txn 3 has all the resources that had partial requirements already in txn 2 and leftover empty boxes + require.ElementsMatch(t, pop3.Apps, []basics.AppIndex{local1_12.App}) + require.ElementsMatch(t, pop3.Boxes, []logic.BoxRef{box1, emptyBox, emptyBox, emptyBox}) + require.ElementsMatch(t, pop3.Accounts, []basics.Address{holding9_8.Address, local13_1.Address}) + require.ElementsMatch(t, pop3.Assets, []basics.AssetIndex{holding1_8.Asset}) + + // The 4th populated array does not map to a transaction, but it will contain the overflow of resources + require.Empty(t, pop4.Accounts) + require.Empty(t, pop4.Apps) + require.Empty(t, pop4.Assets) + require.ElementsMatch(t, pop4.Boxes, []logic.BoxRef{emptyBox}) + + require.Len(t, populator.getPopulatedArrays(), 4) + + // The rest of the populated arrays should be empty + for i := 5; i < consensusParams.MaxTxGroupSize; i++ { + require.Empty(t, populator.txnResources[i].getPopulatedArrays().Accounts) + require.Empty(t, populator.txnResources[i].getPopulatedArrays().Apps) + require.Empty(t, populator.txnResources[i].getPopulatedArrays().Assets) + require.Empty(t, populator.txnResources[i].getPopulatedArrays().Boxes) + } +} diff --git a/ledger/simulation/simulation_eval_test.go b/ledger/simulation/simulation_eval_test.go index 0399c8215a..1f6146cfb1 100644 --- a/ledger/simulation/simulation_eval_test.go +++ b/ledger/simulation/simulation_eval_test.go @@ -9344,3 +9344,302 @@ func TestFixSigners(t *testing.T) { }) }) } + +func populateResourceTest(t *testing.T, groupSharing bool) { + + var programVersion int + if groupSharing { + programVersion = 9 + } else { + programVersion = 8 + } + + env := simulationtesting.PrepareSimulatorTest(t) + + sender := env.Accounts[0] + foreignAccount := env.Accounts[1] + + program := fmt.Sprintf(`#pragma version %d + txn ApplicationID + bz end + + addr %s + balance + pop + + end: + int 1 + `, programVersion, foreignAccount.Addr.String()) + + appID := env.CreateApp(sender.Addr, simulationtesting.AppParams{ + ApprovalProgram: program, + ClearStateProgram: program, + }) + + pay := env.TxnInfo.NewTxn(txntest.Txn{ + Type: protocol.PaymentTx, + Sender: sender.Addr, + Receiver: sender.Addr, + Amount: 0, + }) + + appCall := env.TxnInfo.NewTxn(txntest.Txn{ + Type: protocol.ApplicationCallTx, + Sender: sender.Addr, + ApplicationID: appID, + }) + + txgroup := txntest.Group(&pay, &appCall) + + proto := env.TxnInfo.CurrentProtocolParams() + + var expectedTxnResources *simulation.ResourceTracker + var expectedGroupResources *simulation.ResourceTracker + + maxAppls := proto.MaxTxGroupSize - 1 + + if groupSharing { + expectedGroupResources = &simulation.ResourceTracker{ + MaxAccounts: (proto.MaxAppTxnAccounts + proto.MaxAppTxnForeignApps) * maxAppls, + MaxAssets: proto.MaxAppTxnForeignAssets * maxAppls, + MaxApps: proto.MaxAppTxnForeignApps * maxAppls, + MaxBoxes: proto.MaxAppBoxReferences * maxAppls, + MaxTotalRefs: proto.MaxAppTotalTxnReferences * maxAppls, + MaxCrossProductReferences: 80 * maxAppls, + Accounts: mapWithKeys([]basics.Address{foreignAccount.Addr}, struct{}{}), + } + expectedTxnResources = nil + } else { + expectedGroupResources = nil + expectedTxnResources = &simulation.ResourceTracker{ + MaxAccounts: proto.MaxAppTxnAccounts + proto.MaxAppTxnForeignApps, + MaxAssets: proto.MaxAppTxnForeignAssets, + MaxApps: proto.MaxAppTxnForeignApps, + MaxBoxes: proto.MaxAppBoxReferences, + MaxTotalRefs: proto.MaxAppTotalTxnReferences, + Accounts: mapWithKeys([]basics.Address{foreignAccount.Addr}, struct{}{}), + } + } + + expectedPopulatedArrays := map[int]simulation.PopulatedResourceArrays{ + 1: { + Accounts: []basics.Address{foreignAccount.Addr}, + Assets: []basics.AssetIndex{}, + Apps: []basics.AppIndex{}, + Boxes: []logic.BoxRef{}, + }, + } + + runSimulationTestCase(t, env, simulationTestCase{ + input: simulation.Request{ + TxnGroups: [][]transactions.SignedTxn{txgroup}, + AllowEmptySignatures: true, + AllowUnnamedResources: true, + PopulateResources: true, + }, + expected: simulation.Result{ + Version: simulation.ResultLatestVersion, + LastRound: env.TxnInfo.LatestRound(), + EvalOverrides: simulation.ResultEvalOverrides{ + AllowEmptySignatures: true, + AllowUnnamedResources: true, + }, + TxnGroups: []simulation.TxnGroupResult{{ + Txns: []simulation.TxnResult{ + {}, + { + AppBudgetConsumed: ignoreAppBudgetConsumed, + UnnamedResourcesAccessed: expectedTxnResources, + }}, + PopulatedResourceArrays: expectedPopulatedArrays, + AppBudgetConsumed: ignoreAppBudgetConsumed, + AppBudgetAdded: 700, + UnnamedResourcesAccessed: expectedGroupResources, + }}, + }, + }) +} + +func mixedResourcePopulationTest(t *testing.T) { + env := simulationtesting.PrepareSimulatorTest(t) + + sender := env.Accounts[0].Addr + otherAddress := env.Accounts[1].Addr + assetID := env.CreateAsset(sender, basics.AssetParams{Total: 100}) + + // Create app and asset for test and opt in + otherProg := "#pragma version 9\nint 1; return" + otherAppID := env.CreateApp(otherAddress, simulationtesting.AppParams{ + ApprovalProgram: otherProg, + ClearStateProgram: otherProg, + }) + env.OptIntoApp(otherAddress, otherAppID) + + env.OptIntoAsset(otherAddress, assetID) + env.TransferAsset(sender, otherAddress, assetID, 1) + + prog := fmt.Sprintf(`#pragma version 9 + txn ApplicationID + bz end + + addr %s // otherAddress + store 0 + + int %d // assetID + store 1 + + int %d // otherAppID + store 2 + + // Account access + load 0 // otherAddress + balance + assert + + // Asset params access + load 1 // assetID + asset_params_get AssetTotal + assert + int 100 + == + assert + + // Asset holding access + load 0 // otherAddress + load 1 // assetID + asset_holding_get AssetBalance + assert + int 1 + == + assert + + // App params access + load 2 // otherAppID + app_params_get AppCreator + assert + load 0 // otherAddress + == + assert + + // App local access + load 0 // otherAddress + load 2 // otherAppID + app_opted_in + assert + + // Box access + byte "A" + int 1025 + box_create + assert + + end: + int 1 + `, otherAddress.String(), assetID, otherAppID) + + testAppID := env.CreateApp(sender, simulationtesting.AppParams{ + ApprovalProgram: prog, + ClearStateProgram: prog, + }) + + env.TransferAlgos(sender, testAppID.Address(), 512900) + + appCall := env.TxnInfo.NewTxn(txntest.Txn{ + Type: protocol.ApplicationCallTx, + Sender: sender, + ApplicationID: testAppID, + }) + + stxn := appCall.SignedTxn() + proto := env.TxnInfo.CurrentProtocolParams() + maxAppls := proto.MaxTxGroupSize + + emptyBoxref := logic.BoxRef{App: basics.AppIndex(0), Name: ""} + box := logic.BoxRef{App: testAppID, Name: "A"} + + boxes := map[logic.BoxRef]uint64{} + boxes[box] = 0 + accounts := map[basics.Address]struct{}{} + accounts[otherAddress] = struct{}{} + assets := map[basics.AssetIndex]struct{}{} + assets[assetID] = struct{}{} + apps := map[basics.AppIndex]struct{}{} + apps[otherAppID] = struct{}{} + assetHoldings := map[ledgercore.AccountAsset]struct{}{} + assetHoldings[ledgercore.AccountAsset{Address: otherAddress, Asset: assetID}] = struct{}{} + appLocals := map[ledgercore.AccountApp]struct{}{} + appLocals[ledgercore.AccountApp{Address: otherAddress, App: otherAppID}] = struct{}{} + + expectedGroupResources := &simulation.ResourceTracker{ + MaxAccounts: (proto.MaxAppTxnAccounts + proto.MaxAppTxnForeignApps) * maxAppls, + MaxAssets: proto.MaxAppTxnForeignAssets * maxAppls, + MaxApps: proto.MaxAppTxnForeignApps * maxAppls, + MaxBoxes: proto.MaxAppBoxReferences * maxAppls, + MaxTotalRefs: proto.MaxAppTotalTxnReferences * maxAppls, + MaxCrossProductReferences: 80 * maxAppls, + Accounts: accounts, + Boxes: boxes, + Assets: assets, + Apps: apps, + AssetHoldings: assetHoldings, + AppLocals: appLocals, + NumEmptyBoxRefs: 1, + } + + expectedPopulatedArrays := map[int]simulation.PopulatedResourceArrays{ + 0: { + Accounts: []basics.Address{otherAddress}, + Assets: []basics.AssetIndex{assetID}, + Apps: []basics.AppIndex{otherAppID}, + Boxes: []logic.BoxRef{box, emptyBoxref}, + }, + } + + runSimulationTestCase(t, env, simulationTestCase{ + input: simulation.Request{ + TxnGroups: [][]transactions.SignedTxn{{stxn}}, + AllowEmptySignatures: true, + AllowUnnamedResources: true, + PopulateResources: true, + }, + expected: simulation.Result{ + Version: simulation.ResultLatestVersion, + LastRound: env.TxnInfo.LatestRound(), + EvalOverrides: simulation.ResultEvalOverrides{ + AllowEmptySignatures: true, + AllowUnnamedResources: true, + }, + TxnGroups: []simulation.TxnGroupResult{{ + Txns: []simulation.TxnResult{ + { + AppBudgetConsumed: ignoreAppBudgetConsumed, + UnnamedResourcesAccessed: nil, + }}, + PopulatedResourceArrays: expectedPopulatedArrays, + AppBudgetConsumed: ignoreAppBudgetConsumed, + AppBudgetAdded: 700, + UnnamedResourcesAccessed: expectedGroupResources, + }}, + }, + }) +} + +func TestPopulateResources(t *testing.T) { + partitiontest.PartitionTest(t) + t.Parallel() + + t.Run("group sharing", func(t *testing.T) { + t.Parallel() + populateResourceTest(t, true) + }) + + t.Run("no group sharing", func(t *testing.T) { + t.Parallel() + populateResourceTest(t, false) + }) + + t.Run("mixed resources", func(t *testing.T) { + t.Parallel() + mixedResourcePopulationTest(t) + }) +} diff --git a/ledger/simulation/simulator.go b/ledger/simulation/simulator.go index d4ed4e4e94..6a168d0c23 100644 --- a/ledger/simulation/simulator.go +++ b/ledger/simulation/simulator.go @@ -42,6 +42,7 @@ type Request struct { ExtraOpcodeBudget uint64 TraceConfig ExecTraceConfig FixSigners bool + PopulateResources bool } // simulatorLedger patches the ledger interface to use a constant latest round. @@ -332,6 +333,26 @@ func (s Simulator) Simulate(simulateRequest Request) (Result, error) { } if simulatorTracer.result.TxnGroups[0].UnnamedResourcesAccessed != nil { + if simulateRequest.PopulateResources { + consensusParams, err := s.ledger.ConsensusParams(s.ledger.start) + if err != nil { + return Result{}, err + } + resourcePopulator := makeResourcePopulator(simulateRequest.TxnGroups[0], consensusParams) + + txnResources := make([]ResourceTracker, len(simulatorTracer.result.TxnGroups[0].Txns)) + for i := range simulatorTracer.result.TxnGroups[0].Txns { + txnResources[i] = *simulatorTracer.result.TxnGroups[0].Txns[i].UnnamedResourcesAccessed + } + + err = resourcePopulator.populateResources(*simulatorTracer.result.TxnGroups[0].UnnamedResourcesAccessed, txnResources) + if err != nil { + return Result{}, err + } + + simulatorTracer.result.TxnGroups[0].PopulatedResourceArrays = resourcePopulator.getPopulatedArrays() + } + // Remove private fields for easier test comparison simulatorTracer.result.TxnGroups[0].UnnamedResourcesAccessed.removePrivateFields() if !simulatorTracer.result.TxnGroups[0].UnnamedResourcesAccessed.HasResources() { diff --git a/ledger/simulation/trace.go b/ledger/simulation/trace.go index a1cb311089..fed78dd0ea 100644 --- a/ledger/simulation/trace.go +++ b/ledger/simulation/trace.go @@ -72,6 +72,12 @@ type TxnGroupResult struct { // will be placed in the corresponding `UnnamedResourcesAccessed` field in the appropriate // TxnResult struct. UnnamedResourcesAccessed *ResourceTracker + + // PopulatedResourceArrays will be present if PopulateResources is true in the Request. + // In that case, it will be a map of resource arrays for each app call in the group. + // There may be more resource arrays given than transactions in the group, which means more + // app call transactions would be needed for the extra resources. + PopulatedResourceArrays map[int]PopulatedResourceArrays } func makeTxnGroupResult(txgroup []transactions.SignedTxn) TxnGroupResult { diff --git a/test/e2e-go/restAPI/simulate/simulateRestAPI_test.go b/test/e2e-go/restAPI/simulate/simulateRestAPI_test.go index 66601c1737..48cf5ef3bc 100644 --- a/test/e2e-go/restAPI/simulate/simulateRestAPI_test.go +++ b/test/e2e-go/restAPI/simulate/simulateRestAPI_test.go @@ -2694,6 +2694,50 @@ int 1 }, } a.Equal(expectedResult, resp) + + // PopulateResources=true should also work + resp, err = testClient.SimulateTransactions(v2.PreEncodedSimulateRequest{ + TxnGroups: []v2.PreEncodedSimulateRequestTransactionGroup{ + { + Txns: []transactions.SignedTxn{stxn}, + }, + }, + AllowUnnamedResources: true, + PopulateResources: true, + }) + a.NoError(err) + + otherAddressAddress := basics.Address{} + err = otherAddressAddress.UnmarshalText([]byte(otherAddress)) + a.NoError(err) + + expectedResult = v2.PreEncodedSimulateResponse{ + Version: 2, + LastRound: resp.LastRound, + EvalOverrides: &model.SimulationEvalOverrides{ + AllowUnnamedResources: &allowUnnamedResources, + }, + TxnGroups: []v2.PreEncodedSimulateTxnGroupResult{ + { + Txns: []v2.PreEncodedSimulateTxnResult{ + { + Txn: v2.PreEncodedTxInfo{Txn: stxn}, + AppBudgetConsumed: &budgetUsed, + PopulatedResourceArrays: &model.ResourceArrays{ + Accounts: &[]string{otherAddressAddress.String()}, + Assets: &[]uint64{uint64(assetID)}, + Apps: &[]uint64{uint64(otherAppID)}, + Boxes: &[]model.BoxReference{{App: uint64(testAppID), Name: []byte("A")}}, + }, + }, + }, + AppBudgetAdded: &budgetAdded, + AppBudgetConsumed: &budgetUsed, + UnnamedResourcesAccessed: &expectedUnnamedGroupResources, + }, + }, + } + a.Equal(expectedResult, resp) } func TestSimulateWithFixSigners(t *testing.T) {