arc200-client 1.0.1 → 1.0.2
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 +1141 -423
- package/dist/index.d.ts +1141 -423
- package/dist/index.js +1145 -481
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1147 -468
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -13
package/dist/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,318 +15,318 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
19
|
|
|
30
20
|
// src/index.ts
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
33
|
-
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
Arc200Client: () => Arc200Client,
|
|
24
|
+
Arc200Factory: () => Arc200Factory,
|
|
25
|
+
getArc200Client: () => getArc200Client
|
|
34
26
|
});
|
|
35
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
36
28
|
|
|
37
|
-
// contracts/
|
|
38
|
-
var
|
|
39
|
-
var
|
|
29
|
+
// contracts/artifacts/Arc200Client.ts
|
|
30
|
+
var import_app_arc56 = require("@algorandfoundation/algokit-utils/types/app-arc56");
|
|
31
|
+
var import_app_client = require("@algorandfoundation/algokit-utils/types/app-client");
|
|
32
|
+
var import_app_factory = require("@algorandfoundation/algokit-utils/types/app-factory");
|
|
40
33
|
var APP_SPEC = {
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
34
|
+
name: "Arc200",
|
|
35
|
+
structs: {
|
|
36
|
+
ApprovalStruct: [
|
|
37
|
+
{ name: "approvalAmount", type: "uint256" },
|
|
38
|
+
{ name: "owner", type: "address" },
|
|
39
|
+
{ name: "spender", type: "address" }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
methods: [
|
|
43
|
+
{
|
|
44
|
+
name: "bootstrap",
|
|
45
|
+
args: [
|
|
46
|
+
{ type: "byte[]", name: "name" },
|
|
47
|
+
{ type: "byte[]", name: "symbol" },
|
|
48
|
+
{ type: "uint8", name: "decimals" },
|
|
49
|
+
{ type: "uint256", name: "totalSupply" }
|
|
50
|
+
],
|
|
51
|
+
returns: { type: "bool" },
|
|
52
|
+
actions: { create: [], call: ["NoOp"] },
|
|
53
|
+
readonly: false,
|
|
54
|
+
events: [
|
|
55
|
+
{
|
|
56
|
+
name: "arc200_Transfer",
|
|
57
|
+
args: [
|
|
58
|
+
{ type: "address", name: "from" },
|
|
59
|
+
{ type: "address", name: "to" },
|
|
60
|
+
{ type: "uint256", name: "value" }
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
recommendations: {}
|
|
46
65
|
},
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
}
|
|
66
|
+
{
|
|
67
|
+
name: "arc200_name",
|
|
68
|
+
args: [],
|
|
69
|
+
returns: { type: "byte[32]", desc: "The name of the token" },
|
|
70
|
+
actions: { create: [], call: ["NoOp"] },
|
|
71
|
+
readonly: true,
|
|
72
|
+
desc: "Returns the name of the token",
|
|
73
|
+
events: [],
|
|
74
|
+
recommendations: {}
|
|
51
75
|
},
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
}
|
|
76
|
+
{
|
|
77
|
+
name: "arc200_symbol",
|
|
78
|
+
args: [],
|
|
79
|
+
returns: { type: "byte[8]", desc: "The symbol of the token" },
|
|
80
|
+
actions: { create: [], call: ["NoOp"] },
|
|
81
|
+
readonly: true,
|
|
82
|
+
desc: "Returns the symbol of the token",
|
|
83
|
+
events: [],
|
|
84
|
+
recommendations: {}
|
|
56
85
|
},
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
}
|
|
86
|
+
{
|
|
87
|
+
name: "arc200_decimals",
|
|
88
|
+
args: [],
|
|
89
|
+
returns: { type: "uint8", desc: "The decimals of the token" },
|
|
90
|
+
actions: { create: [], call: ["NoOp"] },
|
|
91
|
+
readonly: true,
|
|
92
|
+
desc: "Returns the decimals of the token",
|
|
93
|
+
events: [],
|
|
94
|
+
recommendations: {}
|
|
61
95
|
},
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
}
|
|
96
|
+
{
|
|
97
|
+
name: "arc200_totalSupply",
|
|
98
|
+
args: [],
|
|
99
|
+
returns: { type: "uint256", desc: "The total supply of the token" },
|
|
100
|
+
actions: { create: [], call: ["NoOp"] },
|
|
101
|
+
readonly: true,
|
|
102
|
+
desc: "Returns the total supply of the token",
|
|
103
|
+
events: [],
|
|
104
|
+
recommendations: {}
|
|
66
105
|
},
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
}
|
|
106
|
+
{
|
|
107
|
+
name: "arc200_balanceOf",
|
|
108
|
+
args: [{ type: "address", name: "owner", desc: "The address of the owner of the token" }],
|
|
109
|
+
returns: { type: "uint256", desc: "The current balance of the holder of the token" },
|
|
110
|
+
actions: { create: [], call: ["NoOp"] },
|
|
111
|
+
readonly: true,
|
|
112
|
+
desc: "Returns the current balance of the owner of the token",
|
|
113
|
+
events: [],
|
|
114
|
+
recommendations: {}
|
|
71
115
|
},
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
116
|
+
{
|
|
117
|
+
name: "arc200_transfer",
|
|
118
|
+
args: [
|
|
119
|
+
{ type: "address", name: "to", desc: "The destination of the transfer" },
|
|
120
|
+
{ type: "uint256", name: "value", desc: "Amount of tokens to transfer" }
|
|
121
|
+
],
|
|
122
|
+
returns: { type: "bool", desc: "Success" },
|
|
123
|
+
actions: { create: [], call: ["NoOp"] },
|
|
124
|
+
readonly: false,
|
|
125
|
+
desc: "Transfers tokens",
|
|
126
|
+
events: [
|
|
127
|
+
{
|
|
128
|
+
name: "arc200_Transfer",
|
|
129
|
+
args: [
|
|
130
|
+
{ type: "address", name: "from" },
|
|
131
|
+
{ type: "address", name: "to" },
|
|
132
|
+
{ type: "uint256", name: "value" }
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
recommendations: {}
|
|
76
137
|
},
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
138
|
+
{
|
|
139
|
+
name: "arc200_transferFrom",
|
|
140
|
+
args: [
|
|
141
|
+
{ type: "address", name: "from", desc: "The source of the transfer" },
|
|
142
|
+
{ type: "address", name: "to", desc: "The destination of the transfer" },
|
|
143
|
+
{ type: "uint256", name: "value", desc: "Amount of tokens to transfer" }
|
|
144
|
+
],
|
|
145
|
+
returns: { type: "bool", desc: "Success" },
|
|
146
|
+
actions: { create: [], call: ["NoOp"] },
|
|
147
|
+
readonly: false,
|
|
148
|
+
desc: "Transfers tokens from source to destination as approved spender",
|
|
149
|
+
events: [
|
|
150
|
+
{
|
|
151
|
+
name: "arc200_Approval",
|
|
152
|
+
args: [
|
|
153
|
+
{ type: "address", name: "owner" },
|
|
154
|
+
{ type: "address", name: "spender" },
|
|
155
|
+
{ type: "uint256", name: "value" }
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: "arc200_Transfer",
|
|
160
|
+
args: [
|
|
161
|
+
{ type: "address", name: "from" },
|
|
162
|
+
{ type: "address", name: "to" },
|
|
163
|
+
{ type: "uint256", name: "value" }
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
recommendations: {}
|
|
81
168
|
},
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
|
|
169
|
+
{
|
|
170
|
+
name: "arc200_approve",
|
|
171
|
+
args: [
|
|
172
|
+
{ type: "address", name: "spender", desc: "Who is allowed to take tokens on owner's behalf" },
|
|
173
|
+
{ type: "uint256", name: "value", desc: "Amount of tokens to be taken by spender" }
|
|
174
|
+
],
|
|
175
|
+
returns: { type: "bool", desc: "Success" },
|
|
176
|
+
actions: { create: [], call: ["NoOp"] },
|
|
177
|
+
readonly: false,
|
|
178
|
+
desc: "Approve spender for a token",
|
|
179
|
+
events: [
|
|
180
|
+
{
|
|
181
|
+
name: "arc200_Approval",
|
|
182
|
+
args: [
|
|
183
|
+
{ type: "address", name: "owner" },
|
|
184
|
+
{ type: "address", name: "spender" },
|
|
185
|
+
{ type: "uint256", name: "value" }
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
recommendations: {}
|
|
86
190
|
},
|
|
87
|
-
|
|
88
|
-
"
|
|
89
|
-
|
|
90
|
-
|
|
191
|
+
{
|
|
192
|
+
name: "arc200_allowance",
|
|
193
|
+
args: [
|
|
194
|
+
{ type: "address", name: "owner", desc: "Owner's account" },
|
|
195
|
+
{ type: "address", name: "spender", desc: "Who is allowed to take tokens on owner's behalf" }
|
|
196
|
+
],
|
|
197
|
+
returns: { type: "uint256", desc: "The remaining allowance" },
|
|
198
|
+
actions: { create: [], call: ["NoOp"] },
|
|
199
|
+
readonly: true,
|
|
200
|
+
desc: "Returns the current allowance of the spender of the tokens of the owner",
|
|
201
|
+
events: [],
|
|
202
|
+
recommendations: {}
|
|
91
203
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
204
|
+
],
|
|
205
|
+
arcs: [22, 28],
|
|
206
|
+
desc: "Smart Contract Token Base Interface",
|
|
207
|
+
networks: {},
|
|
208
|
+
state: {
|
|
209
|
+
schema: { global: { ints: 0, bytes: 4 }, local: { ints: 0, bytes: 0 } },
|
|
210
|
+
keys: {
|
|
211
|
+
global: {
|
|
212
|
+
name: { keyType: "AVMString", valueType: "byte[]", key: "bg==", desc: "Name of the asset. Max 32 bytes" },
|
|
213
|
+
symbol: { keyType: "AVMString", valueType: "byte[]", key: "cw==", desc: "Symbol of the asset. Max 8 bytes" },
|
|
214
|
+
decimals: {
|
|
215
|
+
keyType: "AVMString",
|
|
216
|
+
valueType: "uint8",
|
|
217
|
+
key: "ZA==",
|
|
218
|
+
desc: "Decimals of the asset. Recommended is 6 decimal places."
|
|
219
|
+
},
|
|
220
|
+
totalSupply: { keyType: "AVMString", valueType: "uint256", key: "dA==", desc: "Minted supply" }
|
|
221
|
+
},
|
|
222
|
+
local: {},
|
|
223
|
+
box: {}
|
|
104
224
|
},
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
225
|
+
maps: {
|
|
226
|
+
global: {},
|
|
227
|
+
local: {},
|
|
228
|
+
box: {
|
|
229
|
+
balances: { keyType: "address", valueType: "uint256", prefix: "Yg==" },
|
|
230
|
+
approvals: { keyType: "byte[32]", valueType: "ApprovalStruct", prefix: "YQ==" }
|
|
231
|
+
}
|
|
108
232
|
}
|
|
109
233
|
},
|
|
110
|
-
"
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
234
|
+
bareActions: { create: ["NoOp"], call: [] },
|
|
235
|
+
sourceInfo: {
|
|
236
|
+
approval: {
|
|
237
|
+
sourceInfo: [
|
|
238
|
+
{ pc: [589, 706], errorMessage: "Box must have value" },
|
|
239
|
+
{ pc: [707], errorMessage: "Index access is out of bounds" },
|
|
240
|
+
{ pc: [610], errorMessage: "Insufficient balance at the sender account" },
|
|
241
|
+
{ pc: [369], errorMessage: "Name of the asset must be longer or equal to 1 character" },
|
|
242
|
+
{ pc: [372], errorMessage: "Name of the asset must be shorter or equal to 32 characters" },
|
|
243
|
+
{ pc: [145, 167, 189, 214, 236, 255, 271, 287, 303, 319], errorMessage: "OnCompletion is not NoOp" },
|
|
244
|
+
{ pc: [363], errorMessage: "Only deployer of this smart contract can call bootstrap method" },
|
|
245
|
+
{ pc: [378], errorMessage: "Symbol of the asset must be longer or equal to 1 character" },
|
|
246
|
+
{ pc: [381], errorMessage: "Symbol of the asset must be shorter or equal to 8 characters" },
|
|
247
|
+
{ pc: [388], errorMessage: "This method can be called only once" },
|
|
248
|
+
{ pc: [352], errorMessage: "can only call when creating" },
|
|
249
|
+
{ pc: [148, 170, 192, 217, 239, 258, 274, 290, 306, 322], errorMessage: "can only call when not creating" },
|
|
250
|
+
{ pc: [439, 454, 469, 474], errorMessage: "check GlobalState exists" },
|
|
251
|
+
{ pc: [514], errorMessage: "insufficient approval" },
|
|
252
|
+
{ pc: [447, 462, 675], errorMessage: "invalid size" },
|
|
253
|
+
{ pc: [522, 628], errorMessage: "overflow" }
|
|
254
|
+
],
|
|
255
|
+
pcOffsetMethod: "none"
|
|
114
256
|
},
|
|
115
|
-
"
|
|
116
|
-
"num_byte_slices": 0,
|
|
117
|
-
"num_uints": 0
|
|
118
|
-
}
|
|
257
|
+
clear: { sourceInfo: [], pcOffsetMethod: "none" }
|
|
119
258
|
},
|
|
120
|
-
|
|
121
|
-
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjg0LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJZXJyCgovLyBhcmMyMDBfbmFtZSgpc3RyaW5nCiphYmlfcm91dGVfYXJjMjAwX25hbWU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYXJjMjAwX25hbWUoKXN0cmluZwoJY2FsbHN1YiBhcmMyMDBfbmFtZQoJZHVwCglsZW4KCWl0b2IKCWV4dHJhY3QgNiAyCglzd2FwCgljb25jYXQKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhcmMyMDBfbmFtZSgpOiBzdHJpbmdbMzJdCi8vCi8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHRva2VuCi8vCi8vIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0b2tlbgphcmMyMDBfbmFtZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0c1xhcmMyMDAuYWxnby50czoxNQoJLy8gcmV0dXJuICdBcmMyMDAnOwoJYnl0ZSAweDQxNzI2MzMyMzAzMCAvLyAiQXJjMjAwIgoJcmV0c3ViCgovLyBhcmMyMDBfc3ltYm9sKClzdHJpbmcKKmFiaV9yb3V0ZV9hcmMyMDBfc3ltYm9sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGFyYzIwMF9zeW1ib2woKXN0cmluZwoJY2FsbHN1YiBhcmMyMDBfc3ltYm9sCglkdXAKCWxlbgoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzIwMF9zeW1ib2woKTogc3RyaW5nWzhdCi8vCi8vIFJldHVybnMgdGhlIHN5bWJvbCBvZiB0aGUgdG9rZW4KLy8KLy8gQHJldHVybnMgVGhlIHN5bWJvbCBvZiB0aGUgdG9rZW4KYXJjMjAwX3N5bWJvbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0c1xhcmMyMDAuYWxnby50czoyNQoJLy8gcmV0dXJuICdBcmMyMDAnOwoJYnl0ZSAweDQxNzI2MzMyMzAzMCAvLyAiQXJjMjAwIgoJcmV0c3ViCgovLyBhcmMyMDBfZGVjaW1hbHMoKXVpbnQ4CiphYmlfcm91dGVfYXJjMjAwX2RlY2ltYWxzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGFyYzIwMF9kZWNpbWFscygpdWludDgKCWNhbGxzdWIgYXJjMjAwX2RlY2ltYWxzCglpdG9iCglkdXAKCWJpdGxlbgoJaW50IDgKCTw9Cglhc3NlcnQKCWV4dHJhY3QgNyAxCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjMjAwX2RlY2ltYWxzKCk6IHVpbnQ4Ci8vCi8vIFJldHVybnMgdGhlIGRlY2ltYWxzIG9mIHRoZSB0b2tlbgovLwovLyBAcmV0dXJucyBUaGUgZGVjaW1hbHMgb2YgdGhlIHRva2VuCmFyYzIwMF9kZWNpbWFsczoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0c1xhcmMyMDAuYWxnby50czozNQoJLy8gcmV0dXJuIDYgYXMgdWludDg7CglpbnQgNgoJcmV0c3ViCgovLyBhcmMyMDBfdG90YWxTdXBwbHkoKXVpbnQyNTYKKmFiaV9yb3V0ZV9hcmMyMDBfdG90YWxTdXBwbHk6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYXJjMjAwX3RvdGFsU3VwcGx5KCl1aW50MjU2CgljYWxsc3ViIGFyYzIwMF90b3RhbFN1cHBseQoJZHVwCgliaXRsZW4KCWludCAyNTYKCTw9Cglhc3NlcnQKCWJ5dGUgMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjMjAwX3RvdGFsU3VwcGx5KCk6IHVpbnQyNTYKLy8KLy8gUmV0dXJucyB0aGUgdG90YWwgc3VwcGx5IG9mIHRoZSB0b2tlbgovLwovLyBAcmV0dXJucyBUaGUgdG90YWwgc3VwcGx5IG9mIHRoZSB0b2tlbgphcmMyMDBfdG90YWxTdXBwbHk6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHNcYXJjMjAwLmFsZ28udHM6NDUKCS8vIHJldHVybiAxXzAwMF8wMDBfMDAwXzAwMF8wMDAgYXMgdWludDI1NjsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOGQ3ZWE0YzY4MDAwCglyZXRzdWIKCi8vIGFyYzIwMF9iYWxhbmNlT2YoYWRkcmVzcyl1aW50MjU2CiphYmlfcm91dGVfYXJjMjAwX2JhbGFuY2VPZjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gb3duZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzIwMF9iYWxhbmNlT2YoYWRkcmVzcyl1aW50MjU2CgljYWxsc3ViIGFyYzIwMF9iYWxhbmNlT2YKCWR1cAoJYml0bGVuCglpbnQgMjU2Cgk8PQoJYXNzZXJ0CglieXRlIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludCAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzIwMF9iYWxhbmNlT2Yob3duZXI6IEFkZHJlc3MpOiB1aW50MjU2Ci8vCi8vIFJldHVybnMgdGhlIGN1cnJlbnQgYmFsYW5jZSBvZiB0aGUgb3duZXIgb2YgdGhlIHRva2VuCi8vCi8vIEBwYXJhbSBvd25lciBUaGUgYWRkcmVzcyBvZiB0aGUgb3duZXIgb2YgdGhlIHRva2VuCi8vIEByZXR1cm5zIFRoZSBjdXJyZW50IGJhbGFuY2Ugb2YgdGhlIGhvbGRlciBvZiB0aGUgdG9rZW4KYXJjMjAwX2JhbGFuY2VPZjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0c1xhcmMyMDAuYWxnby50czo1NgoJLy8gcmV0dXJuIDAgYXMgdWludDI1NjsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglyZXRzdWIKCi8vIGFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbAoqYWJpX3JvdXRlX2FyYzIwMF90cmFuc2ZlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gdmFsdWU6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyB0bzogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYXJjMjAwX3RyYW5zZmVyKGFkZHJlc3MsdWludDI1Nilib29sCgljYWxsc3ViIGFyYzIwMF90cmFuc2ZlcgoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhcmMyMDBfdHJhbnNmZXIodG86IEFkZHJlc3MsIHZhbHVlOiB1aW50MjU2KTogYm9vbGVhbgovLwovLyBUcmFuc2ZlcnMgdG9rZW5zCi8vCi8vIEBwYXJhbSB0byBUaGUgZGVzdGluYXRpb24gb2YgdGhlIHRyYW5zZmVyCi8vIEBwYXJhbSB2YWx1ZSBBbW91bnQgb2YgdG9rZW5zIHRvIHRyYW5zZmVyCi8vIEByZXR1cm5zIFN1Y2Nlc3MKYXJjMjAwX3RyYW5zZmVyOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzXGFyYzIwMC5hbGdvLnRzOjY3CgkvLyByZXR1cm4gZmFsc2U7CglpbnQgMAoJcmV0c3ViCgovLyBhcmMyMDBfdHJhbnNmZXJGcm9tKGFkZHJlc3MsYWRkcmVzcyx1aW50MjU2KWJvb2wKKmFiaV9yb3V0ZV9hcmMyMDBfdHJhbnNmZXJGcm9tOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIHRvOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gZnJvbTogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sCgljYWxsc3ViIGFyYzIwMF90cmFuc2ZlckZyb20KCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjMjAwX3RyYW5zZmVyRnJvbShmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzcywgdmFsdWU6IHVpbnQyNTYpOiBib29sZWFuCi8vCi8vIFRyYW5zZmVycyB0b2tlbnMgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24gYXMgYXBwcm92ZWQgc3BlbmRlcgovLwovLyBAcGFyYW0gZnJvbSBUaGUgc291cmNlIG9mIHRoZSB0cmFuc2ZlcgovLyBAcGFyYW0gdG8gVGhlIGRlc3RpbmF0aW9uIG9mIHRoZSB0cmFuc2ZlcgovLyBAcGFyYW0gdmFsdWUgQW1vdW50IG9mIHRva2VucyB0byB0cmFuc2ZlcgovLyBAcmV0dXJucyBTdWNjZXNzCmFyYzIwMF90cmFuc2ZlckZyb206Cglwcm90byAzIDEKCgkvLyBjb250cmFjdHNcYXJjMjAwLmFsZ28udHM6NzkKCS8vIHJldHVybiBmYWxzZTsKCWludCAwCglyZXRzdWIKCi8vIGFyYzIwMF9hcHByb3ZlKGFkZHJlc3MsdWludDI1Nilib29sCiphYmlfcm91dGVfYXJjMjAwX2FwcHJvdmU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIHZhbHVlOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gc3BlbmRlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYXJjMjAwX2FwcHJvdmUoYWRkcmVzcyx1aW50MjU2KWJvb2wKCWNhbGxzdWIgYXJjMjAwX2FwcHJvdmUKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjMjAwX2FwcHJvdmUoc3BlbmRlcjogQWRkcmVzcywgdmFsdWU6IHVpbnQyNTYpOiBib29sZWFuCi8vCi8vIEFwcHJvdmUgc3BlbmRlciBmb3IgYSB0b2tlbgovLwovLyBAcGFyYW0gc3BlbmRlciBXaG8gaXMgYWxsb3dlZCB0byB0YWtlIHRva2VucyBvbiBvd25lcidzIGJlaGFsZgovLyBAcGFyYW0gdmFsdWUgQW1vdW50IG9mIHRva2VucyB0byBiZSB0YWtlbiBieSBzcGVuZGVyCi8vIEByZXR1cm5zIFN1Y2Nlc3MKYXJjMjAwX2FwcHJvdmU6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHNcYXJjMjAwLmFsZ28udHM6OTAKCS8vIHJldHVybiBmYWxzZTsKCWludCAwCglyZXRzdWIKCi8vIGFyYzIwMF9hbGxvd2FuY2UoYWRkcmVzcyxhZGRyZXNzKXVpbnQyNTYKKmFiaV9yb3V0ZV9hcmMyMDBfYWxsb3dhbmNlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBzcGVuZGVyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gb3duZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzIwMF9hbGxvd2FuY2UoYWRkcmVzcyxhZGRyZXNzKXVpbnQyNTYKCWNhbGxzdWIgYXJjMjAwX2FsbG93YW5jZQoJZHVwCgliaXRsZW4KCWludCAyNTYKCTw9Cglhc3NlcnQKCWJ5dGUgMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50IDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYXJjMjAwX2FsbG93YW5jZShvd25lcjogQWRkcmVzcywgc3BlbmRlcjogQWRkcmVzcyk6IHVpbnQyNTYKLy8KLy8gUmV0dXJucyB0aGUgY3VycmVudCBhbGxvd2FuY2Ugb2YgdGhlIHNwZW5kZXIgb2YgdGhlIHRva2VucyBvZiB0aGUgb3duZXIKLy8KLy8gQHBhcmFtIG93bmVyIE93bmVyJ3MgYWNjb3VudAovLyBAcGFyYW0gc3BlbmRlciBXaG8gaXMgYWxsb3dlZCB0byB0YWtlIHRva2VucyBvbiBvd25lcidzIGJlaGFsZgovLyBAcmV0dXJucyBUaGUgcmVtYWluaW5nIGFsbG93YW5jZQphcmMyMDBfYWxsb3dhbmNlOgoJcHJvdG8gMiAxCgoJLy8gY29udHJhY3RzXGFyYzIwMC5hbGdvLnRzOjEwMgoJLy8gcmV0dXJuIDAgYXMgdWludDI1NjsKCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnQgMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJhcmMyMDBfbmFtZSgpc3RyaW5nIgoJbWV0aG9kICJhcmMyMDBfc3ltYm9sKClzdHJpbmciCgltZXRob2QgImFyYzIwMF9kZWNpbWFscygpdWludDgiCgltZXRob2QgImFyYzIwMF90b3RhbFN1cHBseSgpdWludDI1NiIKCW1ldGhvZCAiYXJjMjAwX2JhbGFuY2VPZihhZGRyZXNzKXVpbnQyNTYiCgltZXRob2QgImFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbCIKCW1ldGhvZCAiYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sIgoJbWV0aG9kICJhcmMyMDBfYXBwcm92ZShhZGRyZXNzLHVpbnQyNTYpYm9vbCIKCW1ldGhvZCAiYXJjMjAwX2FsbG93YW5jZShhZGRyZXNzLGFkZHJlc3MpdWludDI1NiIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYXJjMjAwX25hbWUgKmFiaV9yb3V0ZV9hcmMyMDBfc3ltYm9sICphYmlfcm91dGVfYXJjMjAwX2RlY2ltYWxzICphYmlfcm91dGVfYXJjMjAwX3RvdGFsU3VwcGx5ICphYmlfcm91dGVfYXJjMjAwX2JhbGFuY2VPZiAqYWJpX3JvdXRlX2FyYzIwMF90cmFuc2ZlciAqYWJpX3JvdXRlX2FyYzIwMF90cmFuc2ZlckZyb20gKmFiaV9yb3V0ZV9hcmMyMDBfYXBwcm92ZSAqYWJpX3JvdXRlX2FyYzIwMF9hbGxvd2FuY2UKCWVycg==",
|
|
122
|
-
|
|
259
|
+
source: {
|
|
260
|
+
approval: "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDMyIDgKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiYiIgInQiIDB4ODAgMHg3OTgzYzM1YyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1MgogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfcm91dGluZ0AxNQogICAgcHVzaGJ5dGVzcyAweDk3NTM4MmUyIDB4NjU3ZDEzZWMgMHhiNmFlMWEyNSAweDg0ZWMxM2Q1IDB4ZWM5OTYwNDEgMHg4MmU1NzNjNCAweGRhNzAyNWI5IDB4NGE5NjhmOGYgMHhiNTQyMjEyNSAweGJiYjMxOWYzIC8vIG1ldGhvZCAiYm9vdHN0cmFwKGJ5dGVbXSxieXRlW10sdWludDgsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfbmFtZSgpYnl0ZVszMl0iLCBtZXRob2QgImFyYzIwMF9zeW1ib2woKWJ5dGVbOF0iLCBtZXRob2QgImFyYzIwMF9kZWNpbWFscygpdWludDgiLCBtZXRob2QgImFyYzIwMF90b3RhbFN1cHBseSgpdWludDI1NiIsIG1ldGhvZCAiYXJjMjAwX2JhbGFuY2VPZihhZGRyZXNzKXVpbnQyNTYiLCBtZXRob2QgImFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfYXBwcm92ZShhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX2FsbG93YW5jZShhZGRyZXNzLGFkZHJlc3MpdWludDI1NiIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fYm9vdHN0cmFwX3JvdXRlQDMgbWFpbl9hcmMyMDBfbmFtZV9yb3V0ZUA0IG1haW5fYXJjMjAwX3N5bWJvbF9yb3V0ZUA1IG1haW5fYXJjMjAwX2RlY2ltYWxzX3JvdXRlQDYgbWFpbl9hcmMyMDBfdG90YWxTdXBwbHlfcm91dGVANyBtYWluX2FyYzIwMF9iYWxhbmNlT2Zfcm91dGVAOCBtYWluX2FyYzIwMF90cmFuc2Zlcl9yb3V0ZUA5IG1haW5fYXJjMjAwX3RyYW5zZmVyRnJvbV9yb3V0ZUAxMCBtYWluX2FyYzIwMF9hcHByb3ZlX3JvdXRlQDExIG1haW5fYXJjMjAwX2FsbG93YW5jZV9yb3V0ZUAxMgoKbWFpbl9hZnRlcl9pZl9lbHNlQDE5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjUyCiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgaW50Y18xIC8vIDAKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfYWxsb3dhbmNlX3JvdXRlQDEyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjUyCiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGNhbGxzdWIgYXJjMjAwX2FsbG93YW5jZQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfYXBwcm92ZV9yb3V0ZUAxMToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxODIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1MgogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxODIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIGFyYzIwMF9hcHByb3ZlCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF90cmFuc2ZlckZyb21fcm91dGVAMTA6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTY1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTY1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiBhcmMyMDBfdHJhbnNmZXJGcm9tCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF90cmFuc2Zlcl9yb3V0ZUA5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjUyCiAgICAvLyBleHBvcnQgY2xhc3MgQXJjMjAwIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgYXJjMjAwX3RyYW5zZmVyCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF9iYWxhbmNlT2Zfcm91dGVAODoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNDAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1MgogICAgLy8gZXhwb3J0IGNsYXNzIEFyYzIwMCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNDAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICBjYWxsc3ViIGFyYzIwMF9iYWxhbmNlT2YKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fYXJjMjAwX3RvdGFsU3VwcGx5X3JvdXRlQDc6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIGFyYzIwMF90b3RhbFN1cHBseQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfZGVjaW1hbHNfcm91dGVANjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgYXJjMjAwX2RlY2ltYWxzCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2FyYzIwMF9zeW1ib2xfcm91dGVANToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgYXJjMjAwX3N5bWJvbAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9hcmMyMDBfbmFtZV9yb3V0ZUA0OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjk5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIGFyYzIwMF9uYW1lCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2Jvb3RzdHJhcF9yb3V0ZUAzOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjczCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIGJvb3RzdHJhcAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMTU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTIKICAgIC8vIGV4cG9ydCBjbGFzcyBBcmMyMDAgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDE5CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmJvb3RzdHJhcChuYW1lOiBieXRlcywgc3ltYm9sOiBieXRlcywgZGVjaW1hbHM6IGJ5dGVzLCB0b3RhbFN1cHBseTogYnl0ZXMpIC0+IGJ5dGVzOgpib290c3RyYXA6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzMtNzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgYm9vdHN0cmFwKG5hbWU6IER5bmFtaWNCeXRlcywgc3ltYm9sOiBEeW5hbWljQnl0ZXMsIGRlY2ltYWxzOiBVaW50TjgsIHRvdGFsU3VwcGx5OiBVaW50TjI1Nik6IEJvb2wgewogICAgcHJvdG8gNCAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzUKICAgIC8vIGFzc2VydChUeG4uc2VuZGVyID09PSBHbG9iYWwuY3JlYXRvckFkZHJlc3MsICdPbmx5IGRlcGxveWVyIG9mIHRoaXMgc21hcnQgY29udHJhY3QgY2FuIGNhbGwgYm9vdHN0cmFwIG1ldGhvZCcpOwogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgZGVwbG95ZXIgb2YgdGhpcyBzbWFydCBjb250cmFjdCBjYW4gY2FsbCBib290c3RyYXAgbWV0aG9kCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzYKICAgIC8vIGFzc2VydChuYW1lLmxlbmd0aCA+IDAsICdOYW1lIG9mIHRoZSBhc3NldCBtdXN0IGJlIGxvbmdlciBvciBlcXVhbCB0byAxIGNoYXJhY3RlcicpOwogICAgZnJhbWVfZGlnIC00CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgYXNzZXJ0IC8vIE5hbWUgb2YgdGhlIGFzc2V0IG11c3QgYmUgbG9uZ2VyIG9yIGVxdWFsIHRvIDEgY2hhcmFjdGVyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzcKICAgIC8vIGFzc2VydChuYW1lLmxlbmd0aCA8PSAzMiwgJ05hbWUgb2YgdGhlIGFzc2V0IG11c3QgYmUgc2hvcnRlciBvciBlcXVhbCB0byAzMiBjaGFyYWN0ZXJzJyk7CiAgICBpbnRjXzIgLy8gMzIKICAgIDw9CiAgICBhc3NlcnQgLy8gTmFtZSBvZiB0aGUgYXNzZXQgbXVzdCBiZSBzaG9ydGVyIG9yIGVxdWFsIHRvIDMyIGNoYXJhY3RlcnMKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3OAogICAgLy8gYXNzZXJ0KHN5bWJvbC5sZW5ndGggPiAwLCAnU3ltYm9sIG9mIHRoZSBhc3NldCBtdXN0IGJlIGxvbmdlciBvciBlcXVhbCB0byAxIGNoYXJhY3RlcicpOwogICAgZnJhbWVfZGlnIC0zCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgYXNzZXJ0IC8vIFN5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBsb25nZXIgb3IgZXF1YWwgdG8gMSBjaGFyYWN0ZXIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3OQogICAgLy8gYXNzZXJ0KHN5bWJvbC5sZW5ndGggPD0gOCwgJ1N5bWJvbCBvZiB0aGUgYXNzZXQgbXVzdCBiZSBzaG9ydGVyIG9yIGVxdWFsIHRvIDggY2hhcmFjdGVycycpOwogICAgaW50Y18zIC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gU3ltYm9sIG9mIHRoZSBhc3NldCBtdXN0IGJlIHNob3J0ZXIgb3IgZXF1YWwgdG8gOCBjaGFyYWN0ZXJzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjgKICAgIC8vIHB1YmxpYyB0b3RhbFN1cHBseSA9IEdsb2JhbFN0YXRlPFVpbnROMjU2Pih7IGtleTogJ3QnIH0pOwogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODAKICAgIC8vIGFzc2VydCghdGhpcy50b3RhbFN1cHBseS5oYXNWYWx1ZSwgJ1RoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb25seSBvbmNlJyk7CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBvbmx5IG9uY2UKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo1NgogICAgLy8gcHVibGljIG5hbWUgPSBHbG9iYWxTdGF0ZTxEeW5hbWljQnl0ZXM+KHsga2V5OiAnbicgfSk7CiAgICBwdXNoYnl0ZXMgIm4iCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODIKICAgIC8vIHRoaXMubmFtZS52YWx1ZSA9IG5hbWU7CiAgICBmcmFtZV9kaWcgLTQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjAKICAgIC8vIHB1YmxpYyBzeW1ib2wgPSBHbG9iYWxTdGF0ZTxEeW5hbWljQnl0ZXM+KHsga2V5OiAncycgfSk7CiAgICBwdXNoYnl0ZXMgInMiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODMKICAgIC8vIHRoaXMuc3ltYm9sLnZhbHVlID0gc3ltYm9sOwogICAgZnJhbWVfZGlnIC0zCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjY4CiAgICAvLyBwdWJsaWMgdG90YWxTdXBwbHkgPSBHbG9iYWxTdGF0ZTxVaW50TjI1Nj4oeyBrZXk6ICd0JyB9KTsKICAgIGJ5dGVjXzIgLy8gInQiCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODQKICAgIC8vIHRoaXMudG90YWxTdXBwbHkudmFsdWUgPSB0b3RhbFN1cHBseTsKICAgIGZyYW1lX2RpZyAtMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2NAogICAgLy8gcHVibGljIGRlY2ltYWxzID0gR2xvYmFsU3RhdGU8VWludE44Pih7IGtleTogJ2QnIH0pOwogICAgcHVzaGJ5dGVzICJkIgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjg1CiAgICAvLyB0aGlzLmRlY2ltYWxzLnZhbHVlID0gZGVjaW1hbHM7CiAgICBmcmFtZV9kaWcgLTIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6ODYKICAgIC8vIGNvbnN0IHNlbmRlciA9IG5ldyBBZGRyZXNzKFR4bi5zZW5kZXIpOwogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjcwCiAgICAvLyBwdWJsaWMgYmFsYW5jZXMgPSBCb3hNYXA8QWRkcmVzcywgVWludE4yNTY+KHsga2V5UHJlZml4OiAnYicgfSk7CiAgICBieXRlY18xIC8vICJiIgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjg4CiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSB0b3RhbFN1cHBseTsKICAgIGZyYW1lX2RpZyAtMQogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjkwCiAgICAvLyBlbWl0KG5ldyBhcmMyMDBfVHJhbnNmZXIoeyBmcm9tOiBuZXcgQWRkcmVzcyhHbG9iYWwuemVyb0FkZHJlc3MpLCB0bzogc2VuZGVyLCB2YWx1ZTogdG90YWxTdXBwbHkgfSkpOwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBieXRlYyA0IC8vIG1ldGhvZCAiYXJjMjAwX1RyYW5zZmVyKGFkZHJlc3MsYWRkcmVzcyx1aW50MjU2KSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OTEKICAgIC8vIHJldHVybiBuZXcgQm9vbCh0cnVlKTsKICAgIGJ5dGVjXzMgLy8gMHg4MAogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX25hbWUoKSAtPiBieXRlczoKYXJjMjAwX25hbWU6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NTYKICAgIC8vIHB1YmxpYyBuYW1lID0gR2xvYmFsU3RhdGU8RHluYW1pY0J5dGVzPih7IGtleTogJ24nIH0pOwogICAgaW50Y18xIC8vIDAKICAgIHB1c2hieXRlcyAibiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTAxCiAgICAvLyByZXR1cm4gbmV3IFN0YXRpY0J5dGVzPDMyPih0aGlzLm5hbWUudmFsdWUubmF0aXZlKTsKICAgIGV4dHJhY3QgMiAwCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgc2l6ZQogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX3N5bWJvbCgpIC0+IGJ5dGVzOgphcmMyMDBfc3ltYm9sOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjYwCiAgICAvLyBwdWJsaWMgc3ltYm9sID0gR2xvYmFsU3RhdGU8RHluYW1pY0J5dGVzPih7IGtleTogJ3MnIH0pOwogICAgaW50Y18xIC8vIDAKICAgIHB1c2hieXRlcyAicyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTExCiAgICAvLyByZXR1cm4gbmV3IFN0YXRpY0J5dGVzPDg+KHRoaXMuc3ltYm9sLnZhbHVlLm5hdGl2ZSk7CiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgc2l6ZQogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX2RlY2ltYWxzKCkgLT4gYnl0ZXM6CmFyYzIwMF9kZWNpbWFsczoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo2NAogICAgLy8gcHVibGljIGRlY2ltYWxzID0gR2xvYmFsU3RhdGU8VWludE44Pih7IGtleTogJ2QnIH0pOwogICAgaW50Y18xIC8vIDAKICAgIHB1c2hieXRlcyAiZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTIxCiAgICAvLyByZXR1cm4gdGhpcy5kZWNpbWFscy52YWx1ZTsKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF90b3RhbFN1cHBseSgpIC0+IGJ5dGVzOgphcmMyMDBfdG90YWxTdXBwbHk6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NjgKICAgIC8vIHB1YmxpYyB0b3RhbFN1cHBseSA9IEdsb2JhbFN0YXRlPFVpbnROMjU2Pih7IGtleTogJ3QnIH0pOwogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzIgLy8gInQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjEzMQogICAgLy8gcmV0dXJuIHRoaXMudG90YWxTdXBwbHkudmFsdWU7CiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5hcmMyMDBfYmFsYW5jZU9mKG93bmVyOiBieXRlcykgLT4gYnl0ZXM6CmFyYzIwMF9iYWxhbmNlT2Y6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTQwLTE0MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIC8vIHB1YmxpYyBhcmMyMDBfYmFsYW5jZU9mKG93bmVyOiBBZGRyZXNzKTogYXJjNC5VaW50TjI1NiB7CiAgICBwcm90byAxIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNDIKICAgIC8vIHJldHVybiB0aGlzLl9iYWxhbmNlT2Yob3duZXIpOwogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIF9iYWxhbmNlT2YKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF90cmFuc2Zlcih0bzogYnl0ZXMsIHZhbHVlOiBieXRlcykgLT4gYnl0ZXM6CmFyYzIwMF90cmFuc2ZlcjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNTItMTUzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gcHVibGljIGFyYzIwMF90cmFuc2Zlcih0bzogQWRkcmVzcywgdmFsdWU6IGFyYzQuVWludE4yNTYpOiBhcmM0LkJvb2wgewogICAgcHJvdG8gMiAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTU0CiAgICAvLyByZXR1cm4gdGhpcy5fdHJhbnNmZXIobmV3IEFkZHJlc3MoVHhuLnNlbmRlciksIHRvLCB2YWx1ZSk7CiAgICB0eG4gU2VuZGVyCiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAtMQogICAgY2FsbHN1YiBfdHJhbnNmZXIKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLmFyYzIwMF90cmFuc2ZlckZyb20oZnJvbTogYnl0ZXMsIHRvOiBieXRlcywgdmFsdWU6IGJ5dGVzKSAtPiBieXRlczoKYXJjMjAwX3RyYW5zZmVyRnJvbToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNjUtMTY2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gcHVibGljIGFyYzIwMF90cmFuc2ZlckZyb20oZnJvbTogQWRkcmVzcywgdG86IEFkZHJlc3MsIHZhbHVlOiBhcmM0LlVpbnROMjU2KTogYXJjNC5Cb29sIHsKICAgIHByb3RvIDMgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE2NwogICAgLy8gY29uc3Qgc3BlbmRlciA9IG5ldyBBZGRyZXNzKFR4bi5zZW5kZXIpOwogICAgdHhuIFNlbmRlcgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE2OAogICAgLy8gY29uc3Qgc3BlbmRlcl9hbGxvd2FuY2UgPSB0aGlzLl9hbGxvd2FuY2UoZnJvbSwgc3BlbmRlcik7CiAgICBmcmFtZV9kaWcgLTMKICAgIGRpZyAxCiAgICBjYWxsc3ViIF9hbGxvd2FuY2UKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxNjkKICAgIC8vIGFzc2VydChzcGVuZGVyX2FsbG93YW5jZS5uYXRpdmUgPj0gdmFsdWUubmF0aXZlLCAnaW5zdWZmaWNpZW50IGFwcHJvdmFsJyk7CiAgICBkdXAKICAgIGZyYW1lX2RpZyAtMQogICAgYj49CiAgICBhc3NlcnQgLy8gaW5zdWZmaWNpZW50IGFwcHJvdmFsCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTcwCiAgICAvLyBjb25zdCBuZXdfc3BlbmRlcl9hbGxvd2FuY2UgPSBuZXcgVWludE4yNTYoc3BlbmRlcl9hbGxvd2FuY2UubmF0aXZlIC0gdmFsdWUubmF0aXZlKTsKICAgIGZyYW1lX2RpZyAtMQogICAgYi0KICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgIDw9CiAgICBhc3NlcnQgLy8gb3ZlcmZsb3cKICAgIGludGNfMiAvLyAzMgogICAgYnplcm8KICAgIGJ8CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTcxCiAgICAvLyB0aGlzLl9hcHByb3ZlKGZyb20sIHNwZW5kZXIsIG5ld19zcGVuZGVyX2FsbG93YW5jZSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGNvdmVyIDIKICAgIGNhbGxzdWIgX2FwcHJvdmUKICAgIHBvcAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE3MgogICAgLy8gcmV0dXJuIHRoaXMuX3RyYW5zZmVyKGZyb20sIHRvLCB2YWx1ZSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIF90cmFuc2ZlcgogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX2FwcHJvdmUoc3BlbmRlcjogYnl0ZXMsIHZhbHVlOiBieXRlcykgLT4gYnl0ZXM6CmFyYzIwMF9hcHByb3ZlOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4Mi0xODMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgYXJjMjAwX2FwcHJvdmUoc3BlbmRlcjogQWRkcmVzcywgdmFsdWU6IGFyYzQuVWludE4yNTYpOiBCb29sIHsKICAgIHByb3RvIDIgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE4NAogICAgLy8gY29uc3Qgb3duZXIgPSBuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKTsKICAgIHR4biBTZW5kZXIKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxODUKICAgIC8vIHJldHVybiB0aGlzLl9hcHByb3ZlKG93bmVyLCBzcGVuZGVyLCB2YWx1ZSk7CiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAtMQogICAgY2FsbHN1YiBfYXBwcm92ZQogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuYXJjMjAwX2FsbG93YW5jZShvd25lcjogYnl0ZXMsIHNwZW5kZXI6IGJ5dGVzKSAtPiBieXRlczoKYXJjMjAwX2FsbG93YW5jZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoxOTQtMTk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgLy8gcHVibGljIGFyYzIwMF9hbGxvd2FuY2Uob3duZXI6IEFkZHJlc3MsIHNwZW5kZXI6IEFkZHJlc3MpOiBhcmM0LlVpbnROMjU2IHsKICAgIHByb3RvIDIgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjE5NgogICAgLy8gcmV0dXJuIHRoaXMuX2FsbG93YW5jZShvd25lciwgc3BlbmRlcik7CiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAtMQogICAgY2FsbHN1YiBfYWxsb3dhbmNlCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5fYmFsYW5jZU9mKG93bmVyOiBieXRlcykgLT4gYnl0ZXM6Cl9iYWxhbmNlT2Y6CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MTk5CiAgICAvLyBwcml2YXRlIF9iYWxhbmNlT2Yob3duZXI6IEFkZHJlc3MpOiBVaW50TjI1NiB7CiAgICBwcm90byAxIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3MAogICAgLy8gcHVibGljIGJhbGFuY2VzID0gQm94TWFwPEFkZHJlc3MsIFVpbnROMjU2Pih7IGtleVByZWZpeDogJ2InIH0pOwogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBkdXAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDAKICAgIC8vIGlmICghdGhpcy5iYWxhbmNlcyhvd25lcikuZXhpc3RzKSByZXR1cm4gbmV3IFVpbnROMjU2KDApOwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBibnogX2JhbGFuY2VPZl9hZnRlcl9pZl9lbHNlQDIKICAgIGJ5dGVjIDUgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBzd2FwCiAgICByZXRzdWIKCl9iYWxhbmNlT2ZfYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIwMQogICAgLy8gcmV0dXJuIHRoaXMuYmFsYW5jZXMob3duZXIpLnZhbHVlOwogICAgZnJhbWVfZGlnIDAKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBzd2FwCiAgICByZXRzdWIKCgovLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6OkFyYzIwMC5fdHJhbnNmZXIoc2VuZGVyOiBieXRlcywgcmVjaXBpZW50OiBieXRlcywgYW1vdW50OiBieXRlcykgLT4gYnl0ZXM6Cl90cmFuc2ZlcjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDQKICAgIC8vIHByaXZhdGUgX3RyYW5zZmVyKHNlbmRlcjogQWRkcmVzcywgcmVjaXBpZW50OiBBZGRyZXNzLCBhbW91bnQ6IFVpbnROMjU2KTogQm9vbCB7CiAgICBwcm90byAzIDEKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDUKICAgIC8vIGNvbnN0IHNlbmRlcl9iYWxhbmNlID0gdGhpcy5fYmFsYW5jZU9mKHNlbmRlcik7CiAgICBmcmFtZV9kaWcgLTMKICAgIGNhbGxzdWIgX2JhbGFuY2VPZgogICAgZHVwCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjA2CiAgICAvLyBjb25zdCByZWNpcGllbnRfYmFsYW5jZSA9IHRoaXMuX2JhbGFuY2VPZihyZWNpcGllbnQpOwogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIF9iYWxhbmNlT2YKICAgIHN3YXAKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDcKICAgIC8vIGFzc2VydChzZW5kZXJfYmFsYW5jZS5uYXRpdmUgPj0gYW1vdW50Lm5hdGl2ZSwgJ0luc3VmZmljaWVudCBiYWxhbmNlIGF0IHRoZSBzZW5kZXIgYWNjb3VudCcpOwogICAgZnJhbWVfZGlnIC0xCiAgICBiPj0KICAgIGFzc2VydCAvLyBJbnN1ZmZpY2llbnQgYmFsYW5jZSBhdCB0aGUgc2VuZGVyIGFjY291bnQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMDkKICAgIC8vIGlmIChzZW5kZXIgIT09IHJlY2lwaWVudCkgewogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgICE9CiAgICBieiBfdHJhbnNmZXJfYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjExCiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSBuZXcgVWludE4yNTYoc2VuZGVyX2JhbGFuY2UubmF0aXZlIC0gYW1vdW50Lm5hdGl2ZSk7CiAgICBmcmFtZV9kaWcgMAogICAgZnJhbWVfZGlnIC0xCiAgICBiLQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyAzMgogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgaW50Y18yIC8vIDMyCiAgICBiemVybwogICAgYnwKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo3MAogICAgLy8gcHVibGljIGJhbGFuY2VzID0gQm94TWFwPEFkZHJlc3MsIFVpbnROMjU2Pih7IGtleVByZWZpeDogJ2InIH0pOwogICAgYnl0ZWNfMSAvLyAiYiIKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjExCiAgICAvLyB0aGlzLmJhbGFuY2VzKHNlbmRlcikudmFsdWUgPSBuZXcgVWludE4yNTYoc2VuZGVyX2JhbGFuY2UubmF0aXZlIC0gYW1vdW50Lm5hdGl2ZSk7CiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzAKICAgIC8vIHB1YmxpYyBiYWxhbmNlcyA9IEJveE1hcDxBZGRyZXNzLCBVaW50TjI1Nj4oeyBrZXlQcmVmaXg6ICdiJyB9KTsKICAgIGJ5dGVjXzEgLy8gImIiCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIxMgogICAgLy8gdGhpcy5iYWxhbmNlcyhyZWNpcGllbnQpLnZhbHVlID0gcmVjaXBpZW50X2JhbGFuY2U7CiAgICBmcmFtZV9kaWcgMQogICAgYm94X3B1dAoKX3RyYW5zZmVyX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjAKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9UcmFuc2Zlcih7IGZyb206IHNlbmRlciwgdG86IHJlY2lwaWVudCwgdmFsdWU6IGFtb3VudCB9KSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyBtZXRob2QgImFyYzIwMF9UcmFuc2ZlcihhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyMQogICAgLy8gcmV0dXJuIG5ldyBCb29sKHRydWUpOwogICAgYnl0ZWNfMyAvLyAweDgwCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl9hcHByb3ZhbEtleShvd25lcjogYnl0ZXMsIHNwZW5kZXI6IGJ5dGVzKSAtPiBieXRlczoKX2FwcHJvdmFsS2V5OgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyMwogICAgLy8gcHJpdmF0ZSBfYXBwcm92YWxLZXkob3duZXI6IEFkZHJlc3MsIHNwZW5kZXI6IEFkZHJlc3MpOiBTdGF0aWNCeXRlczwzMj4gewogICAgcHJvdG8gMiAxCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjI0CiAgICAvLyByZXR1cm4gbmV3IFN0YXRpY0J5dGVzPDMyPihvcC5zaGEyNTYob3AuY29uY2F0KG93bmVyLmJ5dGVzLCBzcGVuZGVyLmJ5dGVzKSkpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgc2l6ZQogICAgcmV0c3ViCgoKLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjpBcmMyMDAuX2FsbG93YW5jZShvd25lcjogYnl0ZXMsIHNwZW5kZXI6IGJ5dGVzKSAtPiBieXRlczoKX2FsbG93YW5jZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMjcKICAgIC8vIHByaXZhdGUgX2FsbG93YW5jZShvd25lcjogQWRkcmVzcywgc3BlbmRlcjogQWRkcmVzcyk6IFVpbnROMjU2IHsKICAgIHByb3RvIDIgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIyOAogICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fYXBwcm92YWxLZXkob3duZXIsIHNwZW5kZXIpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgX2FwcHJvdmFsS2V5CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6NzIKICAgIC8vIHB1YmxpYyBhcHByb3ZhbHMgPSBCb3hNYXA8U3RhdGljQnl0ZXM8MzI+LCBBcHByb3ZhbFN0cnVjdD4oeyBrZXlQcmVmaXg6ICdhJyB9KTsKICAgIHB1c2hieXRlcyAiYSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjI5CiAgICAvLyBpZiAoIXRoaXMuYXBwcm92YWxzKGtleSkuZXhpc3RzKSByZXR1cm4gbmV3IFVpbnROMjU2KDApOwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBibnogX2FsbG93YW5jZV9hZnRlcl9pZl9lbHNlQDIKICAgIGJ5dGVjIDUgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBzd2FwCiAgICByZXRzdWIKCl9hbGxvd2FuY2VfYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIzMAogICAgLy8gcmV0dXJuIHRoaXMuYXBwcm92YWxzKGtleSkudmFsdWUuYXBwcm92YWxBbW91bnQ7CiAgICBmcmFtZV9kaWcgMAogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIGV4dHJhY3QgMCAzMiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHN3YXAKICAgIHJldHN1YgoKCi8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czo6QXJjMjAwLl9hcHByb3ZlKG93bmVyOiBieXRlcywgc3BlbmRlcjogYnl0ZXMsIGFtb3VudDogYnl0ZXMpIC0+IGJ5dGVzOgpfYXBwcm92ZToKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyMzMKICAgIC8vIHByaXZhdGUgX2FwcHJvdmUob3duZXI6IEFkZHJlc3MsIHNwZW5kZXI6IEFkZHJlc3MsIGFtb3VudDogVWludE4yNTYpOiBCb29sIHsKICAgIHByb3RvIDMgMQogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjIzNAogICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fYXBwcm92YWxLZXkob3duZXIsIHNwZW5kZXIpOwogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgX2FwcHJvdmFsS2V5CiAgICAvLyBjb250cmFjdHMvYXJjMjAwLmFsZ28udHM6MjM1LTIzOQogICAgLy8gY29uc3QgYXBwcm92YWxCb3g6IEFwcHJvdmFsU3RydWN0ID0gbmV3IEFwcHJvdmFsU3RydWN0KHsKICAgIC8vICAgYXBwcm92YWxBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgb3duZXI6IG93bmVyLAogICAgLy8gICBzcGVuZGVyOiBzcGVuZGVyLAogICAgLy8gfSk7CiAgICBmcmFtZV9kaWcgLTEKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjcyCiAgICAvLyBwdWJsaWMgYXBwcm92YWxzID0gQm94TWFwPFN0YXRpY0J5dGVzPDMyPiwgQXBwcm92YWxTdHJ1Y3Q+KHsga2V5UHJlZml4OiAnYScgfSk7CiAgICBwdXNoYnl0ZXMgImEiCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2FyYzIwMC5hbGdvLnRzOjI0MAogICAgLy8gdGhpcy5hcHByb3ZhbHMoa2V5KS52YWx1ZSA9IGFwcHJvdmFsQm94LmNvcHkoKTsKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyNDEKICAgIC8vIGVtaXQobmV3IGFyYzIwMF9BcHByb3ZhbCh7IG93bmVyOiBvd25lciwgc3BlbmRlcjogc3BlbmRlciwgdmFsdWU6IGFtb3VudCB9KSk7CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MTk2OWY4NjUgLy8gbWV0aG9kICJhcmMyMDBfQXBwcm92YWwoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9hcmMyMDAuYWxnby50czoyNDIKICAgIC8vIHJldHVybiBuZXcgQm9vbCh0cnVlKTsKICAgIGJ5dGVjXzMgLy8gMHg4MAogICAgcmV0c3ViCg==",
|
|
261
|
+
clear: "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg=="
|
|
123
262
|
},
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
"
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
{
|
|
149
|
-
"name": "arc200_decimals",
|
|
150
|
-
"desc": "Returns the decimals of the token",
|
|
151
|
-
"readonly": true,
|
|
152
|
-
"args": [],
|
|
153
|
-
"returns": {
|
|
154
|
-
"type": "uint8",
|
|
155
|
-
"desc": "The decimals of the token"
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
"name": "arc200_totalSupply",
|
|
160
|
-
"desc": "Returns the total supply of the token",
|
|
161
|
-
"readonly": true,
|
|
162
|
-
"args": [],
|
|
163
|
-
"returns": {
|
|
164
|
-
"type": "uint256",
|
|
165
|
-
"desc": "The total supply of the token"
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"name": "arc200_balanceOf",
|
|
170
|
-
"desc": "Returns the current balance of the owner of the token",
|
|
171
|
-
"readonly": true,
|
|
172
|
-
"args": [
|
|
173
|
-
{
|
|
174
|
-
"name": "owner",
|
|
175
|
-
"type": "address",
|
|
176
|
-
"desc": "The address of the owner of the token"
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
"returns": {
|
|
180
|
-
"type": "uint256",
|
|
181
|
-
"desc": "The current balance of the holder of the token"
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"name": "arc200_transfer",
|
|
186
|
-
"desc": "Transfers tokens",
|
|
187
|
-
"args": [
|
|
188
|
-
{
|
|
189
|
-
"name": "to",
|
|
190
|
-
"type": "address",
|
|
191
|
-
"desc": "The destination of the transfer"
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
"name": "value",
|
|
195
|
-
"type": "uint256",
|
|
196
|
-
"desc": "Amount of tokens to transfer"
|
|
197
|
-
}
|
|
198
|
-
],
|
|
199
|
-
"returns": {
|
|
200
|
-
"type": "bool",
|
|
201
|
-
"desc": "Success"
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"name": "arc200_transferFrom",
|
|
206
|
-
"desc": "Transfers tokens from source to destination as approved spender",
|
|
207
|
-
"args": [
|
|
208
|
-
{
|
|
209
|
-
"name": "from",
|
|
210
|
-
"type": "address",
|
|
211
|
-
"desc": "The source of the transfer"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
"name": "to",
|
|
215
|
-
"type": "address",
|
|
216
|
-
"desc": "The destination of the transfer"
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
"name": "value",
|
|
220
|
-
"type": "uint256",
|
|
221
|
-
"desc": "Amount of tokens to transfer"
|
|
222
|
-
}
|
|
223
|
-
],
|
|
224
|
-
"returns": {
|
|
225
|
-
"type": "bool",
|
|
226
|
-
"desc": "Success"
|
|
227
|
-
}
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
"name": "arc200_approve",
|
|
231
|
-
"desc": "Approve spender for a token",
|
|
232
|
-
"args": [
|
|
233
|
-
{
|
|
234
|
-
"name": "spender",
|
|
235
|
-
"type": "address",
|
|
236
|
-
"desc": "Who is allowed to take tokens on owner's behalf"
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
"name": "value",
|
|
240
|
-
"type": "uint256",
|
|
241
|
-
"desc": "Amount of tokens to be taken by spender"
|
|
242
|
-
}
|
|
243
|
-
],
|
|
244
|
-
"returns": {
|
|
245
|
-
"type": "bool",
|
|
246
|
-
"desc": "Success"
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"name": "arc200_allowance",
|
|
251
|
-
"desc": "Returns the current allowance of the spender of the tokens of the owner",
|
|
252
|
-
"readonly": true,
|
|
253
|
-
"args": [
|
|
254
|
-
{
|
|
255
|
-
"name": "owner",
|
|
256
|
-
"type": "address",
|
|
257
|
-
"desc": "Owner's account"
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
"name": "spender",
|
|
261
|
-
"type": "address",
|
|
262
|
-
"desc": "Who is allowed to take tokens on owner's behalf"
|
|
263
|
-
}
|
|
264
|
-
],
|
|
265
|
-
"returns": {
|
|
266
|
-
"type": "uint256",
|
|
267
|
-
"desc": "The remaining allowance"
|
|
268
|
-
}
|
|
269
|
-
},
|
|
270
|
-
{
|
|
271
|
-
"name": "createApplication",
|
|
272
|
-
"args": [],
|
|
273
|
-
"returns": {
|
|
274
|
-
"type": "void"
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
]
|
|
278
|
-
}
|
|
263
|
+
byteCode: {
|
|
264
|
+
approval: "CiAEAQAgCCYGBBUffHUBYgF0AYAEeYPDXCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEbQQEZggoEl1OC4gRlfRPsBLauGiUEhOwT1QTsmWBBBILlc8QE2nAluQRKlo+PBLVCISUEu7MZ8zYaAI4KALAAoACQAIAAcABdAEcALgAYAAIjQzEZFEQxGEQ2GgE2GgKIAY8oTFCwIkMxGRREMRhENhoBNhoCiAFsKExQsCJDMRkURDEYRDYaATYaAjYaA4gBJShMULAiQzEZFEQxGEQ2GgE2GgKIAQIoTFCwIkMxGRREMRhENhoBiADmKExQsCJDMRkURDEYRIgA0ShMULAiQzEZFEQxGESIALooTFCwIkMxGRREMRhEiACbKExQsCJDMRkURDEYRIgAfChMULAiQzEZFEQxGEQ2GgE2GgI2GgM2GgSIABEoTFCwIkMxGUD/LzEYFEQiQ4oEATEAMgkSRIv8I1lJRCQORIv9I1lJRCUORCMqZUUBFESAAW6L/GeAAXOL/Wcqi/9ngAFki/5nMQApSwFQi/+/MgNMUIv/UCcETFCwK4kjgAFuZURXAgBJFSQSRIkjgAFzZURXAgBJFSUSRIkjgAFkZUSJIyplRImKAQGL/4gAVImKAgExAIv+i/+IAF+JigMBMQCL/UsBiACnSYv/p0SL/6FJFSQORCSvq4v9TgKIALNIi/2L/ov/iAAxiYoCATEAi/6L/4gAnImKAgGL/ov/iABuiYoBASmL/1BJvUUBQAAEJwVMiYsAvkRMiYoDAYv9iP/gSYv+iP/aTIv/p0SL/Yv+E0EAGosAi/+hSRUkDkQkr6spi/1QTL8pi/5QiwG/i/2L/lCL/1AnBExQsCuMAImKAgGL/ov/UAFJFSQSRImKAgGL/ov/iP/ngAFhTFBJvUUBQAAEJwVMiYsAvkRXACBMiYoDAYv9i/6I/8SL/4v9UIv+UIABYU8CUEy/i/2L/lCL/1CABBlp+GVMULAriQ==",
|
|
265
|
+
clear: "CoEBQw=="
|
|
266
|
+
},
|
|
267
|
+
compilerInfo: { compiler: "puya", compilerVersion: { major: 4, minor: 7, patch: 0 } },
|
|
268
|
+
events: [
|
|
269
|
+
{
|
|
270
|
+
name: "arc200_Transfer",
|
|
271
|
+
args: [
|
|
272
|
+
{ type: "address", name: "from" },
|
|
273
|
+
{ type: "address", name: "to" },
|
|
274
|
+
{ type: "uint256", name: "value" }
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: "arc200_Approval",
|
|
279
|
+
args: [
|
|
280
|
+
{ type: "address", name: "owner" },
|
|
281
|
+
{ type: "address", name: "spender" },
|
|
282
|
+
{ type: "uint256", name: "value" }
|
|
283
|
+
]
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
templateVariables: {}
|
|
279
287
|
};
|
|
280
|
-
var
|
|
288
|
+
var Arc200ParamsFactory = class {
|
|
281
289
|
/**
|
|
282
|
-
*
|
|
290
|
+
* Constructs a no op call for the bootstrap(byte[],byte[],uint8,uint256)bool ABI method
|
|
291
|
+
*
|
|
292
|
+
* @param params Parameters for the call
|
|
293
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
283
294
|
*/
|
|
284
|
-
static
|
|
295
|
+
static bootstrap(params) {
|
|
285
296
|
return {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
* @param args Any args for the contract call
|
|
290
|
-
* @param params Any additional parameters for the call
|
|
291
|
-
* @returns A TypedCallParams object for the call
|
|
292
|
-
*/
|
|
293
|
-
createApplication(args, params = {}) {
|
|
294
|
-
return {
|
|
295
|
-
method: "createApplication()void",
|
|
296
|
-
methodArgs: Array.isArray(args) ? args : [],
|
|
297
|
-
...params
|
|
298
|
-
};
|
|
299
|
-
}
|
|
297
|
+
...params,
|
|
298
|
+
method: "bootstrap(byte[],byte[],uint8,uint256)bool",
|
|
299
|
+
args: Array.isArray(params.args) ? params.args : [params.args.name, params.args.symbol, params.args.decimals, params.args.totalSupply]
|
|
300
300
|
};
|
|
301
301
|
}
|
|
302
302
|
/**
|
|
303
|
-
* Constructs a no op call for the arc200_name()
|
|
303
|
+
* Constructs a no op call for the arc200_name()byte[32] ABI method
|
|
304
304
|
*
|
|
305
305
|
* Returns the name of the token
|
|
306
306
|
*
|
|
307
|
-
* @param
|
|
308
|
-
* @
|
|
309
|
-
* @returns A TypedCallParams object for the call
|
|
307
|
+
* @param params Parameters for the call
|
|
308
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
310
309
|
*/
|
|
311
|
-
static arc200Name(
|
|
310
|
+
static arc200Name(params) {
|
|
312
311
|
return {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
312
|
+
...params,
|
|
313
|
+
method: "arc200_name()byte[32]",
|
|
314
|
+
args: Array.isArray(params.args) ? params.args : []
|
|
316
315
|
};
|
|
317
316
|
}
|
|
318
317
|
/**
|
|
319
|
-
* Constructs a no op call for the arc200_symbol()
|
|
318
|
+
* Constructs a no op call for the arc200_symbol()byte[8] ABI method
|
|
320
319
|
*
|
|
321
320
|
* Returns the symbol of the token
|
|
322
321
|
*
|
|
323
|
-
* @param
|
|
324
|
-
* @
|
|
325
|
-
* @returns A TypedCallParams object for the call
|
|
322
|
+
* @param params Parameters for the call
|
|
323
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
326
324
|
*/
|
|
327
|
-
static arc200Symbol(
|
|
325
|
+
static arc200Symbol(params) {
|
|
328
326
|
return {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
327
|
+
...params,
|
|
328
|
+
method: "arc200_symbol()byte[8]",
|
|
329
|
+
args: Array.isArray(params.args) ? params.args : []
|
|
332
330
|
};
|
|
333
331
|
}
|
|
334
332
|
/**
|
|
@@ -336,15 +334,14 @@ var Arc200CallFactory = class {
|
|
|
336
334
|
*
|
|
337
335
|
* Returns the decimals of the token
|
|
338
336
|
*
|
|
339
|
-
* @param
|
|
340
|
-
* @
|
|
341
|
-
* @returns A TypedCallParams object for the call
|
|
337
|
+
* @param params Parameters for the call
|
|
338
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
342
339
|
*/
|
|
343
|
-
static arc200Decimals(
|
|
340
|
+
static arc200Decimals(params) {
|
|
344
341
|
return {
|
|
342
|
+
...params,
|
|
345
343
|
method: "arc200_decimals()uint8",
|
|
346
|
-
|
|
347
|
-
...params
|
|
344
|
+
args: Array.isArray(params.args) ? params.args : []
|
|
348
345
|
};
|
|
349
346
|
}
|
|
350
347
|
/**
|
|
@@ -352,15 +349,14 @@ var Arc200CallFactory = class {
|
|
|
352
349
|
*
|
|
353
350
|
* Returns the total supply of the token
|
|
354
351
|
*
|
|
355
|
-
* @param
|
|
356
|
-
* @
|
|
357
|
-
* @returns A TypedCallParams object for the call
|
|
352
|
+
* @param params Parameters for the call
|
|
353
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
358
354
|
*/
|
|
359
|
-
static arc200TotalSupply(
|
|
355
|
+
static arc200TotalSupply(params) {
|
|
360
356
|
return {
|
|
357
|
+
...params,
|
|
361
358
|
method: "arc200_totalSupply()uint256",
|
|
362
|
-
|
|
363
|
-
...params
|
|
359
|
+
args: Array.isArray(params.args) ? params.args : []
|
|
364
360
|
};
|
|
365
361
|
}
|
|
366
362
|
/**
|
|
@@ -368,15 +364,14 @@ var Arc200CallFactory = class {
|
|
|
368
364
|
*
|
|
369
365
|
* Returns the current balance of the owner of the token
|
|
370
366
|
*
|
|
371
|
-
* @param
|
|
372
|
-
* @
|
|
373
|
-
* @returns A TypedCallParams object for the call
|
|
367
|
+
* @param params Parameters for the call
|
|
368
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
374
369
|
*/
|
|
375
|
-
static arc200BalanceOf(
|
|
370
|
+
static arc200BalanceOf(params) {
|
|
376
371
|
return {
|
|
372
|
+
...params,
|
|
377
373
|
method: "arc200_balanceOf(address)uint256",
|
|
378
|
-
|
|
379
|
-
...params
|
|
374
|
+
args: Array.isArray(params.args) ? params.args : [params.args.owner]
|
|
380
375
|
};
|
|
381
376
|
}
|
|
382
377
|
/**
|
|
@@ -384,15 +379,14 @@ var Arc200CallFactory = class {
|
|
|
384
379
|
*
|
|
385
380
|
* Transfers tokens
|
|
386
381
|
*
|
|
387
|
-
* @param
|
|
388
|
-
* @
|
|
389
|
-
* @returns A TypedCallParams object for the call
|
|
382
|
+
* @param params Parameters for the call
|
|
383
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
390
384
|
*/
|
|
391
|
-
static arc200Transfer(
|
|
385
|
+
static arc200Transfer(params) {
|
|
392
386
|
return {
|
|
387
|
+
...params,
|
|
393
388
|
method: "arc200_transfer(address,uint256)bool",
|
|
394
|
-
|
|
395
|
-
...params
|
|
389
|
+
args: Array.isArray(params.args) ? params.args : [params.args.to, params.args.value]
|
|
396
390
|
};
|
|
397
391
|
}
|
|
398
392
|
/**
|
|
@@ -400,15 +394,14 @@ var Arc200CallFactory = class {
|
|
|
400
394
|
*
|
|
401
395
|
* Transfers tokens from source to destination as approved spender
|
|
402
396
|
*
|
|
403
|
-
* @param
|
|
404
|
-
* @
|
|
405
|
-
* @returns A TypedCallParams object for the call
|
|
397
|
+
* @param params Parameters for the call
|
|
398
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
406
399
|
*/
|
|
407
|
-
static arc200TransferFrom(
|
|
400
|
+
static arc200TransferFrom(params) {
|
|
408
401
|
return {
|
|
402
|
+
...params,
|
|
409
403
|
method: "arc200_transferFrom(address,address,uint256)bool",
|
|
410
|
-
|
|
411
|
-
...params
|
|
404
|
+
args: Array.isArray(params.args) ? params.args : [params.args.from, params.args.to, params.args.value]
|
|
412
405
|
};
|
|
413
406
|
}
|
|
414
407
|
/**
|
|
@@ -416,15 +409,14 @@ var Arc200CallFactory = class {
|
|
|
416
409
|
*
|
|
417
410
|
* Approve spender for a token
|
|
418
411
|
*
|
|
419
|
-
* @param
|
|
420
|
-
* @
|
|
421
|
-
* @returns A TypedCallParams object for the call
|
|
412
|
+
* @param params Parameters for the call
|
|
413
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
422
414
|
*/
|
|
423
|
-
static arc200Approve(
|
|
415
|
+
static arc200Approve(params) {
|
|
424
416
|
return {
|
|
417
|
+
...params,
|
|
425
418
|
method: "arc200_approve(address,uint256)bool",
|
|
426
|
-
|
|
427
|
-
...params
|
|
419
|
+
args: Array.isArray(params.args) ? params.args : [params.args.spender, params.args.value]
|
|
428
420
|
};
|
|
429
421
|
}
|
|
430
422
|
/**
|
|
@@ -432,56 +424,121 @@ var Arc200CallFactory = class {
|
|
|
432
424
|
*
|
|
433
425
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
434
426
|
*
|
|
435
|
-
* @param
|
|
436
|
-
* @
|
|
437
|
-
* @returns A TypedCallParams object for the call
|
|
427
|
+
* @param params Parameters for the call
|
|
428
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
438
429
|
*/
|
|
439
|
-
static arc200Allowance(
|
|
430
|
+
static arc200Allowance(params) {
|
|
440
431
|
return {
|
|
432
|
+
...params,
|
|
441
433
|
method: "arc200_allowance(address,address)uint256",
|
|
442
|
-
|
|
443
|
-
...params
|
|
434
|
+
args: Array.isArray(params.args) ? params.args : [params.args.owner, params.args.spender]
|
|
444
435
|
};
|
|
445
436
|
}
|
|
446
437
|
};
|
|
447
|
-
var
|
|
438
|
+
var Arc200Factory = class {
|
|
448
439
|
/**
|
|
449
|
-
* Creates a new instance of `
|
|
440
|
+
* Creates a new instance of `Arc200Factory`
|
|
450
441
|
*
|
|
451
|
-
* @param
|
|
452
|
-
* @param algod An algod client instance
|
|
442
|
+
* @param params The parameters to initialise the app factory with
|
|
453
443
|
*/
|
|
454
|
-
constructor(
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
444
|
+
constructor(params) {
|
|
445
|
+
/**
|
|
446
|
+
* Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.
|
|
447
|
+
*/
|
|
448
|
+
this.params = {
|
|
449
|
+
/**
|
|
450
|
+
* Gets available create methods
|
|
451
|
+
*/
|
|
452
|
+
create: {
|
|
453
|
+
/**
|
|
454
|
+
* Creates a new instance of the Arc200 smart contract using a bare call.
|
|
455
|
+
*
|
|
456
|
+
* @param params The params for the bare (raw) call
|
|
457
|
+
* @returns The params for a create call
|
|
458
|
+
*/
|
|
459
|
+
bare: (params) => {
|
|
460
|
+
return this.appFactory.params.bare.create(params);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
/**
|
|
465
|
+
* Create transactions for the current app
|
|
466
|
+
*/
|
|
467
|
+
this.createTransaction = {
|
|
468
|
+
/**
|
|
469
|
+
* Gets available create methods
|
|
470
|
+
*/
|
|
471
|
+
create: {
|
|
472
|
+
/**
|
|
473
|
+
* Creates a new instance of the Arc200 smart contract using a bare call.
|
|
474
|
+
*
|
|
475
|
+
* @param params The params for the bare (raw) call
|
|
476
|
+
* @returns The transaction for a create call
|
|
477
|
+
*/
|
|
478
|
+
bare: (params) => {
|
|
479
|
+
return this.appFactory.createTransaction.bare.create(params);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
/**
|
|
484
|
+
* Send calls to the current app
|
|
485
|
+
*/
|
|
486
|
+
this.send = {
|
|
487
|
+
/**
|
|
488
|
+
* Gets available create methods
|
|
489
|
+
*/
|
|
490
|
+
create: {
|
|
491
|
+
/**
|
|
492
|
+
* Creates a new instance of the Arc200 smart contract using a bare call.
|
|
493
|
+
*
|
|
494
|
+
* @param params The params for the bare (raw) call
|
|
495
|
+
* @returns The create result
|
|
496
|
+
*/
|
|
497
|
+
bare: async (params) => {
|
|
498
|
+
const result = await this.appFactory.send.bare.create(params);
|
|
499
|
+
return { result: result.result, appClient: new Arc200Client(result.appClient) };
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
this.appFactory = new import_app_factory.AppFactory({
|
|
504
|
+
...params,
|
|
505
|
+
appSpec: APP_SPEC
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
/** The name of the app (from the ARC-32 / ARC-56 app spec or override). */
|
|
509
|
+
get appName() {
|
|
510
|
+
return this.appFactory.appName;
|
|
511
|
+
}
|
|
512
|
+
/** The ARC-56 app spec being used */
|
|
513
|
+
get appSpec() {
|
|
514
|
+
return APP_SPEC;
|
|
515
|
+
}
|
|
516
|
+
/** A reference to the underlying `AlgorandClient` this app factory is using. */
|
|
517
|
+
get algorand() {
|
|
518
|
+
return this.appFactory.algorand;
|
|
461
519
|
}
|
|
462
520
|
/**
|
|
463
|
-
*
|
|
521
|
+
* Returns a new `AppClient` client for an app instance of the given ID.
|
|
464
522
|
*
|
|
465
|
-
*
|
|
466
|
-
*
|
|
467
|
-
* @
|
|
523
|
+
* Automatically populates appName, defaultSender and source maps from the factory
|
|
524
|
+
* if not specified in the params.
|
|
525
|
+
* @param params The parameters to create the app client
|
|
526
|
+
* @returns The `AppClient`
|
|
468
527
|
*/
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
throw result.return.decodeError;
|
|
472
|
-
}
|
|
473
|
-
const returnValue = result.return?.returnValue !== void 0 && returnValueFormatter !== void 0 ? returnValueFormatter(result.return.returnValue) : result.return?.returnValue;
|
|
474
|
-
return { ...result, return: returnValue };
|
|
528
|
+
getAppClientById(params) {
|
|
529
|
+
return new Arc200Client(this.appFactory.getAppClientById(params));
|
|
475
530
|
}
|
|
476
531
|
/**
|
|
477
|
-
*
|
|
532
|
+
* Returns a new `AppClient` client, resolving the app by creator address and name
|
|
533
|
+
* using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).
|
|
478
534
|
*
|
|
479
|
-
*
|
|
480
|
-
*
|
|
481
|
-
* @
|
|
535
|
+
* Automatically populates appName, defaultSender and source maps from the factory
|
|
536
|
+
* if not specified in the params.
|
|
537
|
+
* @param params The parameters to create the app client
|
|
538
|
+
* @returns The `AppClient`
|
|
482
539
|
*/
|
|
483
|
-
async
|
|
484
|
-
return
|
|
540
|
+
async getAppClientByCreatorAndName(params) {
|
|
541
|
+
return new Arc200Client(await this.appFactory.getAppClientByCreatorAndName(params));
|
|
485
542
|
}
|
|
486
543
|
/**
|
|
487
544
|
* Idempotently deploys the Arc200 smart contract.
|
|
@@ -489,227 +546,832 @@ var Arc200Client = class {
|
|
|
489
546
|
* @param params The arguments for the contract calls and any additional parameters for the call
|
|
490
547
|
* @returns The deployment result
|
|
491
548
|
*/
|
|
492
|
-
deploy(params = {}) {
|
|
493
|
-
const
|
|
494
|
-
|
|
495
|
-
...params,
|
|
496
|
-
createArgs,
|
|
497
|
-
createOnCompleteAction: createArgs?.onCompleteAction
|
|
549
|
+
async deploy(params = {}) {
|
|
550
|
+
const result = await this.appFactory.deploy({
|
|
551
|
+
...params
|
|
498
552
|
});
|
|
553
|
+
return { result: result.result, appClient: new Arc200Client(result.appClient) };
|
|
499
554
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
555
|
+
};
|
|
556
|
+
var Arc200Client = class _Arc200Client {
|
|
557
|
+
constructor(appClientOrParams) {
|
|
558
|
+
/**
|
|
559
|
+
* Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.
|
|
560
|
+
*/
|
|
561
|
+
this.params = {
|
|
562
|
+
/**
|
|
563
|
+
* Makes a clear_state call to an existing instance of the Arc200 smart contract.
|
|
564
|
+
*
|
|
565
|
+
* @param params The params for the bare (raw) call
|
|
566
|
+
* @returns The clearState result
|
|
567
|
+
*/
|
|
568
|
+
clearState: (params) => {
|
|
569
|
+
return this.appClient.params.bare.clearState(params);
|
|
570
|
+
},
|
|
571
|
+
/**
|
|
572
|
+
* Makes a call to the Arc200 smart contract using the `bootstrap(byte[],byte[],uint8,uint256)bool` ABI method.
|
|
573
|
+
*
|
|
574
|
+
* @param params The params for the smart contract call
|
|
575
|
+
* @returns The call params
|
|
576
|
+
*/
|
|
577
|
+
bootstrap: (params) => {
|
|
578
|
+
return this.appClient.params.call(Arc200ParamsFactory.bootstrap(params));
|
|
579
|
+
},
|
|
580
|
+
/**
|
|
581
|
+
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
582
|
+
*
|
|
583
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
584
|
+
*
|
|
585
|
+
* Returns the name of the token
|
|
586
|
+
*
|
|
587
|
+
* @param params The params for the smart contract call
|
|
588
|
+
* @returns The call params: The name of the token
|
|
589
|
+
*/
|
|
590
|
+
arc200Name: (params = { args: [] }) => {
|
|
591
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Name(params));
|
|
592
|
+
},
|
|
593
|
+
/**
|
|
594
|
+
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
595
|
+
*
|
|
596
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
597
|
+
*
|
|
598
|
+
* Returns the symbol of the token
|
|
599
|
+
*
|
|
600
|
+
* @param params The params for the smart contract call
|
|
601
|
+
* @returns The call params: The symbol of the token
|
|
602
|
+
*/
|
|
603
|
+
arc200Symbol: (params = { args: [] }) => {
|
|
604
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Symbol(params));
|
|
605
|
+
},
|
|
606
|
+
/**
|
|
607
|
+
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
608
|
+
*
|
|
609
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
610
|
+
*
|
|
611
|
+
* Returns the decimals of the token
|
|
612
|
+
*
|
|
613
|
+
* @param params The params for the smart contract call
|
|
614
|
+
* @returns The call params: The decimals of the token
|
|
615
|
+
*/
|
|
616
|
+
arc200Decimals: (params = { args: [] }) => {
|
|
617
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Decimals(params));
|
|
618
|
+
},
|
|
619
|
+
/**
|
|
620
|
+
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
621
|
+
*
|
|
622
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
623
|
+
*
|
|
624
|
+
* Returns the total supply of the token
|
|
625
|
+
*
|
|
626
|
+
* @param params The params for the smart contract call
|
|
627
|
+
* @returns The call params: The total supply of the token
|
|
628
|
+
*/
|
|
629
|
+
arc200TotalSupply: (params = { args: [] }) => {
|
|
630
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200TotalSupply(params));
|
|
631
|
+
},
|
|
632
|
+
/**
|
|
633
|
+
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
634
|
+
*
|
|
635
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
636
|
+
*
|
|
637
|
+
* Returns the current balance of the owner of the token
|
|
638
|
+
*
|
|
639
|
+
* @param params The params for the smart contract call
|
|
640
|
+
* @returns The call params: The current balance of the holder of the token
|
|
641
|
+
*/
|
|
642
|
+
arc200BalanceOf: (params) => {
|
|
643
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200BalanceOf(params));
|
|
644
|
+
},
|
|
645
|
+
/**
|
|
646
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transfer(address,uint256)bool` ABI method.
|
|
647
|
+
*
|
|
648
|
+
* Transfers tokens
|
|
649
|
+
*
|
|
650
|
+
* @param params The params for the smart contract call
|
|
651
|
+
* @returns The call params: Success
|
|
652
|
+
*/
|
|
653
|
+
arc200Transfer: (params) => {
|
|
654
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Transfer(params));
|
|
655
|
+
},
|
|
656
|
+
/**
|
|
657
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transferFrom(address,address,uint256)bool` ABI method.
|
|
658
|
+
*
|
|
659
|
+
* Transfers tokens from source to destination as approved spender
|
|
660
|
+
*
|
|
661
|
+
* @param params The params for the smart contract call
|
|
662
|
+
* @returns The call params: Success
|
|
663
|
+
*/
|
|
664
|
+
arc200TransferFrom: (params) => {
|
|
665
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200TransferFrom(params));
|
|
666
|
+
},
|
|
667
|
+
/**
|
|
668
|
+
* Makes a call to the Arc200 smart contract using the `arc200_approve(address,uint256)bool` ABI method.
|
|
669
|
+
*
|
|
670
|
+
* Approve spender for a token
|
|
671
|
+
*
|
|
672
|
+
* @param params The params for the smart contract call
|
|
673
|
+
* @returns The call params: Success
|
|
674
|
+
*/
|
|
675
|
+
arc200Approve: (params) => {
|
|
676
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Approve(params));
|
|
677
|
+
},
|
|
678
|
+
/**
|
|
679
|
+
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
680
|
+
*
|
|
681
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
682
|
+
*
|
|
683
|
+
* Returns the current allowance of the spender of the tokens of the owner
|
|
684
|
+
*
|
|
685
|
+
* @param params The params for the smart contract call
|
|
686
|
+
* @returns The call params: The remaining allowance
|
|
687
|
+
*/
|
|
688
|
+
arc200Allowance: (params) => {
|
|
689
|
+
return this.appClient.params.call(Arc200ParamsFactory.arc200Allowance(params));
|
|
690
|
+
}
|
|
691
|
+
};
|
|
692
|
+
/**
|
|
693
|
+
* Create transactions for the current app
|
|
694
|
+
*/
|
|
695
|
+
this.createTransaction = {
|
|
696
|
+
/**
|
|
697
|
+
* Makes a clear_state call to an existing instance of the Arc200 smart contract.
|
|
698
|
+
*
|
|
699
|
+
* @param params The params for the bare (raw) call
|
|
700
|
+
* @returns The clearState result
|
|
701
|
+
*/
|
|
702
|
+
clearState: (params) => {
|
|
703
|
+
return this.appClient.createTransaction.bare.clearState(params);
|
|
704
|
+
},
|
|
705
|
+
/**
|
|
706
|
+
* Makes a call to the Arc200 smart contract using the `bootstrap(byte[],byte[],uint8,uint256)bool` ABI method.
|
|
707
|
+
*
|
|
708
|
+
* @param params The params for the smart contract call
|
|
709
|
+
* @returns The call transaction
|
|
710
|
+
*/
|
|
711
|
+
bootstrap: (params) => {
|
|
712
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.bootstrap(params));
|
|
713
|
+
},
|
|
714
|
+
/**
|
|
715
|
+
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
716
|
+
*
|
|
717
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
718
|
+
*
|
|
719
|
+
* Returns the name of the token
|
|
720
|
+
*
|
|
721
|
+
* @param params The params for the smart contract call
|
|
722
|
+
* @returns The call transaction: The name of the token
|
|
723
|
+
*/
|
|
724
|
+
arc200Name: (params = { args: [] }) => {
|
|
725
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Name(params));
|
|
726
|
+
},
|
|
506
727
|
/**
|
|
507
|
-
*
|
|
728
|
+
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
729
|
+
*
|
|
730
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
731
|
+
*
|
|
732
|
+
* Returns the symbol of the token
|
|
508
733
|
*
|
|
509
|
-
* @param
|
|
510
|
-
* @
|
|
511
|
-
* @returns The create result
|
|
734
|
+
* @param params The params for the smart contract call
|
|
735
|
+
* @returns The call transaction: The symbol of the token
|
|
512
736
|
*/
|
|
513
|
-
|
|
514
|
-
return
|
|
737
|
+
arc200Symbol: (params = { args: [] }) => {
|
|
738
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Symbol(params));
|
|
739
|
+
},
|
|
740
|
+
/**
|
|
741
|
+
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
742
|
+
*
|
|
743
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
744
|
+
*
|
|
745
|
+
* Returns the decimals of the token
|
|
746
|
+
*
|
|
747
|
+
* @param params The params for the smart contract call
|
|
748
|
+
* @returns The call transaction: The decimals of the token
|
|
749
|
+
*/
|
|
750
|
+
arc200Decimals: (params = { args: [] }) => {
|
|
751
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Decimals(params));
|
|
752
|
+
},
|
|
753
|
+
/**
|
|
754
|
+
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
755
|
+
*
|
|
756
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
757
|
+
*
|
|
758
|
+
* Returns the total supply of the token
|
|
759
|
+
*
|
|
760
|
+
* @param params The params for the smart contract call
|
|
761
|
+
* @returns The call transaction: The total supply of the token
|
|
762
|
+
*/
|
|
763
|
+
arc200TotalSupply: (params = { args: [] }) => {
|
|
764
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200TotalSupply(params));
|
|
765
|
+
},
|
|
766
|
+
/**
|
|
767
|
+
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
768
|
+
*
|
|
769
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
770
|
+
*
|
|
771
|
+
* Returns the current balance of the owner of the token
|
|
772
|
+
*
|
|
773
|
+
* @param params The params for the smart contract call
|
|
774
|
+
* @returns The call transaction: The current balance of the holder of the token
|
|
775
|
+
*/
|
|
776
|
+
arc200BalanceOf: (params) => {
|
|
777
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200BalanceOf(params));
|
|
778
|
+
},
|
|
779
|
+
/**
|
|
780
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transfer(address,uint256)bool` ABI method.
|
|
781
|
+
*
|
|
782
|
+
* Transfers tokens
|
|
783
|
+
*
|
|
784
|
+
* @param params The params for the smart contract call
|
|
785
|
+
* @returns The call transaction: Success
|
|
786
|
+
*/
|
|
787
|
+
arc200Transfer: (params) => {
|
|
788
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Transfer(params));
|
|
789
|
+
},
|
|
790
|
+
/**
|
|
791
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transferFrom(address,address,uint256)bool` ABI method.
|
|
792
|
+
*
|
|
793
|
+
* Transfers tokens from source to destination as approved spender
|
|
794
|
+
*
|
|
795
|
+
* @param params The params for the smart contract call
|
|
796
|
+
* @returns The call transaction: Success
|
|
797
|
+
*/
|
|
798
|
+
arc200TransferFrom: (params) => {
|
|
799
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200TransferFrom(params));
|
|
800
|
+
},
|
|
801
|
+
/**
|
|
802
|
+
* Makes a call to the Arc200 smart contract using the `arc200_approve(address,uint256)bool` ABI method.
|
|
803
|
+
*
|
|
804
|
+
* Approve spender for a token
|
|
805
|
+
*
|
|
806
|
+
* @param params The params for the smart contract call
|
|
807
|
+
* @returns The call transaction: Success
|
|
808
|
+
*/
|
|
809
|
+
arc200Approve: (params) => {
|
|
810
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Approve(params));
|
|
811
|
+
},
|
|
812
|
+
/**
|
|
813
|
+
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
814
|
+
*
|
|
815
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
816
|
+
*
|
|
817
|
+
* Returns the current allowance of the spender of the tokens of the owner
|
|
818
|
+
*
|
|
819
|
+
* @param params The params for the smart contract call
|
|
820
|
+
* @returns The call transaction: The remaining allowance
|
|
821
|
+
*/
|
|
822
|
+
arc200Allowance: (params) => {
|
|
823
|
+
return this.appClient.createTransaction.call(Arc200ParamsFactory.arc200Allowance(params));
|
|
515
824
|
}
|
|
516
825
|
};
|
|
826
|
+
/**
|
|
827
|
+
* Send calls to the current app
|
|
828
|
+
*/
|
|
829
|
+
this.send = {
|
|
830
|
+
/**
|
|
831
|
+
* Makes a clear_state call to an existing instance of the Arc200 smart contract.
|
|
832
|
+
*
|
|
833
|
+
* @param params The params for the bare (raw) call
|
|
834
|
+
* @returns The clearState result
|
|
835
|
+
*/
|
|
836
|
+
clearState: (params) => {
|
|
837
|
+
return this.appClient.send.bare.clearState(params);
|
|
838
|
+
},
|
|
839
|
+
/**
|
|
840
|
+
* Makes a call to the Arc200 smart contract using the `bootstrap(byte[],byte[],uint8,uint256)bool` ABI method.
|
|
841
|
+
*
|
|
842
|
+
* @param params The params for the smart contract call
|
|
843
|
+
* @returns The call result
|
|
844
|
+
*/
|
|
845
|
+
bootstrap: async (params) => {
|
|
846
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.bootstrap(params));
|
|
847
|
+
return {
|
|
848
|
+
...result,
|
|
849
|
+
return: result.return
|
|
850
|
+
};
|
|
851
|
+
},
|
|
852
|
+
/**
|
|
853
|
+
* Makes a call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
854
|
+
*
|
|
855
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
856
|
+
*
|
|
857
|
+
* Returns the name of the token
|
|
858
|
+
*
|
|
859
|
+
* @param params The params for the smart contract call
|
|
860
|
+
* @returns The call result: The name of the token
|
|
861
|
+
*/
|
|
862
|
+
arc200Name: async (params = { args: [] }) => {
|
|
863
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Name(params));
|
|
864
|
+
return { ...result, return: result.return };
|
|
865
|
+
},
|
|
866
|
+
/**
|
|
867
|
+
* Makes a call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
868
|
+
*
|
|
869
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
870
|
+
*
|
|
871
|
+
* Returns the symbol of the token
|
|
872
|
+
*
|
|
873
|
+
* @param params The params for the smart contract call
|
|
874
|
+
* @returns The call result: The symbol of the token
|
|
875
|
+
*/
|
|
876
|
+
arc200Symbol: async (params = { args: [] }) => {
|
|
877
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Symbol(params));
|
|
878
|
+
return { ...result, return: result.return };
|
|
879
|
+
},
|
|
880
|
+
/**
|
|
881
|
+
* Makes a call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
882
|
+
*
|
|
883
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
884
|
+
*
|
|
885
|
+
* Returns the decimals of the token
|
|
886
|
+
*
|
|
887
|
+
* @param params The params for the smart contract call
|
|
888
|
+
* @returns The call result: The decimals of the token
|
|
889
|
+
*/
|
|
890
|
+
arc200Decimals: async (params = { args: [] }) => {
|
|
891
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Decimals(params));
|
|
892
|
+
return { ...result, return: result.return };
|
|
893
|
+
},
|
|
894
|
+
/**
|
|
895
|
+
* Makes a call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
896
|
+
*
|
|
897
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
898
|
+
*
|
|
899
|
+
* Returns the total supply of the token
|
|
900
|
+
*
|
|
901
|
+
* @param params The params for the smart contract call
|
|
902
|
+
* @returns The call result: The total supply of the token
|
|
903
|
+
*/
|
|
904
|
+
arc200TotalSupply: async (params = { args: [] }) => {
|
|
905
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200TotalSupply(params));
|
|
906
|
+
return {
|
|
907
|
+
...result,
|
|
908
|
+
return: result.return
|
|
909
|
+
};
|
|
910
|
+
},
|
|
911
|
+
/**
|
|
912
|
+
* Makes a call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
913
|
+
*
|
|
914
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
915
|
+
*
|
|
916
|
+
* Returns the current balance of the owner of the token
|
|
917
|
+
*
|
|
918
|
+
* @param params The params for the smart contract call
|
|
919
|
+
* @returns The call result: The current balance of the holder of the token
|
|
920
|
+
*/
|
|
921
|
+
arc200BalanceOf: async (params) => {
|
|
922
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200BalanceOf(params));
|
|
923
|
+
return {
|
|
924
|
+
...result,
|
|
925
|
+
return: result.return
|
|
926
|
+
};
|
|
927
|
+
},
|
|
928
|
+
/**
|
|
929
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transfer(address,uint256)bool` ABI method.
|
|
930
|
+
*
|
|
931
|
+
* Transfers tokens
|
|
932
|
+
*
|
|
933
|
+
* @param params The params for the smart contract call
|
|
934
|
+
* @returns The call result: Success
|
|
935
|
+
*/
|
|
936
|
+
arc200Transfer: async (params) => {
|
|
937
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Transfer(params));
|
|
938
|
+
return {
|
|
939
|
+
...result,
|
|
940
|
+
return: result.return
|
|
941
|
+
};
|
|
942
|
+
},
|
|
943
|
+
/**
|
|
944
|
+
* Makes a call to the Arc200 smart contract using the `arc200_transferFrom(address,address,uint256)bool` ABI method.
|
|
945
|
+
*
|
|
946
|
+
* Transfers tokens from source to destination as approved spender
|
|
947
|
+
*
|
|
948
|
+
* @param params The params for the smart contract call
|
|
949
|
+
* @returns The call result: Success
|
|
950
|
+
*/
|
|
951
|
+
arc200TransferFrom: async (params) => {
|
|
952
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200TransferFrom(params));
|
|
953
|
+
return {
|
|
954
|
+
...result,
|
|
955
|
+
return: result.return
|
|
956
|
+
};
|
|
957
|
+
},
|
|
958
|
+
/**
|
|
959
|
+
* Makes a call to the Arc200 smart contract using the `arc200_approve(address,uint256)bool` ABI method.
|
|
960
|
+
*
|
|
961
|
+
* Approve spender for a token
|
|
962
|
+
*
|
|
963
|
+
* @param params The params for the smart contract call
|
|
964
|
+
* @returns The call result: Success
|
|
965
|
+
*/
|
|
966
|
+
arc200Approve: async (params) => {
|
|
967
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Approve(params));
|
|
968
|
+
return {
|
|
969
|
+
...result,
|
|
970
|
+
return: result.return
|
|
971
|
+
};
|
|
972
|
+
},
|
|
973
|
+
/**
|
|
974
|
+
* Makes a call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
975
|
+
*
|
|
976
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
977
|
+
*
|
|
978
|
+
* Returns the current allowance of the spender of the tokens of the owner
|
|
979
|
+
*
|
|
980
|
+
* @param params The params for the smart contract call
|
|
981
|
+
* @returns The call result: The remaining allowance
|
|
982
|
+
*/
|
|
983
|
+
arc200Allowance: async (params) => {
|
|
984
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Allowance(params));
|
|
985
|
+
return {
|
|
986
|
+
...result,
|
|
987
|
+
return: result.return
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
};
|
|
991
|
+
/**
|
|
992
|
+
* Methods to access state for the current Arc200 app
|
|
993
|
+
*/
|
|
994
|
+
this.state = {
|
|
995
|
+
/**
|
|
996
|
+
* Methods to access global state for the current Arc200 app
|
|
997
|
+
*/
|
|
998
|
+
global: {
|
|
999
|
+
/**
|
|
1000
|
+
* Get all current keyed values from global state
|
|
1001
|
+
*/
|
|
1002
|
+
getAll: async () => {
|
|
1003
|
+
const result = await this.appClient.state.global.getAll();
|
|
1004
|
+
return {
|
|
1005
|
+
name: result.name,
|
|
1006
|
+
symbol: result.symbol,
|
|
1007
|
+
decimals: result.decimals,
|
|
1008
|
+
totalSupply: result.totalSupply
|
|
1009
|
+
};
|
|
1010
|
+
},
|
|
1011
|
+
/**
|
|
1012
|
+
* Get the current value of the name key in global state
|
|
1013
|
+
*/
|
|
1014
|
+
name: async () => {
|
|
1015
|
+
return await this.appClient.state.global.getValue("name");
|
|
1016
|
+
},
|
|
1017
|
+
/**
|
|
1018
|
+
* Get the current value of the symbol key in global state
|
|
1019
|
+
*/
|
|
1020
|
+
symbol: async () => {
|
|
1021
|
+
return await this.appClient.state.global.getValue("symbol");
|
|
1022
|
+
},
|
|
1023
|
+
/**
|
|
1024
|
+
* Get the current value of the decimals key in global state
|
|
1025
|
+
*/
|
|
1026
|
+
decimals: async () => {
|
|
1027
|
+
return await this.appClient.state.global.getValue("decimals");
|
|
1028
|
+
},
|
|
1029
|
+
/**
|
|
1030
|
+
* Get the current value of the totalSupply key in global state
|
|
1031
|
+
*/
|
|
1032
|
+
totalSupply: async () => {
|
|
1033
|
+
return await this.appClient.state.global.getValue("totalSupply");
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
/**
|
|
1037
|
+
* Methods to access box state for the current Arc200 app
|
|
1038
|
+
*/
|
|
1039
|
+
box: {
|
|
1040
|
+
/**
|
|
1041
|
+
* Get all current keyed values from box state
|
|
1042
|
+
*/
|
|
1043
|
+
getAll: async () => {
|
|
1044
|
+
const result = await this.appClient.state.box.getAll();
|
|
1045
|
+
return {};
|
|
1046
|
+
},
|
|
1047
|
+
/**
|
|
1048
|
+
* Get values from the balances map in box state
|
|
1049
|
+
*/
|
|
1050
|
+
balances: {
|
|
1051
|
+
/**
|
|
1052
|
+
* Get all current values of the balances map in box state
|
|
1053
|
+
*/
|
|
1054
|
+
getMap: async () => {
|
|
1055
|
+
return await this.appClient.state.box.getMap("balances");
|
|
1056
|
+
},
|
|
1057
|
+
/**
|
|
1058
|
+
* Get a current value of the balances map by key from box state
|
|
1059
|
+
*/
|
|
1060
|
+
value: async (key) => {
|
|
1061
|
+
return await this.appClient.state.box.getMapValue("balances", key);
|
|
1062
|
+
}
|
|
1063
|
+
},
|
|
1064
|
+
/**
|
|
1065
|
+
* Get values from the approvals map in box state
|
|
1066
|
+
*/
|
|
1067
|
+
approvals: {
|
|
1068
|
+
/**
|
|
1069
|
+
* Get all current values of the approvals map in box state
|
|
1070
|
+
*/
|
|
1071
|
+
getMap: async () => {
|
|
1072
|
+
return await this.appClient.state.box.getMap("approvals");
|
|
1073
|
+
},
|
|
1074
|
+
/**
|
|
1075
|
+
* Get a current value of the approvals map by key from box state
|
|
1076
|
+
*/
|
|
1077
|
+
value: async (key) => {
|
|
1078
|
+
return await this.appClient.state.box.getMapValue("approvals", key);
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
};
|
|
1083
|
+
this.appClient = appClientOrParams instanceof import_app_client.AppClient ? appClientOrParams : new import_app_client.AppClient({
|
|
1084
|
+
...appClientOrParams,
|
|
1085
|
+
appSpec: APP_SPEC
|
|
1086
|
+
});
|
|
517
1087
|
}
|
|
518
1088
|
/**
|
|
519
|
-
*
|
|
520
|
-
*
|
|
521
|
-
* @param args The arguments for the bare call
|
|
522
|
-
* @returns The clear_state result
|
|
1089
|
+
* Checks for decode errors on the given return value and maps the return value to the return type for the given method
|
|
1090
|
+
* @returns The typed return value or undefined if there was no value
|
|
523
1091
|
*/
|
|
524
|
-
|
|
525
|
-
return
|
|
1092
|
+
decodeReturnValue(method, returnValue) {
|
|
1093
|
+
return returnValue !== void 0 ? (0, import_app_arc56.getArc56ReturnValue)(
|
|
1094
|
+
returnValue,
|
|
1095
|
+
this.appClient.getABIMethod(method),
|
|
1096
|
+
APP_SPEC.structs
|
|
1097
|
+
) : void 0;
|
|
526
1098
|
}
|
|
527
1099
|
/**
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
*
|
|
531
|
-
*
|
|
532
|
-
* @param args The arguments for the contract call
|
|
533
|
-
* @param params Any additional parameters for the call
|
|
534
|
-
* @returns The result of the call: The name of the token
|
|
1100
|
+
* Returns a new `Arc200Client` client, resolving the app by creator address and name
|
|
1101
|
+
* using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).
|
|
1102
|
+
* @param params The parameters to create the app client
|
|
535
1103
|
*/
|
|
536
|
-
|
|
537
|
-
return
|
|
1104
|
+
static async fromCreatorAndName(params) {
|
|
1105
|
+
return new _Arc200Client(await import_app_client.AppClient.fromCreatorAndName({ ...params, appSpec: APP_SPEC }));
|
|
538
1106
|
}
|
|
539
1107
|
/**
|
|
540
|
-
*
|
|
1108
|
+
* Returns an `Arc200Client` instance for the current network based on
|
|
1109
|
+
* pre-determined network-specific app IDs specified in the ARC-56 app spec.
|
|
541
1110
|
*
|
|
542
|
-
*
|
|
543
|
-
*
|
|
544
|
-
* @param args The arguments for the contract call
|
|
545
|
-
* @param params Any additional parameters for the call
|
|
546
|
-
* @returns The result of the call: The symbol of the token
|
|
1111
|
+
* If no IDs are in the app spec or the network isn't recognised, an error is thrown.
|
|
1112
|
+
* @param params The parameters to create the app client
|
|
547
1113
|
*/
|
|
548
|
-
|
|
549
|
-
return
|
|
1114
|
+
static async fromNetwork(params) {
|
|
1115
|
+
return new _Arc200Client(await import_app_client.AppClient.fromNetwork({ ...params, appSpec: APP_SPEC }));
|
|
1116
|
+
}
|
|
1117
|
+
/** The ID of the app instance this client is linked to. */
|
|
1118
|
+
get appId() {
|
|
1119
|
+
return this.appClient.appId;
|
|
1120
|
+
}
|
|
1121
|
+
/** The app address of the app instance this client is linked to. */
|
|
1122
|
+
get appAddress() {
|
|
1123
|
+
return this.appClient.appAddress;
|
|
1124
|
+
}
|
|
1125
|
+
/** The name of the app. */
|
|
1126
|
+
get appName() {
|
|
1127
|
+
return this.appClient.appName;
|
|
1128
|
+
}
|
|
1129
|
+
/** The ARC-56 app spec being used */
|
|
1130
|
+
get appSpec() {
|
|
1131
|
+
return this.appClient.appSpec;
|
|
1132
|
+
}
|
|
1133
|
+
/** A reference to the underlying `AlgorandClient` this app client is using. */
|
|
1134
|
+
get algorand() {
|
|
1135
|
+
return this.appClient.algorand;
|
|
550
1136
|
}
|
|
551
1137
|
/**
|
|
552
|
-
*
|
|
553
|
-
*
|
|
554
|
-
* Returns the decimals of the token
|
|
1138
|
+
* Clone this app client with different params
|
|
555
1139
|
*
|
|
556
|
-
* @param
|
|
557
|
-
* @
|
|
558
|
-
* @returns The result of the call: The decimals of the token
|
|
1140
|
+
* @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value.
|
|
1141
|
+
* @returns A new app client with the altered params
|
|
559
1142
|
*/
|
|
560
|
-
|
|
561
|
-
return this.
|
|
1143
|
+
clone(params) {
|
|
1144
|
+
return new _Arc200Client(this.appClient.clone(params));
|
|
562
1145
|
}
|
|
563
1146
|
/**
|
|
564
|
-
*
|
|
1147
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_name()byte[32]` ABI method.
|
|
565
1148
|
*
|
|
566
|
-
*
|
|
1149
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1150
|
+
*
|
|
1151
|
+
* Returns the name of the token
|
|
567
1152
|
*
|
|
568
|
-
* @param
|
|
569
|
-
* @
|
|
570
|
-
* @returns The result of the call: The total supply of the token
|
|
1153
|
+
* @param params The params for the smart contract call
|
|
1154
|
+
* @returns The call result: The name of the token
|
|
571
1155
|
*/
|
|
572
|
-
|
|
573
|
-
|
|
1156
|
+
async arc200Name(params = {
|
|
1157
|
+
args: []
|
|
1158
|
+
}) {
|
|
1159
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Name(params));
|
|
1160
|
+
return result.return;
|
|
574
1161
|
}
|
|
575
1162
|
/**
|
|
576
|
-
*
|
|
1163
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_symbol()byte[8]` ABI method.
|
|
577
1164
|
*
|
|
578
|
-
*
|
|
1165
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1166
|
+
*
|
|
1167
|
+
* Returns the symbol of the token
|
|
579
1168
|
*
|
|
580
|
-
* @param
|
|
581
|
-
* @
|
|
582
|
-
* @returns The result of the call: The current balance of the holder of the token
|
|
1169
|
+
* @param params The params for the smart contract call
|
|
1170
|
+
* @returns The call result: The symbol of the token
|
|
583
1171
|
*/
|
|
584
|
-
|
|
585
|
-
|
|
1172
|
+
async arc200Symbol(params = {
|
|
1173
|
+
args: []
|
|
1174
|
+
}) {
|
|
1175
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Symbol(params));
|
|
1176
|
+
return result.return;
|
|
586
1177
|
}
|
|
587
1178
|
/**
|
|
588
|
-
*
|
|
1179
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_decimals()uint8` ABI method.
|
|
589
1180
|
*
|
|
590
|
-
*
|
|
1181
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1182
|
+
*
|
|
1183
|
+
* Returns the decimals of the token
|
|
591
1184
|
*
|
|
592
|
-
* @param
|
|
593
|
-
* @
|
|
594
|
-
* @returns The result of the call: Success
|
|
1185
|
+
* @param params The params for the smart contract call
|
|
1186
|
+
* @returns The call result: The decimals of the token
|
|
595
1187
|
*/
|
|
596
|
-
|
|
597
|
-
|
|
1188
|
+
async arc200Decimals(params = {
|
|
1189
|
+
args: []
|
|
1190
|
+
}) {
|
|
1191
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Decimals(params));
|
|
1192
|
+
return result.return;
|
|
598
1193
|
}
|
|
599
1194
|
/**
|
|
600
|
-
*
|
|
1195
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_totalSupply()uint256` ABI method.
|
|
601
1196
|
*
|
|
602
|
-
*
|
|
1197
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1198
|
+
*
|
|
1199
|
+
* Returns the total supply of the token
|
|
603
1200
|
*
|
|
604
|
-
* @param
|
|
605
|
-
* @
|
|
606
|
-
* @returns The result of the call: Success
|
|
1201
|
+
* @param params The params for the smart contract call
|
|
1202
|
+
* @returns The call result: The total supply of the token
|
|
607
1203
|
*/
|
|
608
|
-
|
|
609
|
-
|
|
1204
|
+
async arc200TotalSupply(params = { args: [] }) {
|
|
1205
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200TotalSupply(params));
|
|
1206
|
+
return result.return;
|
|
610
1207
|
}
|
|
611
1208
|
/**
|
|
612
|
-
*
|
|
1209
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_balanceOf(address)uint256` ABI method.
|
|
613
1210
|
*
|
|
614
|
-
*
|
|
1211
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1212
|
+
*
|
|
1213
|
+
* Returns the current balance of the owner of the token
|
|
615
1214
|
*
|
|
616
|
-
* @param
|
|
617
|
-
* @
|
|
618
|
-
* @returns The result of the call: Success
|
|
1215
|
+
* @param params The params for the smart contract call
|
|
1216
|
+
* @returns The call result: The current balance of the holder of the token
|
|
619
1217
|
*/
|
|
620
|
-
|
|
621
|
-
|
|
1218
|
+
async arc200BalanceOf(params) {
|
|
1219
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200BalanceOf(params));
|
|
1220
|
+
return result.return;
|
|
622
1221
|
}
|
|
623
1222
|
/**
|
|
624
|
-
*
|
|
1223
|
+
* Makes a readonly (simulated) call to the Arc200 smart contract using the `arc200_allowance(address,address)uint256` ABI method.
|
|
1224
|
+
*
|
|
1225
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
625
1226
|
*
|
|
626
1227
|
* Returns the current allowance of the spender of the tokens of the owner
|
|
627
1228
|
*
|
|
628
|
-
* @param
|
|
629
|
-
* @
|
|
630
|
-
* @returns The result of the call: The remaining allowance
|
|
1229
|
+
* @param params The params for the smart contract call
|
|
1230
|
+
* @returns The call result: The remaining allowance
|
|
631
1231
|
*/
|
|
632
|
-
arc200Allowance(
|
|
633
|
-
|
|
1232
|
+
async arc200Allowance(params) {
|
|
1233
|
+
const result = await this.appClient.send.call(Arc200ParamsFactory.arc200Allowance(params));
|
|
1234
|
+
return result.return;
|
|
634
1235
|
}
|
|
635
|
-
|
|
1236
|
+
newGroup() {
|
|
636
1237
|
const client = this;
|
|
637
|
-
const
|
|
1238
|
+
const composer = this.algorand.newGroup();
|
|
638
1239
|
let promiseChain = Promise.resolve();
|
|
639
1240
|
const resultMappers = [];
|
|
640
1241
|
return {
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
1242
|
+
/**
|
|
1243
|
+
* Add a bootstrap(byte[],byte[],uint8,uint256)bool method call against the Arc200 contract
|
|
1244
|
+
*/
|
|
1245
|
+
bootstrap(params) {
|
|
1246
|
+
promiseChain = promiseChain.then(
|
|
1247
|
+
async () => composer.addAppCallMethodCall(await client.params.bootstrap(params))
|
|
1248
|
+
);
|
|
1249
|
+
resultMappers.push((v) => client.decodeReturnValue("bootstrap(byte[],byte[],uint8,uint256)bool", v));
|
|
644
1250
|
return this;
|
|
645
1251
|
},
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
1252
|
+
/**
|
|
1253
|
+
* Add a arc200_name()byte[32] method call against the Arc200 contract
|
|
1254
|
+
*/
|
|
1255
|
+
arc200Name(params) {
|
|
1256
|
+
promiseChain = promiseChain.then(
|
|
1257
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Name(params))
|
|
1258
|
+
);
|
|
1259
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_name()byte[32]", v));
|
|
1260
|
+
return this;
|
|
1261
|
+
},
|
|
1262
|
+
/**
|
|
1263
|
+
* Add a arc200_symbol()byte[8] method call against the Arc200 contract
|
|
1264
|
+
*/
|
|
1265
|
+
arc200Symbol(params) {
|
|
1266
|
+
promiseChain = promiseChain.then(
|
|
1267
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Symbol(params))
|
|
1268
|
+
);
|
|
1269
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_symbol()byte[8]", v));
|
|
649
1270
|
return this;
|
|
650
1271
|
},
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
1272
|
+
/**
|
|
1273
|
+
* Add a arc200_decimals()uint8 method call against the Arc200 contract
|
|
1274
|
+
*/
|
|
1275
|
+
arc200Decimals(params) {
|
|
1276
|
+
promiseChain = promiseChain.then(
|
|
1277
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Decimals(params))
|
|
1278
|
+
);
|
|
1279
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_decimals()uint8", v));
|
|
654
1280
|
return this;
|
|
655
1281
|
},
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
1282
|
+
/**
|
|
1283
|
+
* Add a arc200_totalSupply()uint256 method call against the Arc200 contract
|
|
1284
|
+
*/
|
|
1285
|
+
arc200TotalSupply(params) {
|
|
1286
|
+
promiseChain = promiseChain.then(
|
|
1287
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200TotalSupply(params))
|
|
1288
|
+
);
|
|
1289
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_totalSupply()uint256", v));
|
|
659
1290
|
return this;
|
|
660
1291
|
},
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
1292
|
+
/**
|
|
1293
|
+
* Add a arc200_balanceOf(address)uint256 method call against the Arc200 contract
|
|
1294
|
+
*/
|
|
1295
|
+
arc200BalanceOf(params) {
|
|
1296
|
+
promiseChain = promiseChain.then(
|
|
1297
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200BalanceOf(params))
|
|
1298
|
+
);
|
|
1299
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_balanceOf(address)uint256", v));
|
|
664
1300
|
return this;
|
|
665
1301
|
},
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
1302
|
+
/**
|
|
1303
|
+
* Add a arc200_transfer(address,uint256)bool method call against the Arc200 contract
|
|
1304
|
+
*/
|
|
1305
|
+
arc200Transfer(params) {
|
|
1306
|
+
promiseChain = promiseChain.then(
|
|
1307
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Transfer(params))
|
|
1308
|
+
);
|
|
1309
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_transfer(address,uint256)bool", v));
|
|
669
1310
|
return this;
|
|
670
1311
|
},
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
1312
|
+
/**
|
|
1313
|
+
* Add a arc200_transferFrom(address,address,uint256)bool method call against the Arc200 contract
|
|
1314
|
+
*/
|
|
1315
|
+
arc200TransferFrom(params) {
|
|
1316
|
+
promiseChain = promiseChain.then(
|
|
1317
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200TransferFrom(params))
|
|
1318
|
+
);
|
|
1319
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_transferFrom(address,address,uint256)bool", v));
|
|
674
1320
|
return this;
|
|
675
1321
|
},
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
1322
|
+
/**
|
|
1323
|
+
* Add a arc200_approve(address,uint256)bool method call against the Arc200 contract
|
|
1324
|
+
*/
|
|
1325
|
+
arc200Approve(params) {
|
|
1326
|
+
promiseChain = promiseChain.then(
|
|
1327
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Approve(params))
|
|
1328
|
+
);
|
|
1329
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_approve(address,uint256)bool", v));
|
|
679
1330
|
return this;
|
|
680
1331
|
},
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
1332
|
+
/**
|
|
1333
|
+
* Add a arc200_allowance(address,address)uint256 method call against the Arc200 contract
|
|
1334
|
+
*/
|
|
1335
|
+
arc200Allowance(params) {
|
|
1336
|
+
promiseChain = promiseChain.then(
|
|
1337
|
+
async () => composer.addAppCallMethodCall(await client.params.arc200Allowance(params))
|
|
1338
|
+
);
|
|
1339
|
+
resultMappers.push((v) => client.decodeReturnValue("arc200_allowance(address,address)uint256", v));
|
|
684
1340
|
return this;
|
|
685
1341
|
},
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
1342
|
+
/**
|
|
1343
|
+
* Add a clear state call to the Arc200 contract
|
|
1344
|
+
*/
|
|
1345
|
+
clearState(params) {
|
|
1346
|
+
promiseChain = promiseChain.then(() => composer.addAppCall(client.params.clearState(params)));
|
|
689
1347
|
return this;
|
|
690
1348
|
},
|
|
691
|
-
addTransaction(txn,
|
|
692
|
-
promiseChain = promiseChain.then(
|
|
1349
|
+
addTransaction(txn, signer) {
|
|
1350
|
+
promiseChain = promiseChain.then(() => composer.addTransaction(txn, signer));
|
|
693
1351
|
return this;
|
|
694
1352
|
},
|
|
695
|
-
async
|
|
1353
|
+
async composer() {
|
|
696
1354
|
await promiseChain;
|
|
697
|
-
return
|
|
1355
|
+
return composer;
|
|
698
1356
|
},
|
|
699
1357
|
async simulate(options) {
|
|
700
1358
|
await promiseChain;
|
|
701
|
-
const result = await
|
|
1359
|
+
const result = await (!options ? composer.simulate() : composer.simulate(options));
|
|
702
1360
|
return {
|
|
703
1361
|
...result,
|
|
704
|
-
returns: result.
|
|
1362
|
+
returns: result.returns?.map(
|
|
1363
|
+
(val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue
|
|
1364
|
+
)
|
|
705
1365
|
};
|
|
706
1366
|
},
|
|
707
|
-
async
|
|
1367
|
+
async send(params) {
|
|
708
1368
|
await promiseChain;
|
|
709
|
-
const result = await
|
|
1369
|
+
const result = await composer.send(params);
|
|
710
1370
|
return {
|
|
711
1371
|
...result,
|
|
712
|
-
returns: result.returns?.map(
|
|
1372
|
+
returns: result.returns?.map(
|
|
1373
|
+
(val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val) : val.returnValue
|
|
1374
|
+
)
|
|
713
1375
|
};
|
|
714
1376
|
}
|
|
715
1377
|
};
|
|
@@ -718,18 +1380,20 @@ var Arc200Client = class {
|
|
|
718
1380
|
|
|
719
1381
|
// src/getArc200Client.ts
|
|
720
1382
|
var getArc200Client = (input) => {
|
|
721
|
-
return new Arc200Client(
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
input.
|
|
728
|
-
|
|
1383
|
+
return new Arc200Client({
|
|
1384
|
+
algorand: input.algorand,
|
|
1385
|
+
appId: input.appId,
|
|
1386
|
+
appName: input.appName,
|
|
1387
|
+
approvalSourceMap: input.approvalSourceMap,
|
|
1388
|
+
clearSourceMap: input.clearSourceMap,
|
|
1389
|
+
defaultSender: input.defaultSender,
|
|
1390
|
+
defaultSigner: input.defaultSigner
|
|
1391
|
+
});
|
|
729
1392
|
};
|
|
730
|
-
var getArc200Client_default = getArc200Client;
|
|
731
1393
|
// Annotate the CommonJS export names for ESM import in node:
|
|
732
1394
|
0 && (module.exports = {
|
|
1395
|
+
Arc200Client,
|
|
1396
|
+
Arc200Factory,
|
|
733
1397
|
getArc200Client
|
|
734
1398
|
});
|
|
735
1399
|
//# sourceMappingURL=index.js.map
|