arc200-client 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +16 -20
- package/dist/index.d.ts +16 -20
- package/dist/index.js +49 -358
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +50 -364
- package/dist/index.mjs.map +1 -1
- package/package.json +20 -16
package/dist/index.mjs
CHANGED
|
@@ -1,269 +1,10 @@
|
|
|
1
1
|
// contracts/artifacts/Arc200Client.ts
|
|
2
|
-
import {
|
|
3
|
-
getArc56ReturnValue,
|
|
4
|
-
getABIStructFromABITuple
|
|
5
|
-
} from "@algorandfoundation/algokit-utils/types/app-arc56";
|
|
2
|
+
import { getArc56ReturnValue, getABIStructFromABITuple } from "@algorandfoundation/algokit-utils/types/app-arc56";
|
|
6
3
|
import {
|
|
7
4
|
AppClient as _AppClient
|
|
8
5
|
} from "@algorandfoundation/algokit-utils/types/app-client";
|
|
9
|
-
import {
|
|
10
|
-
AppFactory as _AppFactory
|
|
11
|
-
} from "@algorandfoundation/algokit-utils/types/app-factory";
|
|
12
|
-
var APP_SPEC = {
|
|
13
|
-
name: "Arc200",
|
|
14
|
-
structs: {
|
|
15
|
-
ApprovalStruct: [
|
|
16
|
-
{ name: "approvalAmount", type: "uint256" },
|
|
17
|
-
{ name: "owner", type: "address" },
|
|
18
|
-
{ name: "spender", type: "address" }
|
|
19
|
-
]
|
|
20
|
-
},
|
|
21
|
-
methods: [
|
|
22
|
-
{
|
|
23
|
-
name: "bootstrap",
|
|
24
|
-
args: [
|
|
25
|
-
{ type: "byte[]", name: "name" },
|
|
26
|
-
{ type: "byte[]", name: "symbol" },
|
|
27
|
-
{ type: "uint8", name: "decimals" },
|
|
28
|
-
{ type: "uint256", name: "totalSupply" }
|
|
29
|
-
],
|
|
30
|
-
returns: { type: "bool" },
|
|
31
|
-
actions: { create: [], call: ["NoOp"] },
|
|
32
|
-
readonly: false,
|
|
33
|
-
events: [
|
|
34
|
-
{
|
|
35
|
-
name: "arc200_Transfer",
|
|
36
|
-
args: [
|
|
37
|
-
{ type: "address", name: "from" },
|
|
38
|
-
{ type: "address", name: "to" },
|
|
39
|
-
{ type: "uint256", name: "value" }
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
recommendations: {}
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: "arc200_name",
|
|
47
|
-
args: [],
|
|
48
|
-
returns: { type: "byte[32]", desc: "The name of the token" },
|
|
49
|
-
actions: { create: [], call: ["NoOp"] },
|
|
50
|
-
readonly: true,
|
|
51
|
-
desc: "Returns the name of the token",
|
|
52
|
-
events: [],
|
|
53
|
-
recommendations: {}
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: "arc200_symbol",
|
|
57
|
-
args: [],
|
|
58
|
-
returns: { type: "byte[8]", desc: "The symbol of the token" },
|
|
59
|
-
actions: { create: [], call: ["NoOp"] },
|
|
60
|
-
readonly: true,
|
|
61
|
-
desc: "Returns the symbol of the token",
|
|
62
|
-
events: [],
|
|
63
|
-
recommendations: {}
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "arc200_decimals",
|
|
67
|
-
args: [],
|
|
68
|
-
returns: { type: "uint8", desc: "The decimals of the token" },
|
|
69
|
-
actions: { create: [], call: ["NoOp"] },
|
|
70
|
-
readonly: true,
|
|
71
|
-
desc: "Returns the decimals of the token",
|
|
72
|
-
events: [],
|
|
73
|
-
recommendations: {}
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: "arc200_totalSupply",
|
|
77
|
-
args: [],
|
|
78
|
-
returns: { type: "uint256", desc: "The total supply of the token" },
|
|
79
|
-
actions: { create: [], call: ["NoOp"] },
|
|
80
|
-
readonly: true,
|
|
81
|
-
desc: "Returns the total supply of the token",
|
|
82
|
-
events: [],
|
|
83
|
-
recommendations: {}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
name: "arc200_balanceOf",
|
|
87
|
-
args: [{ type: "address", name: "owner", desc: "The address of the owner of the token" }],
|
|
88
|
-
returns: { type: "uint256", desc: "The current balance of the holder of the token" },
|
|
89
|
-
actions: { create: [], call: ["NoOp"] },
|
|
90
|
-
readonly: true,
|
|
91
|
-
desc: "Returns the current balance of the owner of the token",
|
|
92
|
-
events: [],
|
|
93
|
-
recommendations: {}
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: "arc200_transfer",
|
|
97
|
-
args: [
|
|
98
|
-
{ type: "address", name: "to", desc: "The destination of the transfer" },
|
|
99
|
-
{ type: "uint256", name: "value", desc: "Amount of tokens to transfer" }
|
|
100
|
-
],
|
|
101
|
-
returns: { type: "bool", desc: "Success" },
|
|
102
|
-
actions: { create: [], call: ["NoOp"] },
|
|
103
|
-
readonly: false,
|
|
104
|
-
desc: "Transfers tokens",
|
|
105
|
-
events: [
|
|
106
|
-
{
|
|
107
|
-
name: "arc200_Transfer",
|
|
108
|
-
args: [
|
|
109
|
-
{ type: "address", name: "from" },
|
|
110
|
-
{ type: "address", name: "to" },
|
|
111
|
-
{ type: "uint256", name: "value" }
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
],
|
|
115
|
-
recommendations: {}
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
name: "arc200_transferFrom",
|
|
119
|
-
args: [
|
|
120
|
-
{ type: "address", name: "from", desc: "The source of the transfer" },
|
|
121
|
-
{ type: "address", name: "to", desc: "The destination of the transfer" },
|
|
122
|
-
{ type: "uint256", name: "value", desc: "Amount of tokens to transfer" }
|
|
123
|
-
],
|
|
124
|
-
returns: { type: "bool", desc: "Success" },
|
|
125
|
-
actions: { create: [], call: ["NoOp"] },
|
|
126
|
-
readonly: false,
|
|
127
|
-
desc: "Transfers tokens from source to destination as approved spender",
|
|
128
|
-
events: [
|
|
129
|
-
{
|
|
130
|
-
name: "arc200_Approval",
|
|
131
|
-
args: [
|
|
132
|
-
{ type: "address", name: "owner" },
|
|
133
|
-
{ type: "address", name: "spender" },
|
|
134
|
-
{ type: "uint256", name: "value" }
|
|
135
|
-
]
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
name: "arc200_Transfer",
|
|
139
|
-
args: [
|
|
140
|
-
{ type: "address", name: "from" },
|
|
141
|
-
{ type: "address", name: "to" },
|
|
142
|
-
{ type: "uint256", name: "value" }
|
|
143
|
-
]
|
|
144
|
-
}
|
|
145
|
-
],
|
|
146
|
-
recommendations: {}
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
name: "arc200_approve",
|
|
150
|
-
args: [
|
|
151
|
-
{ type: "address", name: "spender", desc: "Who is allowed to take tokens on owner's behalf" },
|
|
152
|
-
{ type: "uint256", name: "value", desc: "Amount of tokens to be taken by spender" }
|
|
153
|
-
],
|
|
154
|
-
returns: { type: "bool", desc: "Success" },
|
|
155
|
-
actions: { create: [], call: ["NoOp"] },
|
|
156
|
-
readonly: false,
|
|
157
|
-
desc: "Approve spender for a token",
|
|
158
|
-
events: [
|
|
159
|
-
{
|
|
160
|
-
name: "arc200_Approval",
|
|
161
|
-
args: [
|
|
162
|
-
{ type: "address", name: "owner" },
|
|
163
|
-
{ type: "address", name: "spender" },
|
|
164
|
-
{ type: "uint256", name: "value" }
|
|
165
|
-
]
|
|
166
|
-
}
|
|
167
|
-
],
|
|
168
|
-
recommendations: {}
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
name: "arc200_allowance",
|
|
172
|
-
args: [
|
|
173
|
-
{ type: "address", name: "owner", desc: "Owner's account" },
|
|
174
|
-
{ type: "address", name: "spender", desc: "Who is allowed to take tokens on owner's behalf" }
|
|
175
|
-
],
|
|
176
|
-
returns: { type: "uint256", desc: "The remaining allowance" },
|
|
177
|
-
actions: { create: [], call: ["NoOp"] },
|
|
178
|
-
readonly: true,
|
|
179
|
-
desc: "Returns the current allowance of the spender of the tokens of the owner",
|
|
180
|
-
events: [],
|
|
181
|
-
recommendations: {}
|
|
182
|
-
}
|
|
183
|
-
],
|
|
184
|
-
arcs: [22, 28],
|
|
185
|
-
desc: "Smart Contract Token Base Interface",
|
|
186
|
-
networks: {},
|
|
187
|
-
state: {
|
|
188
|
-
schema: { global: { ints: 0, bytes: 4 }, local: { ints: 0, bytes: 0 } },
|
|
189
|
-
keys: {
|
|
190
|
-
global: {
|
|
191
|
-
name: { keyType: "AVMString", valueType: "byte[]", key: "bg==", desc: "Name of the asset. Max 32 bytes" },
|
|
192
|
-
symbol: { keyType: "AVMString", valueType: "byte[]", key: "cw==", desc: "Symbol of the asset. Max 8 bytes" },
|
|
193
|
-
decimals: {
|
|
194
|
-
keyType: "AVMString",
|
|
195
|
-
valueType: "uint8",
|
|
196
|
-
key: "ZA==",
|
|
197
|
-
desc: "Decimals of the asset. Recommended is 6 decimal places."
|
|
198
|
-
},
|
|
199
|
-
totalSupply: { keyType: "AVMString", valueType: "uint256", key: "dA==", desc: "Minted supply" }
|
|
200
|
-
},
|
|
201
|
-
local: {},
|
|
202
|
-
box: {}
|
|
203
|
-
},
|
|
204
|
-
maps: {
|
|
205
|
-
global: {},
|
|
206
|
-
local: {},
|
|
207
|
-
box: {
|
|
208
|
-
balances: { keyType: "address", valueType: "uint256", prefix: "Yg==" },
|
|
209
|
-
approvals: { keyType: "byte[32]", valueType: "ApprovalStruct", prefix: "YQ==" }
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
bareActions: { create: ["NoOp"], call: [] },
|
|
214
|
-
sourceInfo: {
|
|
215
|
-
approval: {
|
|
216
|
-
sourceInfo: [
|
|
217
|
-
{ pc: [593, 723], errorMessage: "Box must have value" },
|
|
218
|
-
{ pc: [724], errorMessage: "Index access is out of bounds" },
|
|
219
|
-
{ pc: [614], errorMessage: "Insufficient balance at the sender account" },
|
|
220
|
-
{ pc: [371], errorMessage: "Name of the asset must be longer or equal to 1 character" },
|
|
221
|
-
{ pc: [374], errorMessage: "Name of the asset must be shorter or equal to 32 characters" },
|
|
222
|
-
{ pc: [145, 167, 189, 214, 236, 255, 271, 287, 303, 319], errorMessage: "OnCompletion is not NoOp" },
|
|
223
|
-
{ pc: [363], errorMessage: "Only deployer of this smart contract can call bootstrap method" },
|
|
224
|
-
{ pc: [382], errorMessage: "Symbol of the asset must be longer or equal to 1 character" },
|
|
225
|
-
{ pc: [385], errorMessage: "Symbol of the asset must be shorter or equal to 8 characters" },
|
|
226
|
-
{ pc: [392], errorMessage: "This method can be called only once" },
|
|
227
|
-
{ pc: [352], errorMessage: "can only call when creating" },
|
|
228
|
-
{ pc: [148, 170, 192, 217, 239, 258, 274, 290, 306, 322], errorMessage: "can only call when not creating" },
|
|
229
|
-
{ pc: [443, 458, 473, 478], errorMessage: "check GlobalState exists" },
|
|
230
|
-
{ pc: [518], errorMessage: "insufficient approval" },
|
|
231
|
-
{ pc: [451, 466, 692], errorMessage: "invalid size" },
|
|
232
|
-
{ pc: [526, 632, 654], errorMessage: "overflow" }
|
|
233
|
-
],
|
|
234
|
-
pcOffsetMethod: "none"
|
|
235
|
-
},
|
|
236
|
-
clear: { sourceInfo: [], pcOffsetMethod: "none" }
|
|
237
|
-
},
|
|
238
|
-
source: {
|
|
239
|
-
approval: "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAzMiAwIDgKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiYiIgInQiIDB4ODAgMHg3OTgzYzM1YyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo0NAogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfcm91dGluZ0AxNQogICAgcHVzaGJ5dGVzcyAweDk3NTM4MmUyIDB4NjU3ZDEzZWMgMHhiNmFlMWEyNSAweDg0ZWMxM2Q1IDB4ZWM5OTYwNDEgMHg4MmU1NzNjNCAweGRhNzAyNWI5IDB4NGE5NjhmOGYgMHhiNTQyMjEyNSAweGJiYjMxOWYzIC8vIG1ldGhvZCAiYm9vdHN0cmFwKGJ5dGVbXSxieXRlW10sdWludDgsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfbmFtZSgpYnl0ZVszMl0iLCBtZXRob2QgImFyYzIwMF9zeW1ib2woKWJ5dGVbOF0iLCBtZXRob2QgImFyYzIwMF9kZWNpbWFscygpdWludDgiLCBtZXRob2QgImFyYzIwMF90b3RhbFN1cHBseSgpdWludDI1NiIsIG1ldGhvZCAiYXJjMjAwX2JhbGFuY2VPZihhZGRyZXNzKXVpbnQyNTYiLCBtZXRob2QgImFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfYXBwcm92ZShhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX2FsbG93YW5jZShhZGRyZXNzLGFkZHJlc3MpdWludDI1NiIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fYm9vdHN0cmFwX3JvdXRlQDMgbWFpbl9hcmMyMDBfbmFtZV9yb3V0ZUA0IG1haW5fYXJjMjAwX3N5bWJvbF9yb3V0ZUA1IG1haW5fYXJjMjAwX2RlY2ltYWxzX3JvdXRlQDYgbWFpbl9hcmMyMDBfdG90YWxTdXBwbHlfcm91dGVANyBtYWluX2FyYzIwMF9iYWxhbmNlT2Zfcm91dGVAOCBtYWluX2FyYzIwMF90cmFuc2Zlcl9yb3V0ZUA5IG1haW5fYXJjMjAwX3RyYW5zZmVyRnJvbV9yb3V0ZUAxMCBtYWluX2FyYzIwMF9hcHByb3ZlX3JvdXRlQDExIG1haW5fYXJjMjAwX2FsbG93YW5jZV9yb3V0ZUAxMgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQ0CiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgaW50Y18yIC8vIDAKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfYWxsb3dhbmNlX3JvdXRlQDEyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQ0CiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGNhbGxzdWIgYXJjMjAwX2FsbG93YW5jZQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfYXBwcm92ZV9yb3V0ZUAxMToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo0NAogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIGFyYzIwMF9hcHByb3ZlCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF90cmFuc2ZlckZyb21fcm91dGVAMTA6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTU3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NDQKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTU3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiBhcmMyMDBfdHJhbnNmZXJGcm9tCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF90cmFuc2Zlcl9yb3V0ZUA5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQ0CiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgYXJjMjAwX3RyYW5zZmVyCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF9iYWxhbmNlT2Zfcm91dGVAODoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo0NAogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICBjYWxsc3ViIGFyYzIwMF9iYWxhbmNlT2YKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fYXJjMjAwX3RvdGFsU3VwcGx5X3JvdXRlQDc6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTIxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIGFyYzIwMF90b3RhbFN1cHBseQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfZGVjaW1hbHNfcm91dGVANjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgYXJjMjAwX2RlY2ltYWxzCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF9zeW1ib2xfcm91dGVANToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMDEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgYXJjMjAwX3N5bWJvbAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfbmFtZV9yb3V0ZUA0OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIGFyYzIwMF9uYW1lCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2Jvb3RzdHJhcF9yb3V0ZUAzOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjY1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NDQKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIGJvb3RzdHJhcAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMTU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NDQKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDE5CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmJvb3RzdHJhcChuYW1lOiBieXRlcywgc3ltYm9sOiBieXRlcywgZGVjaW1hbHM6IGJ5dGVzLCB0b3RhbFN1cHBseTogYnl0ZXMpIC0+IGJ5dGVzOgpib290c3RyYXA6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjUtNjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgYm9vdHN0cmFwKG5hbWU6IER5bmFtaWNCeXRlcywgc3ltYm9sOiBEeW5hbWljQnl0ZXMsIGRlY2ltYWxzOiBVaW50TjgsIHRvdGFsU3VwcGx5OiBVaW50TjI1Nik6IEJvb2wgewogICAgcHJvdG8gNCAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjcKICAgIC8vIGFzc2VydChUeG4uc2VuZGVyID09PSBHbG9iYWwuY3JlYXRvckFkZHJlc3MsICdPbmx5IGRlcGxveWVyIG9mIHRoaXMgc21hcnQgY29udHJhY3QgY2FuIGNhbGwgYm9vdHN0cmFwIG1ldGhvZCcpOwogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgZGVwbG95ZXIgb2YgdGhpcyBzbWFydCBjb250cmFjdCBjYW4gY2FsbCBib290c3RyYXAgbWV0aG9kCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjgKICAgIC8vIGFzc2VydChuYW1lLm5hdGl2ZS5sZW5ndGggPiAwLCAnTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXInKTsKICAgIGZyYW1lX2RpZyAtNAogICAgZXh0cmFjdCAyIDAKICAgIGxlbgogICAgZHVwCiAgICBhc3NlcnQgLy8gTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2OQogICAgLy8gYXNzZXJ0KG5hbWUubmF0aXZlLmxlbmd0aCA8PSAzMiwgJ05hbWUgb2YgdGhlIGFzc2V0IG11c3QgYmUgc2hvcnRlciBvciBlcXVhbCB0byAzMiBjaGFyYWN0ZXJzJyk7CiAgICBpbnRjXzEgLy8gMzIKICAgIDw9CiAgICBhc3NlcnQgLy8gTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBzaG9ydGVyIG9yIGVxdWFsIHRvIDMyIGNoYXJhY3RlcnMKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3MAogICAgLy8gYXNzZXJ0KHN5bWJvbC5uYXRpdmUubGVuZ3RoID4gMCwgJ1N5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXInKTsKICAgIGZyYW1lX2RpZyAtMwogICAgZXh0cmFjdCAyIDAKICAgIGxlbgogICAgZHVwCiAgICBhc3NlcnQgLy8gU3ltYm9sIG9mIHRoZSBhc3NldCBtdXN0IGJlIGxvbmdlciBvciBlcXVhbCB0byAxIGNoYXJhY3RlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjcxCiAgICAvLyBhc3NlcnQoc3ltYm9sLm5hdGl2ZS5sZW5ndGggPD0gOCwgJ1N5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBzaG9ydGVyIG9yIGVxdWFsIHRvIDggY2hhcmFjdGVycycpOwogICAgaW50Y18zIC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gU3ltYm9sIG9mIHRoZSBhc3NldCBtdXN0IGJlIHNob3J0ZXIgb3IgZXF1YWwgdG8gOCBjaGFyYWN0ZXJzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjAKICAgIC8vIHB1YmxpYyB0b3RhbFN1cHBseSA9IEdsb2JhbFN0YXRlPFVpbnROMjU2Pih7IGtleTogJ3QnIH0pOwogICAgaW50Y18yIC8vIDAKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzIKICAgIC8vIGFzc2VydCghdGhpcy50b3RhbFN1cHBseS5oYXNWYWx1ZSwgJ1RoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb25seSBvbmNlJyk7CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBvbmx5IG9uY2UKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo0OAogICAgLy8gcHVibGljIG5hbWUgPSBHbG9iYWxTdGF0ZTxEeW5hbWljQnl0ZXM+KHsga2V5OiAnbicgfSk7CiAgICBwdXNoYnl0ZXMgIm4iCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzQKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IG5hbWU7CiAgICBmcmFtZV9kaWcgLTQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIHB1YmxpYyBzeW1ib2wgPSBHbG9iYWxTdGF0ZTxEeW5hbWljQnl0ZXM+KHsga2V5OiAncycgfSk7CiAgICBwdXNoYnl0ZXMgInMiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzUKICAgIC8vIHRoaXMuc3ltYm9sLnZhbHVlID0gc3ltYm9sOwogICAgZnJhbWVfZGlnIC0zCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYwCiAgICAvLyBwdWJsaWMgdG90YWxTdXBwbHkgPSBHbG9iYWxTdGF0ZTxVaW50TjI1Nj4oeyBrZXk6ICd0JyB9KTsKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzYKICAgIC8vIHRoaXMudG90YWxTdXBwbHkudmFsdWUgPSB0b3RhbFN1cHBseTsKICAgIGZyYW1lX2RpZyAtMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1NgogICAgLy8gcHVibGljIGRlY2ltYWxzID0gR2xvYmFsU3RhdGU8VWludE44Pih7IGtleTogJ2QnIH0pOwogICAgcHVzaGJ5dGVzICJkIgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjc3CiAgICAvLyB0aGlzLmRlY2ltYWxzLnZhbHVlID0gZGVjaW1hbHM7CiAgICBmcmFtZV9kaWcgLTIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzgKICAgIC8vIGNvbnN0IHNlbmRlciA9IG5ldyBBZGRyZXNzKFR4bi5zZW5kZXIpOwogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYyCiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludE4yNTY+KHsga2V5UHJlZml4OiAnYicgfSk7CiAgICBieXRlY18xIC8vICJiIgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjgwCiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSB0b3RhbFN1cHBseTsKICAgIGZyYW1lX2RpZyAtMQogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjgyCiAgICAvLyBlbWl0KG5ldyBhcmMyMDBfVHJhbnNmZXIoeyBmcm9tOiBuZXcgQWRkcmVzcyhHbG9iYWwuemVyb0FkZHJlc3MpLCB0bzogc2VuZGVyLCB2YWx1ZTogdG90YWxTdXBwbHkgfSkpOwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBieXRlYyA0IC8vIG1ldGhvZCAiYXJjMjAwX1RyYW5zZmVyKGFkZHJlc3MsYWRkcmVzcyx1aW50MjU2KSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODMKICAgIC8vIHJldHVybiBuZXcgQm9vbCh0cnVlKTsKICAgIGJ5dGVjXzMgLy8gMHg4MAogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX25hbWUoKSAtPiBieXRlczoKYXJjMjAwX25hbWU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NDgKICAgIC8vIHB1YmxpYyBuYW1lID0gR2xvYmFsU3RhdGU8RHluYW1pY0J5dGVzPih7IGtleTogJ24nIH0pOwogICAgaW50Y18yIC8vIDAKICAgIHB1c2hieXRlcyAibiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OTMKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8MzI+KHRoaXMubmFtZS52YWx1ZS5uYXRpdmUpOwogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBzaXplCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfc3ltYm9sKCkgLT4gYnl0ZXM6CmFyYzIwMF9zeW1ib2w6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIHB1YmxpYyBzeW1ib2wgPSBHbG9iYWxTdGF0ZTxEeW5hbWljQnl0ZXM+KHsga2V5OiAncycgfSk7CiAgICBpbnRjXzIgLy8gMAogICAgcHVzaGJ5dGVzICJzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMDMKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8OD4odGhpcy5zeW1ib2wudmFsdWUubmF0aXZlKTsKICAgIGV4dHJhY3QgMiAwCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBzaXplCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfZGVjaW1hbHMoKSAtPiBieXRlczoKYXJjMjAwX2RlY2ltYWxzOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjU2CiAgICAvLyBwdWJsaWMgZGVjaW1hbHMgPSBHbG9iYWxTdGF0ZTxVaW50Tjg+KHsga2V5OiAnZCcgfSk7CiAgICBpbnRjXzIgLy8gMAogICAgcHVzaGJ5dGVzICJkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMTMKICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxzLnZhbHVlOwogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX3RvdGFsU3VwcGx5KCkgLT4gYnl0ZXM6CmFyYzIwMF90b3RhbFN1cHBseToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2MAogICAgLy8gcHVibGljIHRvdGFsU3VwcGx5ID0gR2xvYmFsU3RhdGU8VWludE4yNTY+KHsga2V5OiAndCcgfSk7CiAgICBpbnRjXzIgLy8gMAogICAgYnl0ZWNfMiAvLyAidCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTIzCiAgICAvLyByZXR1cm4gdGhpcy50b3RhbFN1cHBseS52YWx1ZTsKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF9iYWxhbmNlT2Yob3duZXI6IGJ5dGVzKSAtPiBieXRlczoKYXJjMjAwX2JhbGFuY2VPZjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzItMTMzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgLy8gcHVibGljIGFyYzIwMF9iYWxhbmNlT2Yob3duZXI6IEFkZHJlc3MpOiBhcmM0LlVpbnROMjU2IHsKICAgIHByb3RvIDEgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjEzNAogICAgLy8gcmV0dXJuIHRoaXMuX2JhbGFuY2VPZihvd25lcik7CiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgX2JhbGFuY2VPZgogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX3RyYW5zZmVyKHRvOiBieXRlcywgdmFsdWU6IGJ5dGVzKSAtPiBieXRlczoKYXJjMjAwX3RyYW5zZmVyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE0NC0xNDUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgYXJjMjAwX3RyYW5zZmVyKHRvOiBBZGRyZXNzLCB2YWx1ZTogYXJjNC5VaW50TjI1Nik6IGFyYzQuQm9vbCB7CiAgICBwcm90byAyIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNDYKICAgIC8vIHJldHVybiB0aGlzLl90cmFuc2ZlcihuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKSwgdG8sIHZhbHVlKTsKICAgIHR4biBTZW5kZXIKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIF90cmFuc2ZlcgogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX3RyYW5zZmVyRnJvbShmcm9tOiBieXRlcywgdG86IGJ5dGVzLCB2YWx1ZTogYnl0ZXMpIC0+IGJ5dGVzOgphcmMyMDBfdHJhbnNmZXJGcm9tOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE1Ny0xNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgYXJjMjAwX3RyYW5zZmVyRnJvbShmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzcywgdmFsdWU6IGFyYzQuVWludE4yNTYpOiBhcmM0LkJvb2wgewogICAgcHJvdG8gMyAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTU5CiAgICAvLyBjb25zdCBzcGVuZGVyID0gbmV3IEFkZHJlc3MoVHhuLnNlbmRlcik7CiAgICB0eG4gU2VuZGVyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTYwCiAgICAvLyBjb25zdCBzcGVuZGVyX2FsbG93YW5jZSA9IHRoaXMuX2FsbG93YW5jZShmcm9tLCBzcGVuZGVyKTsKICAgIGZyYW1lX2RpZyAtMwogICAgZGlnIDEKICAgIGNhbGxzdWIgX2FsbG93YW5jZQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE2MQogICAgLy8gYXNzZXJ0KHNwZW5kZXJfYWxsb3dhbmNlLm5hdGl2ZSA+PSB2YWx1ZS5uYXRpdmUsICdpbnN1ZmZpY2llbnQgYXBwcm92YWwnKTsKICAgIGR1cAogICAgZnJhbWVfZGlnIC0xCiAgICBiPj0KICAgIGFzc2VydCAvLyBpbnN1ZmZpY2llbnQgYXBwcm92YWwKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNjIKICAgIC8vIGNvbnN0IG5ld19zcGVuZGVyX2FsbG93YW5jZSA9IG5ldyBVaW50TjI1NihzcGVuZGVyX2FsbG93YW5jZS5uYXRpdmUgLSB2YWx1ZS5uYXRpdmUpOwogICAgZnJhbWVfZGlnIC0xCiAgICBiLQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyAzMgogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgaW50Y18xIC8vIDMyCiAgICBiemVybwogICAgYnwKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNjMKICAgIC8vIHRoaXMuX2FwcHJvdmUoZnJvbSwgc3BlbmRlciwgbmV3X3NwZW5kZXJfYWxsb3dhbmNlKTsKICAgIGZyYW1lX2RpZyAtMwogICAgY292ZXIgMgogICAgY2FsbHN1YiBfYXBwcm92ZQogICAgcG9wCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTY0CiAgICAvLyByZXR1cm4gdGhpcy5fdHJhbnNmZXIoZnJvbSwgdG8sIHZhbHVlKTsKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgX3RyYW5zZmVyCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfYXBwcm92ZShzcGVuZGVyOiBieXRlcywgdmFsdWU6IGJ5dGVzKSAtPiBieXRlczoKYXJjMjAwX2FwcHJvdmU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTc0LTE3NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIHB1YmxpYyBhcmMyMDBfYXBwcm92ZShzcGVuZGVyOiBBZGRyZXNzLCB2YWx1ZTogYXJjNC5VaW50TjI1Nik6IEJvb2wgewogICAgcHJvdG8gMiAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTc2CiAgICAvLyBjb25zdCBvd25lciA9IG5ldyBBZGRyZXNzKFR4bi5zZW5kZXIpOwogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE3NwogICAgLy8gcmV0dXJuIHRoaXMuX2FwcHJvdmUob3duZXIsIHNwZW5kZXIsIHZhbHVlKTsKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIF9hcHByb3ZlCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfYWxsb3dhbmNlKG93bmVyOiBieXRlcywgc3BlbmRlcjogYnl0ZXMpIC0+IGJ5dGVzOgphcmMyMDBfYWxsb3dhbmNlOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4Ni0xODcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICAvLyBwdWJsaWMgYXJjMjAwX2FsbG93YW5jZShvd25lcjogQWRkcmVzcywgc3BlbmRlcjogQWRkcmVzcyk6IGFyYzQuVWludE4yNTYgewogICAgcHJvdG8gMiAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTg4CiAgICAvLyByZXR1cm4gdGhpcy5fYWxsb3dhbmNlKG93bmVyLCBzcGVuZGVyKTsKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIF9hbGxvd2FuY2UKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl9iYWxhbmNlT2Yob3duZXI6IGJ5dGVzKSAtPiBieXRlczoKX2JhbGFuY2VPZjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTEKICAgIC8vIHByaXZhdGUgX2JhbGFuY2VPZihvd25lcjogQWRkcmVzcyk6IFVpbnROMjU2IHsKICAgIHByb3RvIDEgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYyCiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludE4yNTY+KHsga2V5UHJlZml4OiAnYicgfSk7CiAgICBieXRlY18xIC8vICJiIgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIGR1cAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5MgogICAgLy8gaWYgKCF0aGlzLmJhbGFuY2VzKG93bmVyKS5leGlzdHMpIHJldHVybiBuZXcgVWludE4yNTYoMCk7CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGJueiBfYmFsYW5jZU9mX2FmdGVyX2lmX2Vsc2VAMgogICAgYnl0ZWMgNSAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIHN3YXAKICAgIHJldHN1YgoKX2JhbGFuY2VPZl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTkzCiAgICAvLyByZXR1cm4gdGhpcy5iYWxhbmNlcyhvd25lcikudmFsdWU7CiAgICBmcmFtZV9kaWcgMAogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIHN3YXAKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl90cmFuc2ZlcihzZW5kZXI6IGJ5dGVzLCByZWNpcGllbnQ6IGJ5dGVzLCBhbW91bnQ6IGJ5dGVzKSAtPiBieXRlczoKX3RyYW5zZmVyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NgogICAgLy8gcHJpdmF0ZSBfdHJhbnNmZXIoc2VuZGVyOiBBZGRyZXNzLCByZWNpcGllbnQ6IEFkZHJlc3MsIGFtb3VudDogVWludE4yNTYpOiBCb29sIHsKICAgIHByb3RvIDMgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NwogICAgLy8gY29uc3Qgc2VuZGVyX2JhbGFuY2UgPSB0aGlzLl9iYWxhbmNlT2Yoc2VuZGVyKTsKICAgIGZyYW1lX2RpZyAtMwogICAgY2FsbHN1YiBfYmFsYW5jZU9mCiAgICBkdXAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTgKICAgIC8vIGNvbnN0IHJlY2lwaWVudF9iYWxhbmNlID0gdGhpcy5fYmFsYW5jZU9mKHJlY2lwaWVudCk7CiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgX2JhbGFuY2VPZgogICAgc3dhcAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5OQogICAgLy8gYXNzZXJ0KHNlbmRlcl9iYWxhbmNlLm5hdGl2ZSA+PSBhbW91bnQubmF0aXZlLCAnSW5zdWZmaWNpZW50IGJhbGFuY2UgYXQgdGhlIHNlbmRlciBhY2NvdW50Jyk7CiAgICBmcmFtZV9kaWcgLTEKICAgIGI+PQogICAgYXNzZXJ0IC8vIEluc3VmZmljaWVudCBiYWxhbmNlIGF0IHRoZSBzZW5kZXIgYWNjb3VudAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwMQogICAgLy8gaWYgKHNlbmRlciAhPT0gcmVjaXBpZW50KSB7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgIT0KICAgIGJ6IF90cmFuc2Zlcl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDMKICAgIC8vIHRoaXMuYmFsYW5jZXMoc2VuZGVyKS52YWx1ZSA9IG5ldyBVaW50TjI1NihzZW5kZXJfYmFsYW5jZS5uYXRpdmUgLSBhbW91bnQubmF0aXZlKTsKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgLTEKICAgIGItCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDMyCiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBpbnRjXzEgLy8gMzIKICAgIGJ6ZXJvCiAgICBzd2FwCiAgICBkaWcgMQogICAgYnwKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2MgogICAgLy8gcHVibGljIGJhbGFuY2VzID0gQm94TWFwPEFkZHJlc3MsIFVpbnROMjU2Pih7IGtleVByZWZpeDogJ2InIH0pOwogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjAzCiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSBuZXcgVWludE4yNTYoc2VuZGVyX2JhbGFuY2UubmF0aXZlIC0gYW1vdW50Lm5hdGl2ZSk7CiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjA0CiAgICAvLyB0aGlzLmJhbGFuY2VzKHJlY2lwaWVudCkudmFsdWUgPSBuZXcgVWludE4yNTYocmVjaXBpZW50X2JhbGFuY2UubmF0aXZlICsgYW1vdW50Lm5hdGl2ZSkKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgLTEKICAgIGIrCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDMyCiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBifAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYyCiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludE4yNTY+KHsga2V5UHJlZml4OiAnYicgfSk7CiAgICBieXRlY18xIC8vICJiIgogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDQKICAgIC8vIHRoaXMuYmFsYW5jZXMocmVjaXBpZW50KS52YWx1ZSA9IG5ldyBVaW50TjI1NihyZWNpcGllbnRfYmFsYW5jZS5uYXRpdmUgKyBhbW91bnQubmF0aXZlKQogICAgc3dhcAogICAgYm94X3B1dAoKX3RyYW5zZmVyX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDYKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9UcmFuc2Zlcih7IGZyb206IHNlbmRlciwgdG86IHJlY2lwaWVudCwgdmFsdWU6IGFtb3VudCB9KSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyBtZXRob2QgImFyYzIwMF9UcmFuc2ZlcihhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwNwogICAgLy8gcmV0dXJuIG5ldyBCb29sKHRydWUpOwogICAgYnl0ZWNfMyAvLyAweDgwCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl9hcHByb3ZhbEtleShvd25lcjogYnl0ZXMsIHNwZW5kZXI6IGJ5dGVzKSAtPiBieXRlczoKX2FwcHJvdmFsS2V5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwOQogICAgLy8gcHJpdmF0ZSBfYXBwcm92YWxLZXkob3duZXI6IEFkZHJlc3MsIHNwZW5kZXI6IEFkZHJlc3MpOiBTdGF0aWNCeXRlczwzMj4gewogICAgcHJvdG8gMiAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjEwCiAgICAvLyByZXR1cm4gbmV3IFN0YXRpY0J5dGVzPDMyPihvcC5zaGEyNTYob3AuY29uY2F0KG93bmVyLmJ5dGVzLCBzcGVuZGVyLmJ5dGVzKSkpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgc2l6ZQogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuX2FsbG93YW5jZShvd25lcjogYnl0ZXMsIHNwZW5kZXI6IGJ5dGVzKSAtPiBieXRlczoKX2FsbG93YW5jZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMTMKICAgIC8vIHByaXZhdGUgX2FsbG93YW5jZShvd25lcjogQWRkcmVzcywgc3BlbmRlcjogQWRkcmVzcyk6IFVpbnROMjU2IHsKICAgIHByb3RvIDIgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIxNAogICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fYXBwcm92YWxLZXkob3duZXIsIHNwZW5kZXIpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgX2FwcHJvdmFsS2V5CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjQKICAgIC8vIHB1YmxpYyBhcHByb3ZhbHMgPSBCb3hNYXA8U3RhdGljQnl0ZXM8MzI+LCBBcHByb3ZhbFN0cnVjdD4oeyBrZXlQcmVmaXg6ICdhJyB9KTsKICAgIHB1c2hieXRlcyAiYSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjE1CiAgICAvLyBpZiAoIXRoaXMuYXBwcm92YWxzKGtleSkuZXhpc3RzKSByZXR1cm4gbmV3IFVpbnROMjU2KDApOwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBibnogX2FsbG93YW5jZV9hZnRlcl9pZl9lbHNlQDIKICAgIGJ5dGVjIDUgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBzd2FwCiAgICByZXRzdWIKCl9hbGxvd2FuY2VfYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIxNgogICAgLy8gcmV0dXJuIHRoaXMuYXBwcm92YWxzKGtleSkudmFsdWUuYXBwcm92YWxBbW91bnQ7CiAgICBmcmFtZV9kaWcgMAogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIGV4dHJhY3QgMCAzMiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHN3YXAKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl9hcHByb3ZlKG93bmVyOiBieXRlcywgc3BlbmRlcjogYnl0ZXMsIGFtb3VudDogYnl0ZXMpIC0+IGJ5dGVzOgpfYXBwcm92ZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMTkKICAgIC8vIHByaXZhdGUgX2FwcHJvdmUob3duZXI6IEFkZHJlc3MsIHNwZW5kZXI6IEFkZHJlc3MsIGFtb3VudDogVWludE4yNTYpOiBCb29sIHsKICAgIHByb3RvIDMgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyMAogICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fYXBwcm92YWxLZXkob3duZXIsIHNwZW5kZXIpOwogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgX2FwcHJvdmFsS2V5CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjIxLTIyNQogICAgLy8gY29uc3QgYXBwcm92YWxCb3g6IEFwcHJvdmFsU3RydWN0ID0gbmV3IEFwcHJvdmFsU3RydWN0KHsKICAgIC8vICAgYXBwcm92YWxBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgb3duZXI6IG93bmVyLAogICAgLy8gICBzcGVuZGVyOiBzcGVuZGVyLAogICAgLy8gfSk7CiAgICBmcmFtZV9kaWcgLTEKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjY0CiAgICAvLyBwdWJsaWMgYXBwcm92YWxzID0gQm94TWFwPFN0YXRpY0J5dGVzPDMyPiwgQXBwcm92YWxTdHJ1Y3Q+KHsga2V5UHJlZml4OiAnYScgfSk7CiAgICBwdXNoYnl0ZXMgImEiCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyNgogICAgLy8gdGhpcy5hcHByb3ZhbHMoa2V5KS52YWx1ZSA9IGFwcHJvdmFsQm94LmNvcHkoKTsKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjcKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9BcHByb3ZhbCh7IG93bmVyOiBvd25lciwgc3BlbmRlcjogc3BlbmRlciwgdmFsdWU6IGFtb3VudCB9KSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MTk2OWY4NjUgLy8gbWV0aG9kICJhcmMyMDBfQXBwcm92YWwoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjgKICAgIC8vIHJldHVybiBuZXcgQm9vbCh0cnVlKTsKICAgIGJ5dGVjXzMgLy8gMHg4MAogICAgcmV0c3ViCg==",
|
|
240
|
-
clear: "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg=="
|
|
241
|
-
},
|
|
242
|
-
byteCode: {
|
|
243
|
-
approval: "CiAEASAACCYGBBUffHUBYgF0AYAEeYPDXCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEbQQEZggoEl1OC4gRlfRPsBLauGiUEhOwT1QTsmWBBBILlc8QE2nAluQRKlo+PBLVCISUEu7MZ8zYaAI4KALAAoACQAIAAcABdAEcALgAYAAIkQzEZFEQxGEQ2GgE2GgKIAZMoTFCwIkMxGRREMRhENhoBNhoCiAFwKExQsCJDMRkURDEYRDYaATYaAjYaA4gBKShMULAiQzEZFEQxGEQ2GgE2GgKIAQYoTFCwIkMxGRREMRhENhoBiADqKExQsCJDMRkURDEYRIgA1ShMULAiQzEZFEQxGESIAL4oTFCwIkMxGRREMRhEiACfKExQsCJDMRkURDEYRIgAgChMULAiQzEZFEQxGEQ2GgE2GgI2GgM2GgSIABEoTFCwIkMxGUD/LzEYFEQiQ4oEATEAMgkSRIv8VwIAFUlEIw5Ei/1XAgAVSUQlDkQkKmVFARREgAFui/xngAFzi/1nKov/Z4ABZIv+ZzEAKUsBUIv/vzIDTFCL/1AnBExQsCuJJIABbmVEVwIASRUjEkSJJIABc2VEVwIASRUlEkSJJIABZGVEiSQqZUSJigEBi/+IAFSJigIBMQCL/ov/iABfiYoDATEAi/1LAYgAtEmL/6dEi/+hSRUjDkQjr6uL/U4CiADASIv9i/6L/4gAMYmKAgExAIv+i/+IAKmJigIBi/6L/4gAe4mKAQEpi/9QSb1FAUAABCcFTImLAL5ETImKAwGL/Yj/4EmL/oj/2kyL/6dEi/2L/hNBACeLAIv/oUkVIw5EI69MSwGrKYv9UEy/iwGL/6BJFSMORKspi/5QTL+L/Yv+UIv/UCcETFCwK4wAiYoCAYv+i/9QAUkVIxJEiYoCAYv+i/+I/+eAAWFMUEm9RQFAAAQnBUyJiwC+RFcAIEyJigMBi/2L/oj/xIv/i/1Qi/5QgAFhTwJQTL+L/Yv+UIv/UIAEGWn4ZUxQsCuJ",
|
|
244
|
-
clear: "CoEBQw=="
|
|
245
|
-
},
|
|
246
|
-
compilerInfo: { compiler: "puya", compilerVersion: { major: 4, minor: 7, patch: 0 } },
|
|
247
|
-
events: [
|
|
248
|
-
{
|
|
249
|
-
name: "arc200_Transfer",
|
|
250
|
-
args: [
|
|
251
|
-
{ type: "address", name: "from" },
|
|
252
|
-
{ type: "address", name: "to" },
|
|
253
|
-
{ type: "uint256", name: "value" }
|
|
254
|
-
]
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
name: "arc200_Approval",
|
|
258
|
-
args: [
|
|
259
|
-
{ type: "address", name: "owner" },
|
|
260
|
-
{ type: "address", name: "spender" },
|
|
261
|
-
{ type: "uint256", name: "value" }
|
|
262
|
-
]
|
|
263
|
-
}
|
|
264
|
-
],
|
|
265
|
-
templateVariables: {}
|
|
266
|
-
};
|
|
6
|
+
import { AppFactory as _AppFactory } from "@algorandfoundation/algokit-utils/types/app-factory";
|
|
7
|
+
var APP_SPEC = { "name": "Arc200", "structs": { "ApprovalStruct": [{ "name": "approvalAmount", "type": "uint256" }, { "name": "owner", "type": "address" }, { "name": "spender", "type": "address" }] }, "methods": [{ "name": "bootstrap", "args": [{ "type": "byte[]", "name": "name" }, { "type": "byte[]", "name": "symbol" }, { "type": "uint8", "name": "decimals" }, { "type": "uint256", "name": "totalSupply" }], "returns": { "type": "bool" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [{ "name": "arc200_Transfer", "args": [{ "type": "address", "name": "from" }, { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" }] }], "recommendations": {} }, { "name": "arc200_name", "args": [], "returns": { "type": "byte[32]", "desc": "The name of the token" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the name of the token", "events": [], "recommendations": {} }, { "name": "arc200_symbol", "args": [], "returns": { "type": "byte[8]", "desc": "The symbol of the token" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the symbol of the token", "events": [], "recommendations": {} }, { "name": "arc200_decimals", "args": [], "returns": { "type": "uint8", "desc": "The decimals of the token" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the decimals of the token", "events": [], "recommendations": {} }, { "name": "arc200_totalSupply", "args": [], "returns": { "type": "uint256", "desc": "The total supply of the token" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the total supply of the token", "events": [], "recommendations": {} }, { "name": "arc200_balanceOf", "args": [{ "type": "address", "name": "owner", "desc": "The address of the owner of the token" }], "returns": { "type": "uint256", "desc": "The current balance of the holder of the token" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the current balance of the owner of the token", "events": [], "recommendations": {} }, { "name": "arc200_transfer", "args": [{ "type": "address", "name": "to", "desc": "The destination of the transfer" }, { "type": "uint256", "name": "value", "desc": "Amount of tokens to transfer" }], "returns": { "type": "bool", "desc": "Success" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "desc": "Transfers tokens", "events": [{ "name": "arc200_Transfer", "args": [{ "type": "address", "name": "from" }, { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" }] }], "recommendations": {} }, { "name": "arc200_transferFrom", "args": [{ "type": "address", "name": "from", "desc": "The source of the transfer" }, { "type": "address", "name": "to", "desc": "The destination of the transfer" }, { "type": "uint256", "name": "value", "desc": "Amount of tokens to transfer" }], "returns": { "type": "bool", "desc": "Success" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "desc": "Transfers tokens from source to destination as approved spender", "events": [{ "name": "arc200_Approval", "args": [{ "type": "address", "name": "owner" }, { "type": "address", "name": "spender" }, { "type": "uint256", "name": "value" }] }, { "name": "arc200_Transfer", "args": [{ "type": "address", "name": "from" }, { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" }] }], "recommendations": {} }, { "name": "arc200_approve", "args": [{ "type": "address", "name": "spender", "desc": "Who is allowed to take tokens on owner's behalf" }, { "type": "uint256", "name": "value", "desc": "Amount of tokens to be taken by spender" }], "returns": { "type": "bool", "desc": "Success" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "desc": "Approve spender for a token", "events": [{ "name": "arc200_Approval", "args": [{ "type": "address", "name": "owner" }, { "type": "address", "name": "spender" }, { "type": "uint256", "name": "value" }] }], "recommendations": {} }, { "name": "arc200_allowance", "args": [{ "type": "address", "name": "owner", "desc": "Owner's account" }, { "type": "address", "name": "spender", "desc": "Who is allowed to take tokens on owner's behalf" }], "returns": { "type": "uint256", "desc": "The remaining allowance" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": true, "desc": "Returns the current allowance of the spender of the tokens of the owner", "events": [], "recommendations": {} }], "arcs": [22, 28], "desc": "Smart Contract Token Base Interface", "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 4 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "name": { "keyType": "AVMString", "valueType": "byte[]", "key": "bg==", "desc": "Name of the asset. Max 32 bytes" }, "symbol": { "keyType": "AVMString", "valueType": "byte[]", "key": "cw==", "desc": "Symbol of the asset. Max 8 bytes" }, "decimals": { "keyType": "AVMString", "valueType": "uint8", "key": "ZA==", "desc": "Decimals of the asset. Recommended is 6 decimal places." }, "totalSupply": { "keyType": "AVMString", "valueType": "uint256", "key": "dA==", "desc": "Minted supply" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "balances": { "keyType": "address", "valueType": "uint256", "prefix": "Yg==" }, "approvals": { "keyType": "byte[32]", "valueType": "ApprovalStruct", "prefix": "YQ==" } } } }, "bareActions": { "create": ["NoOp"], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [{ "pc": [534, 650], "errorMessage": "Box must have value" }, { "pc": [555], "errorMessage": "Insufficient balance at the sender account" }, { "pc": [213], "errorMessage": "Name of the asset must be longer or equal to 1 character" }, { "pc": [216], "errorMessage": "Name of the asset must be shorter or equal to 32 characters" }, { "pc": [66], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [155], "errorMessage": "OnCompletion must be NoOp && can only call when creating" }, { "pc": [205], "errorMessage": "Only deployer of this smart contract can call bootstrap method" }, { "pc": [224], "errorMessage": "Symbol of the asset must be longer or equal to 1 character" }, { "pc": [228], "errorMessage": "Symbol of the asset must be shorter or equal to 8 characters" }, { "pc": [235], "errorMessage": "This method can be called only once" }, { "pc": [289, 309, 330, 340], "errorMessage": "check GlobalState exists" }, { "pc": [430], "errorMessage": "insufficient approval" }, { "pc": [163, 176], "errorMessage": "invalid array length header" }, { "pc": [170, 183], "errorMessage": "invalid number of bytes for arc4.dynamic_array<arc4.uint8>" }, { "pc": [354, 371, 400, 408, 466, 495, 503], "errorMessage": "invalid number of bytes for arc4.static_array<arc4.uint8, 32>" }, { "pc": [199, 379, 416, 474], "errorMessage": "invalid number of bytes for arc4.uint256" }, { "pc": [191], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [297, 318], "errorMessage": "invalid size" }, { "pc": [438, 573, 595], "errorMessage": "overflow" }], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMzIgMSAwIDIKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiYiIgInQiICJuIiAweDc5ODNjMzVjIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjM4CiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDE3CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydAogICAgcHVzaGJ5dGVzcyAweDk3NTM4MmUyIDB4NjU3ZDEzZWMgMHhiNmFlMWEyNSAweDg0ZWMxM2Q1IDB4ZWM5OTYwNDEgMHg4MmU1NzNjNCAweGRhNzAyNWI5IDB4NGE5NjhmOGYgMHhiNTQyMjEyNSAweGJiYjMxOWYzIC8vIG1ldGhvZCAiYm9vdHN0cmFwKGJ5dGVbXSxieXRlW10sdWludDgsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfbmFtZSgpYnl0ZVszMl0iLCBtZXRob2QgImFyYzIwMF9zeW1ib2woKWJ5dGVbOF0iLCBtZXRob2QgImFyYzIwMF9kZWNpbWFscygpdWludDgiLCBtZXRob2QgImFyYzIwMF90b3RhbFN1cHBseSgpdWludDI1NiIsIG1ldGhvZCAiYXJjMjAwX2JhbGFuY2VPZihhZGRyZXNzKXVpbnQyNTYiLCBtZXRob2QgImFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfYXBwcm92ZShhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX2FsbG93YW5jZShhZGRyZXNzLGFkZHJlc3MpdWludDI1NiIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGJvb3RzdHJhcCBhcmMyMDBfbmFtZSBhcmMyMDBfc3ltYm9sIGFyYzIwMF9kZWNpbWFscyBhcmMyMDBfdG90YWxTdXBwbHkgYXJjMjAwX2JhbGFuY2VPZiBhcmMyMDBfdHJhbnNmZXIgYXJjMjAwX3RyYW5zZmVyRnJvbSBhcmMyMDBfYXBwcm92ZSBhcmMyMDBfYWxsb3dhbmNlCiAgICBlcnIKCm1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDE3OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjM4CiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcCAmJiBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5ib290c3RyYXBbcm91dGluZ10oKSAtPiB2b2lkOgpib290c3RyYXA6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDgKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDI1NgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjY1CiAgICAvLyBhc3NlcnQoVHhuLnNlbmRlciA9PT0gR2xvYmFsLmNyZWF0b3JBZGRyZXNzLCAnT25seSBkZXBsb3llciBvZiB0aGlzIHNtYXJ0IGNvbnRyYWN0IGNhbiBjYWxsIGJvb3RzdHJhcCBtZXRob2QnKQogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgZGVwbG95ZXIgb2YgdGhpcyBzbWFydCBjb250cmFjdCBjYW4gY2FsbCBib290c3RyYXAgbWV0aG9kCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjYKICAgIC8vIGFzc2VydChuYW1lLm5hdGl2ZS5sZW5ndGggPiAwLCAnTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXInKQogICAgZGlnIDMKICAgIGV4dHJhY3QgMiAwCiAgICBsZW4KICAgIGR1cAogICAgYXNzZXJ0IC8vIE5hbWUgb2YgdGhlIGFzc2V0IG11c3QgYmUgbG9uZ2VyIG9yIGVxdWFsIHRvIDEgY2hhcmFjdGVyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjcKICAgIC8vIGFzc2VydChuYW1lLm5hdGl2ZS5sZW5ndGggPD0gMzIsICdOYW1lIG9mIHRoZSBhc3NldCBtdXN0IGJlIHNob3J0ZXIgb3IgZXF1YWwgdG8gMzIgY2hhcmFjdGVycycpCiAgICBpbnRjXzAgLy8gMzIKICAgIDw9CiAgICBhc3NlcnQgLy8gTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBzaG9ydGVyIG9yIGVxdWFsIHRvIDMyIGNoYXJhY3RlcnMKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2OAogICAgLy8gYXNzZXJ0KHN5bWJvbC5uYXRpdmUubGVuZ3RoID4gMCwgJ1N5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXInKQogICAgZGlnIDIKICAgIGV4dHJhY3QgMiAwCiAgICBsZW4KICAgIGR1cAogICAgYXNzZXJ0IC8vIFN5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2OQogICAgLy8gYXNzZXJ0KHN5bWJvbC5uYXRpdmUubGVuZ3RoIDw9IDgsICdTeW1ib2wgb2YgdGhlIGFzc2V0IG11c3QgYmUgc2hvcnRlciBvciBlcXVhbCB0byA4IGNoYXJhY3RlcnMnKQogICAgcHVzaGludCA4IC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gU3ltYm9sIG9mIHRoZSBhc3NldCBtdXN0IGJlIHNob3J0ZXIgb3IgZXF1YWwgdG8gOCBjaGFyYWN0ZXJzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzAKICAgIC8vIGFzc2VydCghdGhpcy50b3RhbFN1cHBseS5oYXNWYWx1ZSwgJ1RoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb25seSBvbmNlJykKICAgIGludGNfMiAvLyAwCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTcKICAgIC8vIHB1YmxpYyB0b3RhbFN1cHBseSA9IEdsb2JhbFN0YXRlPFVpbnQyNTY+KHsga2V5OiAndCcgfSkKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzAKICAgIC8vIGFzc2VydCghdGhpcy50b3RhbFN1cHBseS5oYXNWYWx1ZSwgJ1RoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb25seSBvbmNlJykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9ubHkgb25jZQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQyCiAgICAvLyBwdWJsaWMgbmFtZSA9IEdsb2JhbFN0YXRlPER5bmFtaWNCeXRlcz4oeyBrZXk6ICduJyB9KQogICAgYnl0ZWNfMyAvLyAibiIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3MgogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gbmFtZQogICAgdW5jb3ZlciA0CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQ3CiAgICAvLyBwdWJsaWMgc3ltYm9sID0gR2xvYmFsU3RhdGU8RHluYW1pY0J5dGVzPih7IGtleTogJ3MnIH0pCiAgICBwdXNoYnl0ZXMgInMiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzMKICAgIC8vIHRoaXMuc3ltYm9sLnZhbHVlID0gc3ltYm9sCiAgICB1bmNvdmVyIDMKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTcKICAgIC8vIHB1YmxpYyB0b3RhbFN1cHBseSA9IEdsb2JhbFN0YXRlPFVpbnQyNTY+KHsga2V5OiAndCcgfSkKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzQKICAgIC8vIHRoaXMudG90YWxTdXBwbHkudmFsdWUgPSB0b3RhbFN1cHBseQogICAgZGlnIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIHB1YmxpYyBkZWNpbWFscyA9IEdsb2JhbFN0YXRlPFVpbnQ4Pih7IGtleTogJ2QnIH0pCiAgICBwdXNoYnl0ZXMgImQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzUKICAgIC8vIHRoaXMuZGVjaW1hbHMudmFsdWUgPSBkZWNpbWFscwogICAgdW5jb3ZlciAyCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjc2CiAgICAvLyBjb25zdCBzZW5kZXIgPSBuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKQogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjU5CiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludDI1Nj4oeyBrZXlQcmVmaXg6ICdiJyB9KQogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3OAogICAgLy8gdGhpcy5iYWxhbmNlcyhzZW5kZXIpLnZhbHVlID0gdG90YWxTdXBwbHkKICAgIGRpZyAyCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODAKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9UcmFuc2Zlcih7IGZyb206IG5ldyBBZGRyZXNzKEdsb2JhbC56ZXJvQWRkcmVzcyksIHRvOiBzZW5kZXIsIHZhbHVlOiB0b3RhbFN1cHBseSB9KSkKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgc3dhcAogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJhcmMyMDBfVHJhbnNmZXIoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1ODAKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF9uYW1lW3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX25hbWU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OTEKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8MzI+KHRoaXMubmFtZS52YWx1ZS5uYXRpdmUpCiAgICBpbnRjXzIgLy8gMAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjQyCiAgICAvLyBwdWJsaWMgbmFtZSA9IEdsb2JhbFN0YXRlPER5bmFtaWNCeXRlcz4oeyBrZXk6ICduJyB9KQogICAgYnl0ZWNfMyAvLyAibiIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo5MQogICAgLy8gcmV0dXJuIG5ldyBTdGF0aWNCeXRlczwzMj4odGhpcy5uYW1lLnZhbHVlLm5hdGl2ZSkKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHNpemUKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo4OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfc3ltYm9sW3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX3N5bWJvbDoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMDEKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8OD4odGhpcy5zeW1ib2wudmFsdWUubmF0aXZlKQogICAgaW50Y18yIC8vIDAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo0NwogICAgLy8gcHVibGljIHN5bWJvbCA9IEdsb2JhbFN0YXRlPER5bmFtaWNCeXRlcz4oeyBrZXk6ICdzJyB9KQogICAgcHVzaGJ5dGVzICJzIgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjEwMQogICAgLy8gcmV0dXJuIG5ldyBTdGF0aWNCeXRlczw4Pih0aGlzLnN5bWJvbC52YWx1ZS5uYXRpdmUpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDggLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHNpemUKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfZGVjaW1hbHNbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfZGVjaW1hbHM6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTExCiAgICAvLyByZXR1cm4gdGhpcy5kZWNpbWFscy52YWx1ZQogICAgaW50Y18yIC8vIDAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1MgogICAgLy8gcHVibGljIGRlY2ltYWxzID0gR2xvYmFsU3RhdGU8VWludDg+KHsga2V5OiAnZCcgfSkKICAgIHB1c2hieXRlcyAiZCIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMTEKICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxzLnZhbHVlCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjEwOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfdG90YWxTdXBwbHlbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfdG90YWxTdXBwbHk6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTIxCiAgICAvLyByZXR1cm4gdGhpcy50b3RhbFN1cHBseS52YWx1ZQogICAgaW50Y18yIC8vIDAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1NwogICAgLy8gcHVibGljIHRvdGFsU3VwcGx5ID0gR2xvYmFsU3RhdGU8VWludDI1Nj4oeyBrZXk6ICd0JyB9KQogICAgYnl0ZWNfMiAvLyAidCIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMjEKICAgIC8vIHJldHVybiB0aGlzLnRvdGFsU3VwcGx5LnZhbHVlCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjExOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfYmFsYW5jZU9mW3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX2JhbGFuY2VPZjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzIKICAgIC8vIHJldHVybiB0aGlzLl9iYWxhbmNlT2Yob3duZXIpCiAgICBjYWxsc3ViIF9iYWxhbmNlT2YKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX3RyYW5zZmVyW3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX3RyYW5zZmVyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE0MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50MjU2CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTQ0CiAgICAvLyByZXR1cm4gdGhpcy5fdHJhbnNmZXIobmV3IEFkZHJlc3MoVHhuLnNlbmRlciksIHRvLCB2YWx1ZSkKICAgIHR4biBTZW5kZXIKICAgIGNvdmVyIDIKICAgIGNhbGxzdWIgX3RyYW5zZmVyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTQyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF90cmFuc2ZlckZyb21bcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfdHJhbnNmZXJGcm9tOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE1NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQyNTYKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNTcKICAgIC8vIGNvbnN0IHNwZW5kZXIgPSBuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKQogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE1OAogICAgLy8gY29uc3Qgc3BlbmRlcl9hbGxvd2FuY2UgPSB0aGlzLl9hbGxvd2FuY2UoZnJvbSwgc3BlbmRlcikKICAgIGRpZyAzCiAgICBkaWcgMQogICAgY2FsbHN1YiBfYWxsb3dhbmNlCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTU5CiAgICAvLyBhc3NlcnQoc3BlbmRlcl9hbGxvd2FuY2UuYXNCaWdVaW50KCkgPj0gdmFsdWUuYXNCaWdVaW50KCksICdpbnN1ZmZpY2llbnQgYXBwcm92YWwnKQogICAgZHVwCiAgICBkaWcgMwogICAgYj49CiAgICBhc3NlcnQgLy8gaW5zdWZmaWNpZW50IGFwcHJvdmFsCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTYwCiAgICAvLyBjb25zdCBuZXdfc3BlbmRlcl9hbGxvd2FuY2UgPSBuZXcgVWludDI1NihzcGVuZGVyX2FsbG93YW5jZS5hc0JpZ1VpbnQoKSAtIHZhbHVlLmFzQmlnVWludCgpKQogICAgZGlnIDIKICAgIGItCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBpbnRjXzAgLy8gMzIKICAgIGJ6ZXJvCiAgICBifAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE2MQogICAgLy8gdGhpcy5fYXBwcm92ZShmcm9tLCBzcGVuZGVyLCBuZXdfc3BlbmRlcl9hbGxvd2FuY2UpCiAgICBkaWcgNAogICAgY292ZXIgMgogICAgY2FsbHN1YiBfYXBwcm92ZQogICAgcG9wCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTYyCiAgICAvLyByZXR1cm4gdGhpcy5fdHJhbnNmZXIoZnJvbSwgdG8sIHZhbHVlKQogICAgY2FsbHN1YiBfdHJhbnNmZXIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX2FwcHJvdmVbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfYXBwcm92ZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDI1NgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE3NAogICAgLy8gY29uc3Qgb3duZXIgPSBuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKQogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE3NQogICAgLy8gcmV0dXJuIHRoaXMuX2FwcHJvdmUob3duZXIsIHNwZW5kZXIsIHZhbHVlKQogICAgY292ZXIgMgogICAgY2FsbHN1YiBfYXBwcm92ZQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE3MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfYWxsb3dhbmNlW3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX2FsbG93YW5jZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxODUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4NwogICAgLy8gcmV0dXJuIHRoaXMuX2FsbG93YW5jZShvd25lciwgc3BlbmRlcikKICAgIGNhbGxzdWIgX2FsbG93YW5jZQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5fYmFsYW5jZU9mKG93bmVyOiBieXRlcykgLT4gYnl0ZXM6Cl9iYWxhbmNlT2Y6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTkwCiAgICAvLyBwcml2YXRlIF9iYWxhbmNlT2Yob3duZXI6IEFkZHJlc3MpOiBVaW50MjU2IHsKICAgIHByb3RvIDEgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjU5CiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludDI1Nj4oeyBrZXlQcmVmaXg6ICdiJyB9KQogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBkdXAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTEKICAgIC8vIGlmICghdGhpcy5iYWxhbmNlcyhvd25lcikuZXhpc3RzKSByZXR1cm4gbmV3IFVpbnQyNTYoMCkKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYm56IF9iYWxhbmNlT2ZfYWZ0ZXJfaWZfZWxzZUAyCiAgICBieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgc3dhcAogICAgcmV0c3ViCgpfYmFsYW5jZU9mX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTIKICAgIC8vIHJldHVybiB0aGlzLmJhbGFuY2VzKG93bmVyKS52YWx1ZQogICAgZnJhbWVfZGlnIDAKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBzd2FwCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5fdHJhbnNmZXIoc2VuZGVyOiBieXRlcywgcmVjaXBpZW50OiBieXRlcywgYW1vdW50OiBieXRlcykgLT4gYnl0ZXM6Cl90cmFuc2ZlcjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTUKICAgIC8vIHByaXZhdGUgX3RyYW5zZmVyKHNlbmRlcjogQWRkcmVzcywgcmVjaXBpZW50OiBBZGRyZXNzLCBhbW91bnQ6IFVpbnQyNTYpOiBCb29sIHsKICAgIHByb3RvIDMgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NgogICAgLy8gY29uc3Qgc2VuZGVyX2JhbGFuY2UgPSB0aGlzLl9iYWxhbmNlT2Yoc2VuZGVyKQogICAgZnJhbWVfZGlnIC0zCiAgICBjYWxsc3ViIF9iYWxhbmNlT2YKICAgIGR1cAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NwogICAgLy8gY29uc3QgcmVjaXBpZW50X2JhbGFuY2UgPSB0aGlzLl9iYWxhbmNlT2YocmVjaXBpZW50KQogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIF9iYWxhbmNlT2YKICAgIHN3YXAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTgKICAgIC8vIGFzc2VydChzZW5kZXJfYmFsYW5jZS5hc0JpZ1VpbnQoKSA+PSBhbW91bnQuYXNCaWdVaW50KCksICdJbnN1ZmZpY2llbnQgYmFsYW5jZSBhdCB0aGUgc2VuZGVyIGFjY291bnQnKQogICAgZnJhbWVfZGlnIC0xCiAgICBiPj0KICAgIGFzc2VydCAvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZSBhdCB0aGUgc2VuZGVyIGFjY291bnQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDAKICAgIC8vIGlmIChzZW5kZXIgIT09IHJlY2lwaWVudCkgewogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgICE9CiAgICBieiBfdHJhbnNmZXJfYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjAyCiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSBuZXcgVWludDI1NihzZW5kZXJfYmFsYW5jZS5hc0JpZ1VpbnQoKSAtIGFtb3VudC5hc0JpZ1VpbnQoKSkKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgLTEKICAgIGItCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBpbnRjXzAgLy8gMzIKICAgIGJ6ZXJvCiAgICBzd2FwCiAgICBkaWcgMQogICAgYnwKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1OQogICAgLy8gcHVibGljIGJhbGFuY2VzID0gQm94TWFwPEFkZHJlc3MsIFVpbnQyNTY+KHsga2V5UHJlZml4OiAnYicgfSkKICAgIGJ5dGVjXzEgLy8gImIiCiAgICBmcmFtZV9kaWcgLTMKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwMgogICAgLy8gdGhpcy5iYWxhbmNlcyhzZW5kZXIpLnZhbHVlID0gbmV3IFVpbnQyNTYoc2VuZGVyX2JhbGFuY2UuYXNCaWdVaW50KCkgLSBhbW91bnQuYXNCaWdVaW50KCkpCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjAzCiAgICAvLyB0aGlzLmJhbGFuY2VzKHJlY2lwaWVudCkudmFsdWUgPSBuZXcgVWludDI1NihyZWNpcGllbnRfYmFsYW5jZS5hc0JpZ1VpbnQoKSArIGFtb3VudC5hc0JpZ1VpbnQoKSkKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgLTEKICAgIGIrCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBifAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjU5CiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludDI1Nj4oeyBrZXlQcmVmaXg6ICdiJyB9KQogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjAzCiAgICAvLyB0aGlzLmJhbGFuY2VzKHJlY2lwaWVudCkudmFsdWUgPSBuZXcgVWludDI1NihyZWNpcGllbnRfYmFsYW5jZS5hc0JpZ1VpbnQoKSArIGFtb3VudC5hc0JpZ1VpbnQoKSkKICAgIHN3YXAKICAgIGJveF9wdXQKCl90cmFuc2Zlcl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjA1CiAgICAvLyBlbWl0KG5ldyBhcmMyMDBfVHJhbnNmZXIoeyBmcm9tOiBzZW5kZXIsIHRvOiByZWNpcGllbnQsIHZhbHVlOiBhbW91bnQgfSkpCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyBtZXRob2QgImFyYzIwMF9UcmFuc2ZlcihhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwNgogICAgLy8gcmV0dXJuIG5ldyBCb29sKHRydWUpCiAgICBwdXNoYnl0ZXMgMHg4MAogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5fYWxsb3dhbmNlKG93bmVyOiBieXRlcywgc3BlbmRlcjogYnl0ZXMpIC0+IGJ5dGVzOgpfYWxsb3dhbmNlOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIxMwogICAgLy8gcHJpdmF0ZSBfYWxsb3dhbmNlKG93bmVyOiBBZGRyZXNzLCBzcGVuZGVyOiBBZGRyZXNzKTogVWludDI1NiB7CiAgICBwcm90byAyIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMTAKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8MzI+KG9wLnNoYTI1NihvcC5jb25jYXQob3duZXIuYnl0ZXMsIHNwZW5kZXIuYnl0ZXMpKSkKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIHNoYTI1NgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYxCiAgICAvLyBwdWJsaWMgYXBwcm92YWxzID0gQm94TWFwPFN0YXRpY0J5dGVzPDMyPiwgQXBwcm92YWxTdHJ1Y3Q+KHsga2V5UHJlZml4OiAnYScgfSkKICAgIHB1c2hieXRlcyAiYSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjE1CiAgICAvLyBpZiAoIXRoaXMuYXBwcm92YWxzKGtleSkuZXhpc3RzKSByZXR1cm4gbmV3IFVpbnQyNTYoMCkKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYm56IF9hbGxvd2FuY2VfYWZ0ZXJfaWZfZWxzZUAyCiAgICBieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgc3dhcAogICAgcmV0c3ViCgpfYWxsb3dhbmNlX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMTYKICAgIC8vIHJldHVybiB0aGlzLmFwcHJvdmFscyhrZXkpLnZhbHVlLmFwcHJvdmFsQW1vdW50CiAgICBmcmFtZV9kaWcgMAogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIGV4dHJhY3QgMCAzMgogICAgc3dhcAogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuX2FwcHJvdmUob3duZXI6IGJ5dGVzLCBzcGVuZGVyOiBieXRlcywgYW1vdW50OiBieXRlcykgLT4gYnl0ZXM6Cl9hcHByb3ZlOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIxOQogICAgLy8gcHJpdmF0ZSBfYXBwcm92ZShvd25lcjogQWRkcmVzcywgc3BlbmRlcjogQWRkcmVzcywgYW1vdW50OiBVaW50MjU2KTogQm9vbCB7CiAgICBwcm90byAzIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMTAKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8MzI+KG9wLnNoYTI1NihvcC5jb25jYXQob3duZXIuYnl0ZXMsIHNwZW5kZXIuYnl0ZXMpKSkKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIGR1cAogICAgc2hhMjU2CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjIxLTIyNQogICAgLy8gY29uc3QgYXBwcm92YWxCb3g6IEFwcHJvdmFsU3RydWN0ID0gbmV3IEFwcHJvdmFsU3RydWN0KHsKICAgIC8vICAgYXBwcm92YWxBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgb3duZXI6IG93bmVyLAogICAgLy8gICBzcGVuZGVyOiBzcGVuZGVyLAogICAgLy8gfSkKICAgIGZyYW1lX2RpZyAtMQogICAgZnJhbWVfZGlnIC0zCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjEKICAgIC8vIHB1YmxpYyBhcHByb3ZhbHMgPSBCb3hNYXA8U3RhdGljQnl0ZXM8MzI+LCBBcHByb3ZhbFN0cnVjdD4oeyBrZXlQcmVmaXg6ICdhJyB9KQogICAgcHVzaGJ5dGVzICJhIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjYKICAgIC8vIHRoaXMuYXBwcm92YWxzKGtleSkudmFsdWUgPSBjbG9uZShhcHByb3ZhbEJveCkKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjcKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9BcHByb3ZhbCh7IG93bmVyOiBvd25lciwgc3BlbmRlcjogc3BlbmRlciwgdmFsdWU6IGFtb3VudCB9KSkKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHgxOTY5Zjg2NSAvLyBtZXRob2QgImFyYzIwMF9BcHByb3ZhbChhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyOAogICAgLy8gcmV0dXJuIG5ldyBCb29sKHRydWUpCiAgICBwdXNoYnl0ZXMgMHg4MAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEIAEAAiYGBBUffHUBYgF0AW4EeYPDXCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEbQQBVMRkURDEYRIIKBJdTguIEZX0T7AS2rholBITsE9UE7JlgQQSC5XPEBNpwJbkESpaPjwS1QiElBLuzGfM2GgCOCgALAIsAnQCyAL4AyADZAPYBOAFVADEZFDEYFBBEI0M2GgFJJFklCEsBFRJENhoCSSRZJQhLARUSRDYaA0kVIxJENhoESRUiEkQxADIJEkRLA1cCABVJRCIOREsCVwIAFUlEgQgORCQqZUUBFEQrTwRngAFzTwNnKksBZ4ABZE8CZzEAKUsBUEsCvzIDTFBMUCcETFCwgAUVH3x1gLAjQyQrZURXAgBJFSISRChMULAjQySAAXNlRFcCAEkVgQgSRChMULAjQySAAWRlRChMULAjQyQqZUQoTFCwI0M2GgFJFSISRIgAmyhMULAjQzYaAUkVIhJENhoCSRUiEkQxAE4CiACWKExQsCNDNhoBSRUiEkQ2GgJJFSISRDYaA0kVIhJEMQBLA0sBiADESUsDp0RLAqFJFSIORCKvq0sETgKIAM9IiABUKExQsCNDNhoBSRUiEkQ2GgJJFSISRDEATgKIAK4oTFCwI0M2GgFJFSISRDYaAkkVIhJEiABzKExQsCNDigEBKYv/UEm9RQFAAAQnBUyJiwC+REyJigMBi/2I/+BJi/6I/9pMi/+nRIv9i/4TQQAniwCL/6FJFSIORCKvTEsBqymL/VBMv4sBi/+gSRUiDkSrKYv+UEy/i/2L/lCL/1AnBExQsIABgIwAiYoCAYv+i/9QAYABYUxQSb1FAUAABCcFTImLAL5EVwAgTImKAwGL/Yv+UEkBi/+L/VCL/lCAAWFPAlBMv4v/UIAEGWn4ZUxQsIABgIk=", "clear": "C4EBQw==" }, "events": [{ "name": "arc200_Transfer", "args": [{ "type": "address", "name": "from" }, { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" }] }, { "name": "arc200_Approval", "args": [{ "type": "address", "name": "owner" }, { "type": "address", "name": "spender" }, { "type": "uint256", "name": "value" }] }], "templateVariables": {} };
|
|
267
8
|
var Arc200ParamsFactory = class {
|
|
268
9
|
/**
|
|
269
10
|
* Constructs a no op call for the bootstrap(byte[],byte[],uint8,uint256)bool ABI method
|
|
@@ -558,7 +299,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
558
299
|
},
|
|
559
300
|
/**
|
|
560
301
|
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
561
|
-
*
|
|
302
|
+
*
|
|
562
303
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
563
304
|
*
|
|
564
305
|
* Returns the name of the token
|
|
@@ -571,7 +312,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
571
312
|
},
|
|
572
313
|
/**
|
|
573
314
|
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
574
|
-
*
|
|
315
|
+
*
|
|
575
316
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
576
317
|
*
|
|
577
318
|
* Returns the symbol of the token
|
|
@@ -584,7 +325,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
584
325
|
},
|
|
585
326
|
/**
|
|
586
327
|
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
587
|
-
*
|
|
328
|
+
*
|
|
588
329
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
589
330
|
*
|
|
590
331
|
* Returns the decimals of the token
|
|
@@ -597,7 +338,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
597
338
|
},
|
|
598
339
|
/**
|
|
599
340
|
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
600
|
-
*
|
|
341
|
+
*
|
|
601
342
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
602
343
|
*
|
|
603
344
|
* Returns the total supply of the token
|
|
@@ -610,7 +351,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
610
351
|
},
|
|
611
352
|
/**
|
|
612
353
|
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
613
|
-
*
|
|
354
|
+
*
|
|
614
355
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
615
356
|
*
|
|
616
357
|
* Returns the current balance of the owner of the token
|
|
@@ -656,7 +397,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
656
397
|
},
|
|
657
398
|
/**
|
|
658
399
|
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
659
|
-
*
|
|
400
|
+
*
|
|
660
401
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
661
402
|
*
|
|
662
403
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
@@ -692,7 +433,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
692
433
|
},
|
|
693
434
|
/**
|
|
694
435
|
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
695
|
-
*
|
|
436
|
+
*
|
|
696
437
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
697
438
|
*
|
|
698
439
|
* Returns the name of the token
|
|
@@ -705,7 +446,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
705
446
|
},
|
|
706
447
|
/**
|
|
707
448
|
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
708
|
-
*
|
|
449
|
+
*
|
|
709
450
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
710
451
|
*
|
|
711
452
|
* Returns the symbol of the token
|
|
@@ -718,7 +459,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
718
459
|
},
|
|
719
460
|
/**
|
|
720
461
|
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
721
|
-
*
|
|
462
|
+
*
|
|
722
463
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
723
464
|
*
|
|
724
465
|
* Returns the decimals of the token
|
|
@@ -731,7 +472,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
731
472
|
},
|
|
732
473
|
/**
|
|
733
474
|
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
734
|
-
*
|
|
475
|
+
*
|
|
735
476
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
736
477
|
*
|
|
737
478
|
* Returns the total supply of the token
|
|
@@ -744,7 +485,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
744
485
|
},
|
|
745
486
|
/**
|
|
746
487
|
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
747
|
-
*
|
|
488
|
+
*
|
|
748
489
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
749
490
|
*
|
|
750
491
|
* Returns the current balance of the owner of the token
|
|
@@ -790,7 +531,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
790
531
|
},
|
|
791
532
|
/**
|
|
792
533
|
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
793
|
-
*
|
|
534
|
+
*
|
|
794
535
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
795
536
|
*
|
|
796
537
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
@@ -823,14 +564,11 @@ var Arc200Client = class _Arc200Client {
|
|
|
823
564
|
*/
|
|
824
565
|
bootstrap: async (params) => {
|
|
825
566
|
const result = await this.appClient.send.call(Arc200ParamsFactory.bootstrap(params));
|
|
826
|
-
return {
|
|
827
|
-
...result,
|
|
828
|
-
return: result.return
|
|
829
|
-
};
|
|
567
|
+
return { ...result, return: result.return };
|
|
830
568
|
},
|
|
831
569
|
/**
|
|
832
570
|
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
833
|
-
*
|
|
571
|
+
*
|
|
834
572
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
835
573
|
*
|
|
836
574
|
* Returns the name of the token
|
|
@@ -844,7 +582,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
844
582
|
},
|
|
845
583
|
/**
|
|
846
584
|
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
847
|
-
*
|
|
585
|
+
*
|
|
848
586
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
849
587
|
*
|
|
850
588
|
* Returns the symbol of the token
|
|
@@ -858,7 +596,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
858
596
|
},
|
|
859
597
|
/**
|
|
860
598
|
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
861
|
-
*
|
|
599
|
+
*
|
|
862
600
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
863
601
|
*
|
|
864
602
|
* Returns the decimals of the token
|
|
@@ -872,7 +610,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
872
610
|
},
|
|
873
611
|
/**
|
|
874
612
|
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
875
|
-
*
|
|
613
|
+
*
|
|
876
614
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
877
615
|
*
|
|
878
616
|
* Returns the total supply of the token
|
|
@@ -882,14 +620,11 @@ var Arc200Client = class _Arc200Client {
|
|
|
882
620
|
*/
|
|
883
621
|
arc200TotalSupply: async (params = { args: [] }) => {
|
|
884
622
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200TotalSupply(params));
|
|
885
|
-
return {
|
|
886
|
-
...result,
|
|
887
|
-
return: result.return
|
|
888
|
-
};
|
|
623
|
+
return { ...result, return: result.return };
|
|
889
624
|
},
|
|
890
625
|
/**
|
|
891
626
|
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
892
|
-
*
|
|
627
|
+
*
|
|
893
628
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
894
629
|
*
|
|
895
630
|
* Returns the current balance of the owner of the token
|
|
@@ -899,10 +634,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
899
634
|
*/
|
|
900
635
|
arc200BalanceOf: async (params) => {
|
|
901
636
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200BalanceOf(params));
|
|
902
|
-
return {
|
|
903
|
-
...result,
|
|
904
|
-
return: result.return
|
|
905
|
-
};
|
|
637
|
+
return { ...result, return: result.return };
|
|
906
638
|
},
|
|
907
639
|
/**
|
|
908
640
|
* Makes a call to the Arc200 smart contract using the `arc200_transfer(address,uint256)bool` ABI method.
|
|
@@ -914,10 +646,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
914
646
|
*/
|
|
915
647
|
arc200Transfer: async (params) => {
|
|
916
648
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Transfer(params));
|
|
917
|
-
return {
|
|
918
|
-
...result,
|
|
919
|
-
return: result.return
|
|
920
|
-
};
|
|
649
|
+
return { ...result, return: result.return };
|
|
921
650
|
},
|
|
922
651
|
/**
|
|
923
652
|
* Makes a call to the Arc200 smart contract using the `arc200_transferFrom(address,address,uint256)bool` ABI method.
|
|
@@ -929,10 +658,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
929
658
|
*/
|
|
930
659
|
arc200TransferFrom: async (params) => {
|
|
931
660
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200TransferFrom(params));
|
|
932
|
-
return {
|
|
933
|
-
...result,
|
|
934
|
-
return: result.return
|
|
935
|
-
};
|
|
661
|
+
return { ...result, return: result.return };
|
|
936
662
|
},
|
|
937
663
|
/**
|
|
938
664
|
* Makes a call to the Arc200 smart contract using the `arc200_approve(address,uint256)bool` ABI method.
|
|
@@ -944,14 +670,11 @@ var Arc200Client = class _Arc200Client {
|
|
|
944
670
|
*/
|
|
945
671
|
arc200Approve: async (params) => {
|
|
946
672
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Approve(params));
|
|
947
|
-
return {
|
|
948
|
-
...result,
|
|
949
|
-
return: result.return
|
|
950
|
-
};
|
|
673
|
+
return { ...result, return: result.return };
|
|
951
674
|
},
|
|
952
675
|
/**
|
|
953
676
|
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
954
|
-
*
|
|
677
|
+
*
|
|
955
678
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
956
679
|
*
|
|
957
680
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
@@ -961,10 +684,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
961
684
|
*/
|
|
962
685
|
arc200Allowance: async (params) => {
|
|
963
686
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Allowance(params));
|
|
964
|
-
return {
|
|
965
|
-
...result,
|
|
966
|
-
return: result.return
|
|
967
|
-
};
|
|
687
|
+
return { ...result, return: result.return };
|
|
968
688
|
}
|
|
969
689
|
};
|
|
970
690
|
/**
|
|
@@ -1069,11 +789,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1069
789
|
* @returns The typed return value or undefined if there was no value
|
|
1070
790
|
*/
|
|
1071
791
|
decodeReturnValue(method, returnValue) {
|
|
1072
|
-
return returnValue !== void 0 ? getArc56ReturnValue(
|
|
1073
|
-
returnValue,
|
|
1074
|
-
this.appClient.getABIMethod(method),
|
|
1075
|
-
APP_SPEC.structs
|
|
1076
|
-
) : void 0;
|
|
792
|
+
return returnValue !== void 0 ? getArc56ReturnValue(returnValue, this.appClient.getABIMethod(method), APP_SPEC.structs) : void 0;
|
|
1077
793
|
}
|
|
1078
794
|
/**
|
|
1079
795
|
* Returns a new `Arc200Client` client, resolving the app by creator address and name
|
|
@@ -1124,7 +840,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1124
840
|
}
|
|
1125
841
|
/**
|
|
1126
842
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
1127
|
-
*
|
|
843
|
+
*
|
|
1128
844
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1129
845
|
*
|
|
1130
846
|
* Returns the name of the token
|
|
@@ -1132,15 +848,13 @@ var Arc200Client = class _Arc200Client {
|
|
|
1132
848
|
* @param params The params for the smart contract call
|
|
1133
849
|
* @returns The call result: The name of the token
|
|
1134
850
|
*/
|
|
1135
|
-
async arc200Name(params = {
|
|
1136
|
-
args: []
|
|
1137
|
-
}) {
|
|
851
|
+
async arc200Name(params = { args: [] }) {
|
|
1138
852
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Name(params));
|
|
1139
853
|
return result.return;
|
|
1140
854
|
}
|
|
1141
855
|
/**
|
|
1142
856
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
1143
|
-
*
|
|
857
|
+
*
|
|
1144
858
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1145
859
|
*
|
|
1146
860
|
* Returns the symbol of the token
|
|
@@ -1148,15 +862,13 @@ var Arc200Client = class _Arc200Client {
|
|
|
1148
862
|
* @param params The params for the smart contract call
|
|
1149
863
|
* @returns The call result: The symbol of the token
|
|
1150
864
|
*/
|
|
1151
|
-
async arc200Symbol(params = {
|
|
1152
|
-
args: []
|
|
1153
|
-
}) {
|
|
865
|
+
async arc200Symbol(params = { args: [] }) {
|
|
1154
866
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Symbol(params));
|
|
1155
867
|
return result.return;
|
|
1156
868
|
}
|
|
1157
869
|
/**
|
|
1158
870
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
1159
|
-
*
|
|
871
|
+
*
|
|
1160
872
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1161
873
|
*
|
|
1162
874
|
* Returns the decimals of the token
|
|
@@ -1164,15 +876,13 @@ var Arc200Client = class _Arc200Client {
|
|
|
1164
876
|
* @param params The params for the smart contract call
|
|
1165
877
|
* @returns The call result: The decimals of the token
|
|
1166
878
|
*/
|
|
1167
|
-
async arc200Decimals(params = {
|
|
1168
|
-
args: []
|
|
1169
|
-
}) {
|
|
879
|
+
async arc200Decimals(params = { args: [] }) {
|
|
1170
880
|
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Decimals(params));
|
|
1171
881
|
return result.return;
|
|
1172
882
|
}
|
|
1173
883
|
/**
|
|
1174
884
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
1175
|
-
*
|
|
885
|
+
*
|
|
1176
886
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1177
887
|
*
|
|
1178
888
|
* Returns the total supply of the token
|
|
@@ -1186,7 +896,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1186
896
|
}
|
|
1187
897
|
/**
|
|
1188
898
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
1189
|
-
*
|
|
899
|
+
*
|
|
1190
900
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1191
901
|
*
|
|
1192
902
|
* Returns the current balance of the owner of the token
|
|
@@ -1200,7 +910,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1200
910
|
}
|
|
1201
911
|
/**
|
|
1202
912
|
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
1203
|
-
*
|
|
913
|
+
*
|
|
1204
914
|
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1205
915
|
*
|
|
1206
916
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
@@ -1222,9 +932,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1222
932
|
* Add a bootstrap(byte[],byte[],uint8,uint256)bool method call against the Arc200 contract
|
|
1223
933
|
*/
|
|
1224
934
|
bootstrap(params) {
|
|
1225
|
-
promiseChain = promiseChain.then(
|
|
1226
|
-
async () => composer.addAppCallMethodCall(await client.params.bootstrap(params))
|
|
1227
|
-
);
|
|
935
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.bootstrap(params)));
|
|
1228
936
|
resultMappers.push((v) => client.decodeReturnValue("bootstrap(byte[],byte[],uint8,uint256)bool", v));
|
|
1229
937
|
return this;
|
|
1230
938
|
},
|
|
@@ -1232,9 +940,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1232
940
|
* Add a arc200_name()byte[32] method call against the Arc200 contract
|
|
1233
941
|
*/
|
|
1234
942
|
arc200Name(params) {
|
|
1235
|
-
promiseChain = promiseChain.then(
|
|
1236
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Name(params))
|
|
1237
|
-
);
|
|
943
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Name(params)));
|
|
1238
944
|
resultMappers.push((v) => client.decodeReturnValue("arc200_name()byte[32]", v));
|
|
1239
945
|
return this;
|
|
1240
946
|
},
|
|
@@ -1242,9 +948,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1242
948
|
* Add a arc200_symbol()byte[8] method call against the Arc200 contract
|
|
1243
949
|
*/
|
|
1244
950
|
arc200Symbol(params) {
|
|
1245
|
-
promiseChain = promiseChain.then(
|
|
1246
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Symbol(params))
|
|
1247
|
-
);
|
|
951
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Symbol(params)));
|
|
1248
952
|
resultMappers.push((v) => client.decodeReturnValue("arc200_symbol()byte[8]", v));
|
|
1249
953
|
return this;
|
|
1250
954
|
},
|
|
@@ -1252,9 +956,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1252
956
|
* Add a arc200_decimals()uint8 method call against the Arc200 contract
|
|
1253
957
|
*/
|
|
1254
958
|
arc200Decimals(params) {
|
|
1255
|
-
promiseChain = promiseChain.then(
|
|
1256
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Decimals(params))
|
|
1257
|
-
);
|
|
959
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Decimals(params)));
|
|
1258
960
|
resultMappers.push((v) => client.decodeReturnValue("arc200_decimals()uint8", v));
|
|
1259
961
|
return this;
|
|
1260
962
|
},
|
|
@@ -1262,9 +964,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1262
964
|
* Add a arc200_totalSupply()uint256 method call against the Arc200 contract
|
|
1263
965
|
*/
|
|
1264
966
|
arc200TotalSupply(params) {
|
|
1265
|
-
promiseChain = promiseChain.then(
|
|
1266
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200TotalSupply(params))
|
|
1267
|
-
);
|
|
967
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200TotalSupply(params)));
|
|
1268
968
|
resultMappers.push((v) => client.decodeReturnValue("arc200_totalSupply()uint256", v));
|
|
1269
969
|
return this;
|
|
1270
970
|
},
|
|
@@ -1272,9 +972,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1272
972
|
* Add a arc200_balanceOf(address)uint256 method call against the Arc200 contract
|
|
1273
973
|
*/
|
|
1274
974
|
arc200BalanceOf(params) {
|
|
1275
|
-
promiseChain = promiseChain.then(
|
|
1276
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200BalanceOf(params))
|
|
1277
|
-
);
|
|
975
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200BalanceOf(params)));
|
|
1278
976
|
resultMappers.push((v) => client.decodeReturnValue("arc200_balanceOf(address)uint256", v));
|
|
1279
977
|
return this;
|
|
1280
978
|
},
|
|
@@ -1282,9 +980,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1282
980
|
* Add a arc200_transfer(address,uint256)bool method call against the Arc200 contract
|
|
1283
981
|
*/
|
|
1284
982
|
arc200Transfer(params) {
|
|
1285
|
-
promiseChain = promiseChain.then(
|
|
1286
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Transfer(params))
|
|
1287
|
-
);
|
|
983
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Transfer(params)));
|
|
1288
984
|
resultMappers.push((v) => client.decodeReturnValue("arc200_transfer(address,uint256)bool", v));
|
|
1289
985
|
return this;
|
|
1290
986
|
},
|
|
@@ -1292,9 +988,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1292
988
|
* Add a arc200_transferFrom(address,address,uint256)bool method call against the Arc200 contract
|
|
1293
989
|
*/
|
|
1294
990
|
arc200TransferFrom(params) {
|
|
1295
|
-
promiseChain = promiseChain.then(
|
|
1296
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200TransferFrom(params))
|
|
1297
|
-
);
|
|
991
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200TransferFrom(params)));
|
|
1298
992
|
resultMappers.push((v) => client.decodeReturnValue("arc200_transferFrom(address,address,uint256)bool", v));
|
|
1299
993
|
return this;
|
|
1300
994
|
},
|
|
@@ -1302,9 +996,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1302
996
|
* Add a arc200_approve(address,uint256)bool method call against the Arc200 contract
|
|
1303
997
|
*/
|
|
1304
998
|
arc200Approve(params) {
|
|
1305
|
-
promiseChain = promiseChain.then(
|
|
1306
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Approve(params))
|
|
1307
|
-
);
|
|
999
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Approve(params)));
|
|
1308
1000
|
resultMappers.push((v) => client.decodeReturnValue("arc200_approve(address,uint256)bool", v));
|
|
1309
1001
|
return this;
|
|
1310
1002
|
},
|
|
@@ -1312,9 +1004,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1312
1004
|
* Add a arc200_allowance(address,address)uint256 method call against the Arc200 contract
|
|
1313
1005
|
*/
|
|
1314
1006
|
arc200Allowance(params) {
|
|
1315
|
-
promiseChain = promiseChain.then(
|
|
1316
|
-
async () => composer.addAppCallMethodCall(await client.params.arc200Allowance(params))
|
|
1317
|
-
);
|
|
1007
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.arc200Allowance(params)));
|
|
1318
1008
|
resultMappers.push((v) => client.decodeReturnValue("arc200_allowance(address,address)uint256", v));
|
|
1319
1009
|
return this;
|
|
1320
1010
|
},
|
|
@@ -1338,9 +1028,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1338
1028
|
const result = await (!options ? composer.simulate() : composer.simulate(options));
|
|
1339
1029
|
return {
|
|
1340
1030
|
...result,
|
|
1341
|
-
returns: result.returns?.map(
|
|
1342
|
-
(val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue
|
|
1343
|
-
)
|
|
1031
|
+
returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue)
|
|
1344
1032
|
};
|
|
1345
1033
|
},
|
|
1346
1034
|
async send(params) {
|
|
@@ -1348,9 +1036,7 @@ var Arc200Client = class _Arc200Client {
|
|
|
1348
1036
|
const result = await composer.send(params);
|
|
1349
1037
|
return {
|
|
1350
1038
|
...result,
|
|
1351
|
-
returns: result.returns?.map(
|
|
1352
|
-
(val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue
|
|
1353
|
-
)
|
|
1039
|
+
returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue)
|
|
1354
1040
|
};
|
|
1355
1041
|
}
|
|
1356
1042
|
};
|