@alpha-arcade/sdk 0.2.9 → 0.2.11
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/README.md +21 -0
- package/dist/index.cjs +795 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -1
- package/dist/index.d.ts +36 -1
- package/dist/index.js +794 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var algosdk2 = require('algosdk');
|
|
4
|
-
var
|
|
4
|
+
var algokit4 = require('@algorandfoundation/algokit-utils');
|
|
5
5
|
var decimal_js = require('decimal.js');
|
|
6
6
|
|
|
7
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
var algosdk2__default = /*#__PURE__*/_interopDefault(algosdk2);
|
|
28
|
-
var
|
|
28
|
+
var algokit4__namespace = /*#__PURE__*/_interopNamespace(algokit4);
|
|
29
29
|
|
|
30
30
|
// src/modules/trading.ts
|
|
31
31
|
var APP_SPEC = {
|
|
@@ -606,7 +606,7 @@ var MarketAppClient = class _MarketAppClient {
|
|
|
606
606
|
constructor(appDetails, algod) {
|
|
607
607
|
this.algod = algod;
|
|
608
608
|
this.sender = appDetails.sender;
|
|
609
|
-
this.appClient =
|
|
609
|
+
this.appClient = algokit4__namespace.getAppClient({
|
|
610
610
|
...appDetails,
|
|
611
611
|
app: APP_SPEC
|
|
612
612
|
}, algod);
|
|
@@ -1004,7 +1004,7 @@ var MarketAppClient = class _MarketAppClient {
|
|
|
1004
1004
|
return this;
|
|
1005
1005
|
},
|
|
1006
1006
|
addTransaction(txn, defaultSender) {
|
|
1007
|
-
promiseChain = promiseChain.then(async () => atc.addTransaction(await
|
|
1007
|
+
promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
|
|
1008
1008
|
return this;
|
|
1009
1009
|
},
|
|
1010
1010
|
async atc() {
|
|
@@ -1021,7 +1021,7 @@ var MarketAppClient = class _MarketAppClient {
|
|
|
1021
1021
|
},
|
|
1022
1022
|
async execute(sendParams) {
|
|
1023
1023
|
await promiseChain;
|
|
1024
|
-
const result = await
|
|
1024
|
+
const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
|
|
1025
1025
|
return {
|
|
1026
1026
|
...result,
|
|
1027
1027
|
returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
|
|
@@ -1165,7 +1165,7 @@ var MatcherAppClient = class {
|
|
|
1165
1165
|
constructor(appDetails, algod) {
|
|
1166
1166
|
this.algod = algod;
|
|
1167
1167
|
this.sender = appDetails.sender;
|
|
1168
|
-
this.appClient =
|
|
1168
|
+
this.appClient = algokit4__namespace.getAppClient({
|
|
1169
1169
|
...appDetails,
|
|
1170
1170
|
app: APP_SPEC2
|
|
1171
1171
|
}, algod);
|
|
@@ -1267,7 +1267,7 @@ var MatcherAppClient = class {
|
|
|
1267
1267
|
return this;
|
|
1268
1268
|
},
|
|
1269
1269
|
addTransaction(txn, defaultSender) {
|
|
1270
|
-
promiseChain = promiseChain.then(async () => atc.addTransaction(await
|
|
1270
|
+
promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
|
|
1271
1271
|
return this;
|
|
1272
1272
|
},
|
|
1273
1273
|
async atc() {
|
|
@@ -1284,7 +1284,693 @@ var MatcherAppClient = class {
|
|
|
1284
1284
|
},
|
|
1285
1285
|
async execute(sendParams) {
|
|
1286
1286
|
await promiseChain;
|
|
1287
|
-
const result = await
|
|
1287
|
+
const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
|
|
1288
|
+
return {
|
|
1289
|
+
...result,
|
|
1290
|
+
returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
|
|
1291
|
+
};
|
|
1292
|
+
}
|
|
1293
|
+
};
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1296
|
+
var APP_SPEC3 = {
|
|
1297
|
+
"hints": {
|
|
1298
|
+
"on_create()uint8": {
|
|
1299
|
+
"call_config": {
|
|
1300
|
+
"no_op": "CREATE"
|
|
1301
|
+
}
|
|
1302
|
+
},
|
|
1303
|
+
"setup(string,string,string,string,string)uint8": {
|
|
1304
|
+
"call_config": {
|
|
1305
|
+
"no_op": "CALL"
|
|
1306
|
+
}
|
|
1307
|
+
},
|
|
1308
|
+
"match_maker(application,uint64)uint8": {
|
|
1309
|
+
"call_config": {
|
|
1310
|
+
"no_op": "CALL"
|
|
1311
|
+
}
|
|
1312
|
+
},
|
|
1313
|
+
"amend_order(uint64,uint64,uint64)uint8": {
|
|
1314
|
+
"call_config": {
|
|
1315
|
+
"no_op": "CALL"
|
|
1316
|
+
}
|
|
1317
|
+
},
|
|
1318
|
+
"match_taker(application)uint64": {
|
|
1319
|
+
"call_config": {
|
|
1320
|
+
"no_op": "CALL"
|
|
1321
|
+
}
|
|
1322
|
+
},
|
|
1323
|
+
"delete()uint8": {
|
|
1324
|
+
"call_config": {
|
|
1325
|
+
"delete_application": "CALL"
|
|
1326
|
+
}
|
|
1327
|
+
},
|
|
1328
|
+
"on_update()uint64": {
|
|
1329
|
+
"call_config": {
|
|
1330
|
+
"update_application": "CALL"
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
},
|
|
1334
|
+
"source": {
|
|
1335
|
+
"approval": "I3ByYWdtYSB2ZXJzaW9uIDgKaW50Y2Jsb2NrIDAgMSAxMDAwMDAwIDQgMjU2IDEwMDAwMDAwMDAwMDAwMDAwMDAKYnl0ZWNibG9jayAweDZkNjE3MjZiNjU3NDVmNjE3MDcwNWY2OTY0IDB4NzA2ZjczNjk3NDY5NmY2ZSAweDcwNzI2OTYzNjUgMHg3MzY5NjQ2NSAweDczNmM2OTcwNzA2MTY3NjUgMHg2Zjc3NmU2NTcyIDB4NzE3NTYxNmU3NDY5NzQ3OSAweDY2NjU2NTVmNzQ2OTZkNjU3MjVmNzM3NDYxNzI3NCAweDcxNzU2MTZlNzQ2OTc0Nzk1ZjY2Njk2YzZjNjU2NCAweDYzNmY2YzZjNjE3NDY1NzI2MTZjNWY2MTczNzM2NTc0NWY2OTY0IDB4MTUxZjdjNzUgMHg3OTY1NzM1ZjYxNzM3MzY1NzQ1ZjY5NjQgMHg2ZTZmNWY2MTczNzM2NTc0NWY2OTY0IDB4NjY2NTY1NWY2MjYxNzM2NTVmNzA2NTcyNjM2NTZlNzQgMHgwMCAweDYxNzM3MzY1NzQ1ZjZjNjk3Mzc0NjU2NCAweDY2NjU2NTVmNjE2NDY0NzI2NTczNzMgMHg5NTRlN2Q3MiAweDMyY2UyODFlIDB4YzkxZTg4ZjUgMHhkYjkyMmZjMiAweCAweGJhMWRlZWY1CnR4biBOdW1BcHBBcmdzCmludGNfMCAvLyAwCj09CmJueiBtYWluX2wxNgp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweDQzZGI2MmExIC8vICJvbl9jcmVhdGUoKXVpbnQ4Igo9PQpibnogbWFpbl9sMTUKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxNyAvLyAic2V0dXAoc3RyaW5nLHN0cmluZyxzdHJpbmcsc3RyaW5nLHN0cmluZyl1aW50OCIKPT0KYm56IG1haW5fbDE0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTggLy8gIm1hdGNoX21ha2VyKGFwcGxpY2F0aW9uLHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDEzCnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTkgLy8gImFtZW5kX29yZGVyKHVpbnQ2NCx1aW50NjQsdWludDY0KXVpbnQ4Igo9PQpibnogbWFpbl9sMTIKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAyMCAvLyAibWF0Y2hfdGFrZXIoYXBwbGljYXRpb24pdWludDY0Igo9PQpibnogbWFpbl9sMTEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApwdXNoYnl0ZXMgMHgxMTllM2M0YiAvLyAiZGVsZXRlKCl1aW50OCIKPT0KYm56IG1haW5fbDEwCnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4MjRjM2QyMzQgLy8gIm9uX3VwZGF0ZSgpdWludDY0Igo9PQpibnogbWFpbl9sOQplcnIKbWFpbl9sOToKdHhuIE9uQ29tcGxldGlvbgppbnRjXzMgLy8gVXBkYXRlQXBwbGljYXRpb24KPT0KdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKIT0KJiYKYXNzZXJ0CmNhbGxzdWIgb251cGRhdGVjYXN0ZXJfMzMKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEwOgp0eG4gT25Db21wbGV0aW9uCnB1c2hpbnQgNSAvLyBEZWxldGVBcHBsaWNhdGlvbgo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiBkZWxldGVjYXN0ZXJfMzIKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDExOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIG1hdGNodGFrZXJjYXN0ZXJfMzEKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEyOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIGFtZW5kb3JkZXJjYXN0ZXJfMzAKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEzOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIG1hdGNobWFrZXJjYXN0ZXJfMjkKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDE0Ogp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIHNldHVwY2FzdGVyXzI4CmludGNfMSAvLyAxCnJldHVybgptYWluX2wxNToKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAo9PQomJgphc3NlcnQKY2FsbHN1YiBvbmNyZWF0ZWNhc3Rlcl8yNwppbnRjXzEgLy8gMQpyZXR1cm4KbWFpbl9sMTY6CnR4biBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KYm56IG1haW5fbDE4CmVycgptYWluX2wxODoKdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKPT0KYXNzZXJ0CmNhbGxzdWIgY3JlYXRlXzgKaW50Y18xIC8vIDEKcmV0dXJuCgovLyBkaXZfcm91bmQKZGl2cm91bmRfMDoKcHJvdG8gMiAxCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKLwpzdG9yZSA5CmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKJQpwdXNoaW50IDUwMCAvLyA1MDAKPgpibnogZGl2cm91bmRfMF9sMgpsb2FkIDkKcmV0c3ViCmRpdnJvdW5kXzBfbDI6CmxvYWQgOQppbnRjXzEgLy8gMQorCnJldHN1YgoKLy8gZGl2X2NlaWxfYnl0ZXMKZGl2Y2VpbGJ5dGVzXzE6CnByb3RvIDIgMQpmcmFtZV9kaWcgLTIKZnJhbWVfZGlnIC0xCmIvCnN0b3JlIDE3CmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKYiUKbGVuCmludGNfMCAvLyAwCj4KYm56IGRpdmNlaWxieXRlc18xX2wyCmxvYWQgMTcKcmV0c3ViCmRpdmNlaWxieXRlc18xX2wyOgpsb2FkIDE3CmludGNfMSAvLyAxCml0b2IKYisKcmV0c3ViCgovLyBjYWxjdWxhdGVfZmVlCmNhbGN1bGF0ZWZlZV8yOgpwcm90byAzIDEKZnJhbWVfZGlnIC0zCml0b2IKc3RvcmUgMgpmcmFtZV9kaWcgLTIKaXRvYgpzdG9yZSAzCmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgotCml0b2IKc3RvcmUgNApsb2FkIDIKbG9hZCAzCmIqCnN0b3JlIDIKbG9hZCAyCmxvYWQgNApiKgpzdG9yZSAyCmxvYWQgMgpmcmFtZV9kaWcgLTEKaXRvYgpiKgpzdG9yZSAyCmxvYWQgMgppbnRjIDUgLy8gMTAwMDAwMDAwMDAwMDAwMDAwMAppdG9iCmIvCmJ0b2kKcmV0c3ViCgovLyBjYWxjdWxhdGVfZmVlX2NvbW1pdApjYWxjdWxhdGVmZWVjb21taXRfMzoKcHJvdG8gMyAxCmZyYW1lX2RpZyAtMwppdG9iCnN0b3JlIDE0CmZyYW1lX2RpZyAtMgppdG9iCnN0b3JlIDE1CmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgotCml0b2IKc3RvcmUgMTYKbG9hZCAxNApsb2FkIDE1CmIqCnN0b3JlIDE0CmxvYWQgMTQKbG9hZCAxNgpiKgpzdG9yZSAxNApsb2FkIDE0CmZyYW1lX2RpZyAtMQppdG9iCmIqCnN0b3JlIDE0CmxvYWQgMTQKaW50YyA1IC8vIDEwMDAwMDAwMDAwMDAwMDAwMDAKaXRvYgpjYWxsc3ViIGRpdmNlaWxieXRlc18xCmJ0b2kKcmV0c3ViCgovLyBnbG9iYWxfbXVzdF9nZXQKZ2xvYmFsbXVzdGdldF80Ogpwcm90byAyIDEKZnJhbWVfZGlnIC0yCmZyYW1lX2RpZyAtMQphcHBfZ2xvYmFsX2dldF9leApzdG9yZSAxCnN0b3JlIDAKbG9hZCAxCmFzc2VydApsb2FkIDAKcmV0c3ViCgovLyBnZXRfYXBwX2FkZHIKZ2V0YXBwYWRkcl81Ogpwcm90byAxIDEKZnJhbWVfZGlnIC0xCmFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKc3RvcmUgNgpzdG9yZSA1CmxvYWQgNgphc3NlcnQKbG9hZCA1CnJldHN1YgoKLy8gc2VuZF9hc3NldApzZW5kYXNzZXRfNjoKcHJvdG8gNCAwCml0eG5fYmVnaW4KaW50Y18zIC8vIGF4ZmVyCml0eG5fZmllbGQgVHlwZUVudW0KZnJhbWVfZGlnIC00Cml0eG5fZmllbGQgU2VuZGVyCmZyYW1lX2RpZyAtMwppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmZyYW1lX2RpZyAtMgppdHhuX2ZpZWxkIFhmZXJBc3NldApmcmFtZV9kaWcgLTEKaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCml0eG5fc3VibWl0CnJldHN1YgoKLy8gZ2V0X2Z1bmRzX3RvX3RyYWRlcgpnZXRmdW5kc3RvdHJhZGVyXzc6CnByb3RvIDQgMApmcmFtZV9kaWcgLTQKZnJhbWVfZGlnIC0yCmFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQpzdG9yZSA4CnN0b3JlIDcKbG9hZCA4CmJueiBnZXRmdW5kc3RvdHJhZGVyXzdfbDIKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKY2FsbHN1YiBzZW5kYXNzZXRfNgpiIGdldGZ1bmRzdG90cmFkZXJfN19sMwpnZXRmdW5kc3RvdHJhZGVyXzdfbDI6Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpmcmFtZV9kaWcgLTIKZnJhbWVfZGlnIC00CmNhbGxzdWIgc2VuZGFzc2V0XzYKZ2V0ZnVuZHN0b3RyYWRlcl83X2wzOgpyZXRzdWIKCi8vIGNyZWF0ZQpjcmVhdGVfODoKcHJvdG8gMCAwCmJ5dGVjIDE1IC8vICJhc3NldF9saXN0ZWQiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNSAvLyAib3duZXIiCmJ5dGVjIDIxIC8vICIiCmFwcF9nbG9iYWxfcHV0CmJ5dGVjXzEgLy8gInBvc2l0aW9uIgppbnRjXzAgLy8gMAphcHBfZ2xvYmFsX3B1dApieXRlY18yIC8vICJwcmljZSIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMyAvLyAic2lkZSIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CnJldHN1YgoKLy8gb25fY3JlYXRlCm9uY3JlYXRlXzk6CnByb3RvIDAgMQppbnRjXzAgLy8gMAppbnRjXzEgLy8gMQpmcmFtZV9idXJ5IDAKZnJhbWVfZGlnIDAKaW50YyA0IC8vIDI1Ngo8CmFzc2VydApyZXRzdWIKCi8vIHNldHVwCnNldHVwXzEwOgpwcm90byA1IDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpnbG9iYWwgQ3JlYXRvckFkZHJlc3MKPT0KLy8gdW5hdXRob3JpemVkCmFzc2VydAp0eG4gVHlwZUVudW0KcHVzaGludCA2IC8vIGFwcGwKPT0KYXNzZXJ0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTcgLy8gInNldHVwKHN0cmluZyxzdHJpbmcsc3RyaW5nLHN0cmluZyxzdHJpbmcpdWludDgiCj09CmFzc2VydApmcmFtZV9kaWcgLTUKZXh0cmFjdCAyIDAKYnRvaQppbnRjXzAgLy8gMAo9PQpmcmFtZV9kaWcgLTUKZXh0cmFjdCAyIDAKYnRvaQppbnRjXzEgLy8gMQo9PQp8fAphc3NlcnQKZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKaW50Y18wIC8vIDAKPT0KZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKaW50Y18xIC8vIDEKPT0KfHwKYXNzZXJ0CmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmludGNfMCAvLyAwCj4KYXNzZXJ0CmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmludGNfMiAvLyAxMDAwMDAwCjwKYXNzZXJ0CmZyYW1lX2RpZyAtMgpleHRyYWN0IDIgMApidG9pCmludGNfMCAvLyAwCj4KYXNzZXJ0CmJ5dGVjIDE1IC8vICJhc3NldF9saXN0ZWQiCmludGNfMCAvLyAwCnR4bmFzIEFzc2V0cwphcHBfZ2xvYmFsX3B1dApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgpnbG9iYWwgQ2FsbGVyQXBwbGljYXRpb25JRAphcHBfZ2xvYmFsX3B1dApieXRlY18xIC8vICJwb3NpdGlvbiIKZnJhbWVfZGlnIC01CmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMyAvLyAic2lkZSIKZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmZyYW1lX2RpZyAtMgpleHRyYWN0IDIgMApidG9pCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMiAvLyAicHJpY2UiCmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDUgLy8gIm93bmVyIgppbnRjXzEgLy8gMQp0eG5hcyBBY2NvdW50cwphcHBfZ2xvYmFsX3B1dApieXRlYyA0IC8vICJzbGlwcGFnZSIKZnJhbWVfZGlnIC0xCmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKaW50Y18wIC8vIDAKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKY2FsbHN1YiBzZW5kYXNzZXRfNgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwppbnRjXzAgLy8gMApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpjYWxsc3ViIHNlbmRhc3NldF82Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmludGNfMCAvLyAwCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEyIC8vICJub19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKY2FsbHN1YiBzZW5kYXNzZXRfNgpieXRlYyA3IC8vICJmZWVfdGltZXJfc3RhcnQiCmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGMgNCAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyB2YWxpZGF0ZV9tYXRjaF9ncm91cAp2YWxpZGF0ZW1hdGNoZ3JvdXBfMTE6CnByb3RvIDEgMAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAyMCAvLyAibWF0Y2hfdGFrZXIoYXBwbGljYXRpb24pdWludDY0Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBBcHBsaWNhdGlvbklECmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgVHlwZUVudW0KcHVzaGludCA2IC8vIGFwcGwKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnNhIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDIyIC8vICJwcm9jZXNzX3BvdGVudGlhbF9tYXRjaChhcHBsaWNhdGlvbixhcHBsaWNhdGlvbil1aW50OCIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgQXBwbGljYXRpb25JRApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldAo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CmFzc2VydApyZXRzdWIKCi8vIGhhbmRsZV9mZWVfdHJhbnNmZXIKaGFuZGxlZmVldHJhbnNmZXJfMTI6CnByb3RvIDUgMApmcmFtZV9kaWcgLTUKZnJhbWVfZGlnIC00CmZyYW1lX2RpZyAtMwpmcmFtZV9kaWcgLTIKY2FsbHN1YiBjYWxjdWxhdGVmZWVfMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyA5IC8vICJjb2xsYXRlcmFsX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTEKY2FsbHN1YiBzZW5kYXNzZXRfNgpyZXRzdWIKCi8vIGhhbmRsZV9iaWRfYXNrX21ha2VyX2JpZApoYW5kbGViaWRhc2ttYWtlcmJpZF8xMzoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQo+PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZnJhbWVfZGlnIC0xCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldAoqCmludGNfMiAvLyAxMDAwMDAwCi8KZnJhbWVfZGlnIC0xCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMyAvLyAiZmVlX2Jhc2VfcGVyY2VudCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBjYWxjdWxhdGVmZWVfMgotCmNhbGxzdWIgZ2V0ZnVuZHN0b3RyYWRlcl83Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDE2IC8vICJmZWVfYWRkcmVzcyIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBoYW5kbGVmZWV0cmFuc2Zlcl8xMgpyZXRzdWIKCi8vIGhhbmRsZV9iaWRfYXNrX21ha2VyX2FzawpoYW5kbGViaWRhc2ttYWtlcmFza18xNDoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKwo8PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGViaWRhc2ttYWtlcmFza18xNF9sMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wzCmhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wzOgpmcmFtZV9kaWcgLTEKY2FsbHN1YiBnZXRmdW5kc3RvdHJhZGVyXzcKcmV0c3ViCgovLyBoYW5kbGVfbWFrZXJfYmlkX2JpZF9jb21wbGVtZW50CmhhbmRsZW1ha2VyYmlkYmlkY29tcGxlbWVudF8xNToKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CisKZnJhbWVfZGlnIC0yCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAorCmludGNfMiAvLyAxMDAwMDAwCj49CmFzc2VydApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpmcmFtZV9kaWcgLTEKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CioKaW50Y18yIC8vIDEwMDAwMDAKY2FsbHN1YiBkaXZyb3VuZF8wCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKcmV0c3ViCgovLyBoYW5kbGVfbWFrZXJfYXNrX2Fza19jb21wbGVtZW50CmhhbmRsZW1ha2VyYXNrYXNrY29tcGxlbWVudF8xNjoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQorCmludGNfMiAvLyAxMDAwMDAwCjw9CmFzc2VydApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpmcmFtZV9kaWcgLTEKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTZfbDIKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTEgLy8gInllc19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKYiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTZfbDMKaGFuZGxlbWFrZXJhc2thc2tjb21wbGVtZW50XzE2X2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZW1ha2VyYXNrYXNrY29tcGxlbWVudF8xNl9sMzoKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKY2FsbHN1YiBnZXRhcHBhZGRyXzUKY2FsbHN1YiBzZW5kYXNzZXRfNgpyZXRzdWIKCi8vIG1hdGNoX21ha2VyCm1hdGNobWFrZXJfMTc6CnByb3RvIDIgMQppbnRjXzAgLy8gMApmcmFtZV9kaWcgLTIKY2FsbHN1YiB2YWxpZGF0ZW1hdGNoZ3JvdXBfMTEKZnJhbWVfZGlnIC0xCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0Ci0KPD0KYXNzZXJ0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAppbnRjXzAgLy8gMAo+CmJueiBtYXRjaG1ha2VyXzE3X2wxMQptYXRjaG1ha2VyXzE3X2wxOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpibnogbWF0Y2htYWtlcl8xN19sMTAKbWF0Y2htYWtlcl8xN19sMjoKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDkKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDgKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDcKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYnogbWF0Y2htYWtlcl8xN19sMTIKZnJhbWVfZGlnIC0yCnR4bmFzIEFwcGxpY2F0aW9ucwpmcmFtZV9kaWcgLTEKY2FsbHN1YiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTYKYiBtYXRjaG1ha2VyXzE3X2wxMgptYXRjaG1ha2VyXzE3X2w3OgpmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmZyYW1lX2RpZyAtMQpjYWxsc3ViIGhhbmRsZW1ha2VyYmlkYmlkY29tcGxlbWVudF8xNQpiIG1hdGNobWFrZXJfMTdfbDEyCm1hdGNobWFrZXJfMTdfbDg6CmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKZnJhbWVfZGlnIC0xCmNhbGxzdWIgaGFuZGxlYmlkYXNrbWFrZXJhc2tfMTQKYiBtYXRjaG1ha2VyXzE3X2wxMgptYXRjaG1ha2VyXzE3X2w5OgpmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmZyYW1lX2RpZyAtMQpjYWxsc3ViIGhhbmRsZWJpZGFza21ha2VyYmlkXzEzCmIgbWF0Y2htYWtlcl8xN19sMTIKbWF0Y2htYWtlcl8xN19sMTA6Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldApwdXNoaW50IDEyMCAvLyAxMjAKKwo8CmFzc2VydApiIG1hdGNobWFrZXJfMTdfbDIKbWF0Y2htYWtlcl8xN19sMTE6CmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj4KYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPD0KJiYKYXNzZXJ0CmIgbWF0Y2htYWtlcl8xN19sMQptYXRjaG1ha2VyXzE3X2wxMjoKYnl0ZWMgOCAvLyAicXVhbnRpdHlfZmlsbGVkIgpieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0CmZyYW1lX2RpZyAtMQorCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gdmFsaWRhdGVfdGFrZXJfbWF0Y2hfZ3JvdXAKdmFsaWRhdGV0YWtlcm1hdGNoZ3JvdXBfMTg6CnByb3RvIDEgMAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxOCAvLyAibWF0Y2hfbWFrZXIoYXBwbGljYXRpb24sdWludDY0KXVpbnQ4Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBBcHBsaWNhdGlvbklECmZyYW1lX2RpZyAtMQo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBUeXBlRW51bQpwdXNoaW50IDYgLy8gYXBwbAo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhuc2EgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMjIgLy8gInByb2Nlc3NfcG90ZW50aWFsX21hdGNoKGFwcGxpY2F0aW9uLGFwcGxpY2F0aW9uKXVpbnQ4Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBBcHBsaWNhdGlvbklECmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0Cj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0Ci0KPD0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQphc3NlcnQKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2Fza19iaWQKaGFuZGxldGFrZXJiaWRhc2tiaWRfMTk6CnByb3RvIDIgMApieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0CisKZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo+PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZnJhbWVfZGlnIC0xCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKgppbnRjXzIgLy8gMTAwMDAwMAovCmNhbGxzdWIgZ2V0ZnVuZHN0b3RyYWRlcl83Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEzIC8vICJmZWVfYmFzZV9wZXJjZW50IgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxNiAvLyAiZmVlX2FkZHJlc3MiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmNhbGxzdWIgaGFuZGxlZmVldHJhbnNmZXJfMTIKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2Fza19hc2sKaGFuZGxldGFrZXJiaWRhc2thc2tfMjA6CnByb3RvIDIgMApieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0Ci0KZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo8PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGV0YWtlcmJpZGFza2Fza18yMF9sMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wzCmhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wzOgpmcmFtZV9kaWcgLTEKY2FsbHN1YiBnZXRmdW5kc3RvdHJhZGVyXzcKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2JpZF9jb21wbGVtZW50CmhhbmRsZXRha2VyYmlkYmlkY29tcGxlbWVudF8yMToKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CisKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0CisKaW50Y18yIC8vIDEwMDAwMDAKPj0KYXNzZXJ0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwppbnRjXzIgLy8gMTAwMDAwMApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80Ci0KPgpibnogaGFuZGxldGFrZXJiaWRiaWRjb21wbGVtZW50XzIxX2wyCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwpzdG9yZSAxOApiIGhhbmRsZXRha2VyYmlkYmlkY29tcGxlbWVudF8yMV9sMwpoYW5kbGV0YWtlcmJpZGJpZGNvbXBsZW1lbnRfMjFfbDI6CmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQpzdG9yZSAxOApoYW5kbGV0YWtlcmJpZGJpZGNvbXBsZW1lbnRfMjFfbDM6Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpsb2FkIDE4CioKaW50Y18yIC8vIDEwMDAwMDAKY2FsbHN1YiBkaXZyb3VuZF8wCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmxvYWQgMTgKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDE2IC8vICJmZWVfYWRkcmVzcyIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBoYW5kbGVmZWV0cmFuc2Zlcl8xMgpyZXRzdWIKCi8vIGhhbmRsZV90YWtlcl9hc2tfYXNrX2NvbXBsZW1lbnQKaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyOgpwcm90byAyIDAKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKwpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKLQppbnRjXzIgLy8gMTAwMDAwMAo8PQphc3NlcnQKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAotCmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQo8CmJueiBoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDUKaW50Y18yIC8vIDEwMDAwMDAKZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAotCnN0b3JlIDE5CmhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sMjoKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmJ5dGVjXzEgLy8gInBvc2l0aW9uIgphcHBfZ2xvYmFsX2dldAppbnRjXzAgLy8gMAo9PQpibnogaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyX2w0CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDExIC8vICJ5ZXNfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmIgaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyX2w2CmhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sNDoKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTIgLy8gIm5vX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sNgpoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDU6CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKLQpzdG9yZSAxOQpiIGhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sMgpoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDY6CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKcmV0c3ViCgovLyBhbWVuZF9vcmRlcgphbWVuZG9yZGVyXzIzOgpwcm90byAzIDEKaW50Y18wIC8vIDAKdHhuIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDE5IC8vICJhbWVuZF9vcmRlcih1aW50NjQsdWludDY0LHVpbnQ2NCl1aW50OCIKPT0KYXNzZXJ0CnR4biBTZW5kZXIKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cj09CmFzc2VydApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmFzc2VydApmcmFtZV9kaWcgLTMKaW50Y18wIC8vIDAKPgphc3NlcnQKZnJhbWVfZGlnIC0zCmludGNfMiAvLyAxMDAwMDAwCjwKYXNzZXJ0CmZyYW1lX2RpZyAtMgppbnRjXzAgLy8gMAo+CmFzc2VydApmcmFtZV9kaWcgLTMKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CiE9CmZyYW1lX2RpZyAtMgpieXRlYyA2IC8vICJxdWFudGl0eSIKYXBwX2dsb2JhbF9nZXQKIT0KfHwKZnJhbWVfZGlnIC0xCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAohPQp8fAphc3NlcnQKYnl0ZWNfMyAvLyAic2lkZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18xIC8vIDEKPT0KYm56IGFtZW5kb3JkZXJfMjNfbDUKYnl0ZWMgMTUgLy8gImFzc2V0X2xpc3RlZCIKYXBwX2dsb2JhbF9nZXQKc3RvcmUgMTMKZnJhbWVfZGlnIC0yCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldAo+CmJueiBhbWVuZG9yZGVyXzIzX2w0CmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKLQpzdG9yZSAxMgpsb2FkIDEyCmludGNfMCAvLyAwCj4KYnogYW1lbmRvcmRlcl8yM19sOQpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpsb2FkIDEyCmxvYWQgMTMKdHhuIFNlbmRlcgpjYWxsc3ViIHNlbmRhc3NldF82CmIgYW1lbmRvcmRlcl8yM19sOQphbWVuZG9yZGVyXzIzX2w0OgpmcmFtZV9kaWcgLTIKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0Ci0Kc3RvcmUgMTIKdHhuIEdyb3VwSW5kZXgKaW50Y18wIC8vIDAKPgphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBUeXBlRW51bQppbnRjXzMgLy8gYXhmZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgU2VuZGVyCnR4biBTZW5kZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRSZWNlaXZlcgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBYZmVyQXNzZXQKbG9hZCAxMwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBBc3NldEFtb3VudApsb2FkIDEyCj09CmFzc2VydApiIGFtZW5kb3JkZXJfMjNfbDkKYW1lbmRvcmRlcl8yM19sNToKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwoqCmludGNfMiAvLyAxMDAwMDAwCi8KYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMyAvLyAiZmVlX2Jhc2VfcGVyY2VudCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBjYWxjdWxhdGVmZWVjb21taXRfMworCnN0b3JlIDEwCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKZnJhbWVfZGlnIC0xCisKKgppbnRjXzIgLy8gMTAwMDAwMAovCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKZnJhbWVfZGlnIC0xCisKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmNhbGxzdWIgY2FsY3VsYXRlZmVlY29tbWl0XzMKKwpzdG9yZSAxMQpsb2FkIDExCmxvYWQgMTAKPgpibnogYW1lbmRvcmRlcl8yM19sOApsb2FkIDEwCmxvYWQgMTEKLQpzdG9yZSAxMgpsb2FkIDEyCmludGNfMCAvLyAwCj4KYnogYW1lbmRvcmRlcl8yM19sOQpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpsb2FkIDEyCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CnR4biBTZW5kZXIKY2FsbHN1YiBzZW5kYXNzZXRfNgpiIGFtZW5kb3JkZXJfMjNfbDkKYW1lbmRvcmRlcl8yM19sODoKbG9hZCAxMQpsb2FkIDEwCi0Kc3RvcmUgMTIKdHhuIEdyb3VwSW5kZXgKaW50Y18wIC8vIDAKPgphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBUeXBlRW51bQppbnRjXzMgLy8gYXhmZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgU2VuZGVyCnR4biBTZW5kZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRSZWNlaXZlcgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBYZmVyQXNzZXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRBbW91bnQKbG9hZCAxMgo9PQphc3NlcnQKYW1lbmRvcmRlcl8yM19sOToKYnl0ZWNfMiAvLyAicHJpY2UiCmZyYW1lX2RpZyAtMwphcHBfZ2xvYmFsX3B1dApieXRlYyA2IC8vICJxdWFudGl0eSIKZnJhbWVfZGlnIC0yCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpmcmFtZV9kaWcgLTEKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgpnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gbWF0Y2hfdGFrZXIKbWF0Y2h0YWtlcl8yNDoKcHJvdG8gMSAxCmludGNfMCAvLyAwCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKY2FsbHN1YiB2YWxpZGF0ZXRha2VybWF0Y2hncm91cF8xOApmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAppbnRjXzAgLy8gMAo+CmJueiBtYXRjaHRha2VyXzI0X2wxMQptYXRjaHRha2VyXzI0X2wxOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpibnogbWF0Y2h0YWtlcl8yNF9sMTAKbWF0Y2h0YWtlcl8yNF9sMjoKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDkKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDgKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDcKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYnogbWF0Y2h0YWtlcl8yNF9sMTIKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyCmIgbWF0Y2h0YWtlcl8yNF9sMTIKbWF0Y2h0YWtlcl8yNF9sNzoKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJiaWRiaWRjb21wbGVtZW50XzIxCmIgbWF0Y2h0YWtlcl8yNF9sMTIKbWF0Y2h0YWtlcl8yNF9sODoKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJiaWRhc2thc2tfMjAKYiBtYXRjaHRha2VyXzI0X2wxMgptYXRjaHRha2VyXzI0X2w5OgpmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnNhIEFwcGxpY2F0aW9uQXJncyAyCmJ0b2kKY2FsbHN1YiBoYW5kbGV0YWtlcmJpZGFza2JpZF8xOQpiIG1hdGNodGFrZXJfMjRfbDEyCm1hdGNodGFrZXJfMjRfbDEwOgpnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKYXBwX2dsb2JhbF9nZXQKcHVzaGludCAxMjAgLy8gMTIwCisKPAphc3NlcnQKYiBtYXRjaHRha2VyXzI0X2wyCm1hdGNodGFrZXJfMjRfbDExOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldAo8PQomJgphc3NlcnQKYiBtYXRjaHRha2VyXzI0X2wxCm1hdGNodGFrZXJfMjRfbDEyOgpieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKYXBwX2dsb2JhbF9nZXQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhuc2EgQXBwbGljYXRpb25BcmdzIDIKYnRvaQorCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApyZXRzdWIKCi8vIGRlbGV0ZQpkZWxldGVfMjU6CnByb3RvIDAgMQppbnRjXzAgLy8gMAp0eG4gU2VuZGVyCmdsb2JhbCBDcmVhdG9yQWRkcmVzcwo9PQp0eG4gU2VuZGVyCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CnB1c2hieXRlcyAweDY1NzM2MzcyNmY3NzVmNjM2MTZlNjM2NTZjNWY2MTY0NjQ3MjY1NzM3MyAvLyAiZXNjcm93X2NhbmNlbF9hZGRyZXNzIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo9PQp8fAphc3NlcnQKaXR4bl9iZWdpbgppbnRjXzMgLy8gYXhmZXIKaXR4bl9maWVsZCBUeXBlRW51bQpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyA5IC8vICJjb2xsYXRlcmFsX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAppdHhuX2ZpZWxkIFhmZXJBc3NldApieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCmludGNfMCAvLyAwCml0eG5fZmllbGQgRmVlCmludGNfMCAvLyAwCml0eG5fZmllbGQgQXNzZXRBbW91bnQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRDbG9zZVRvCml0eG5fc3VibWl0Cml0eG5fYmVnaW4KaW50Y18zIC8vIGF4ZmVyCml0eG5fZmllbGQgVHlwZUVudW0KYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTEgLy8gInllc19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaXR4bl9maWVsZCBYZmVyQXNzZXQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmJ5dGVjIDUgLy8gIm93bmVyIgphcHBfZ2xvYmFsX2dldAppdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwppdHhuX3N1Ym1pdAppdHhuX2JlZ2luCmludGNfMyAvLyBheGZlcgppdHhuX2ZpZWxkIFR5cGVFbnVtCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEyIC8vICJub19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaXR4bl9maWVsZCBYZmVyQXNzZXQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmJ5dGVjIDUgLy8gIm93bmVyIgphcHBfZ2xvYmFsX2dldAppdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwppdHhuX3N1Ym1pdAppdHhuX2JlZ2luCmludGNfMSAvLyBwYXkKaXR4bl9maWVsZCBUeXBlRW51bQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFtb3VudApieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQpieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBDbG9zZVJlbWFpbmRlclRvCml0eG5fc3VibWl0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gb25fdXBkYXRlCm9udXBkYXRlXzI2Ogpwcm90byAwIDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApwdXNoYnl0ZXMgMHg2ZDYxNzI2YjY1NzQ1ZjY2NzI2OTY1NmU2NDVmNjE2NDY0NzIgLy8gIm1hcmtldF9mcmllbmRfYWRkciIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPT0KZ2xvYmFsIEdyb3VwU2l6ZQppbnRjXzEgLy8gMQo9PQomJgphc3NlcnQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCnJldHN1YgoKLy8gb25fY3JlYXRlX2Nhc3RlcgpvbmNyZWF0ZWNhc3Rlcl8yNzoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmNhbGxzdWIgb25jcmVhdGVfOQpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIHNldHVwX2Nhc3RlcgpzZXR1cGNhc3Rlcl8yODoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmJ5dGVjIDIxIC8vICIiCmR1cG4gNAp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmZyYW1lX2J1cnkgMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAyCmZyYW1lX2J1cnkgMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAzCmZyYW1lX2J1cnkgMwp0eG5hIEFwcGxpY2F0aW9uQXJncyA0CmZyYW1lX2J1cnkgNAp0eG5hIEFwcGxpY2F0aW9uQXJncyA1CmZyYW1lX2J1cnkgNQpmcmFtZV9kaWcgMQpmcmFtZV9kaWcgMgpmcmFtZV9kaWcgMwpmcmFtZV9kaWcgNApmcmFtZV9kaWcgNQpjYWxsc3ViIHNldHVwXzEwCmZyYW1lX2J1cnkgMApieXRlYyAxMCAvLyAweDE1MWY3Yzc1CmJ5dGVjIDE0IC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1YgoKLy8gbWF0Y2hfbWFrZXJfY2FzdGVyCm1hdGNobWFrZXJjYXN0ZXJfMjk6CnByb3RvIDAgMAppbnRjXzAgLy8gMApkdXBuIDIKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQppbnRjXzAgLy8gMApnZXRieXRlCmZyYW1lX2J1cnkgMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAyCmJ0b2kKZnJhbWVfYnVyeSAyCmZyYW1lX2RpZyAxCmZyYW1lX2RpZyAyCmNhbGxzdWIgbWF0Y2htYWtlcl8xNwpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIGFtZW5kX29yZGVyX2Nhc3RlcgphbWVuZG9yZGVyY2FzdGVyXzMwOgpwcm90byAwIDAKaW50Y18wIC8vIDAKZHVwbiAzCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKYnRvaQpmcmFtZV9idXJ5IDEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmZyYW1lX2J1cnkgMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAzCmJ0b2kKZnJhbWVfYnVyeSAzCmZyYW1lX2RpZyAxCmZyYW1lX2RpZyAyCmZyYW1lX2RpZyAzCmNhbGxzdWIgYW1lbmRvcmRlcl8yMwpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIG1hdGNoX3Rha2VyX2Nhc3RlcgptYXRjaHRha2VyY2FzdGVyXzMxOgpwcm90byAwIDAKaW50Y18wIC8vIDAKZHVwCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKaW50Y18wIC8vIDAKZ2V0Ynl0ZQpmcmFtZV9idXJ5IDEKZnJhbWVfZGlnIDEKY2FsbHN1YiBtYXRjaHRha2VyXzI0CmZyYW1lX2J1cnkgMApieXRlYyAxMCAvLyAweDE1MWY3Yzc1CmZyYW1lX2RpZyAwCml0b2IKY29uY2F0CmxvZwpyZXRzdWIKCi8vIGRlbGV0ZV9jYXN0ZXIKZGVsZXRlY2FzdGVyXzMyOgpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBkZWxldGVfMjUKZnJhbWVfYnVyeSAwCmJ5dGVjIDEwIC8vIDB4MTUxZjdjNzUKYnl0ZWMgMTQgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyBvbl91cGRhdGVfY2FzdGVyCm9udXBkYXRlY2FzdGVyXzMzOgpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBvbnVwZGF0ZV8yNgpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpmcmFtZV9kaWcgMAppdG9iCmNvbmNhdApsb2cKcmV0c3Vi",
|
|
1336
|
+
"clear": "I3ByYWdtYSB2ZXJzaW9uIDgKcHVzaGludCAwIC8vIDAKcmV0dXJu"
|
|
1337
|
+
},
|
|
1338
|
+
"state": {
|
|
1339
|
+
"global": {
|
|
1340
|
+
"num_byte_slices": 1,
|
|
1341
|
+
"num_uints": 9
|
|
1342
|
+
},
|
|
1343
|
+
"local": {
|
|
1344
|
+
"num_byte_slices": 0,
|
|
1345
|
+
"num_uints": 0
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
"schema": {
|
|
1349
|
+
"global": {
|
|
1350
|
+
"declared": {
|
|
1351
|
+
"asset_listed": {
|
|
1352
|
+
"type": "uint64",
|
|
1353
|
+
"key": "asset_listed",
|
|
1354
|
+
"descr": "The asset id of the escrow"
|
|
1355
|
+
},
|
|
1356
|
+
"fee_timer_start": {
|
|
1357
|
+
"type": "uint64",
|
|
1358
|
+
"key": "fee_timer_start",
|
|
1359
|
+
"descr": "The timestamp of the fee timer start"
|
|
1360
|
+
},
|
|
1361
|
+
"market_app_id": {
|
|
1362
|
+
"type": "uint64",
|
|
1363
|
+
"key": "market_app_id",
|
|
1364
|
+
"descr": "The id of the market app"
|
|
1365
|
+
},
|
|
1366
|
+
"owner": {
|
|
1367
|
+
"type": "bytes",
|
|
1368
|
+
"key": "owner",
|
|
1369
|
+
"descr": "The owner of the escrow"
|
|
1370
|
+
},
|
|
1371
|
+
"position": {
|
|
1372
|
+
"type": "uint64",
|
|
1373
|
+
"key": "position",
|
|
1374
|
+
"descr": "The position of the escrow: yes/no"
|
|
1375
|
+
},
|
|
1376
|
+
"price": {
|
|
1377
|
+
"type": "uint64",
|
|
1378
|
+
"key": "price",
|
|
1379
|
+
"descr": "The price of the escrow"
|
|
1380
|
+
},
|
|
1381
|
+
"quantity": {
|
|
1382
|
+
"type": "uint64",
|
|
1383
|
+
"key": "quantity",
|
|
1384
|
+
"descr": "The quantity of the escrow"
|
|
1385
|
+
},
|
|
1386
|
+
"quantity_filled": {
|
|
1387
|
+
"type": "uint64",
|
|
1388
|
+
"key": "quantity_filled",
|
|
1389
|
+
"descr": "The quantity of the escrow filled"
|
|
1390
|
+
},
|
|
1391
|
+
"side": {
|
|
1392
|
+
"type": "uint64",
|
|
1393
|
+
"key": "side",
|
|
1394
|
+
"descr": "The side of the escrow: buy/sell"
|
|
1395
|
+
},
|
|
1396
|
+
"slippage": {
|
|
1397
|
+
"type": "uint64",
|
|
1398
|
+
"key": "slippage",
|
|
1399
|
+
"descr": "The slippage of the escrow. 0 if limit."
|
|
1400
|
+
}
|
|
1401
|
+
},
|
|
1402
|
+
"reserved": {}
|
|
1403
|
+
},
|
|
1404
|
+
"local": {
|
|
1405
|
+
"declared": {},
|
|
1406
|
+
"reserved": {}
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
"contract": {
|
|
1410
|
+
"name": "escrow_app",
|
|
1411
|
+
"methods": [
|
|
1412
|
+
{
|
|
1413
|
+
"name": "on_create",
|
|
1414
|
+
"args": [],
|
|
1415
|
+
"returns": {
|
|
1416
|
+
"type": "uint8"
|
|
1417
|
+
}
|
|
1418
|
+
},
|
|
1419
|
+
{
|
|
1420
|
+
"name": "setup",
|
|
1421
|
+
"args": [
|
|
1422
|
+
{
|
|
1423
|
+
"type": "string",
|
|
1424
|
+
"name": "position"
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"type": "string",
|
|
1428
|
+
"name": "price"
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"type": "string",
|
|
1432
|
+
"name": "side"
|
|
1433
|
+
},
|
|
1434
|
+
{
|
|
1435
|
+
"type": "string",
|
|
1436
|
+
"name": "quantity"
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"type": "string",
|
|
1440
|
+
"name": "slippage"
|
|
1441
|
+
}
|
|
1442
|
+
],
|
|
1443
|
+
"returns": {
|
|
1444
|
+
"type": "uint8"
|
|
1445
|
+
}
|
|
1446
|
+
},
|
|
1447
|
+
{
|
|
1448
|
+
"name": "match_maker",
|
|
1449
|
+
"args": [
|
|
1450
|
+
{
|
|
1451
|
+
"type": "application",
|
|
1452
|
+
"name": "taker"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"type": "uint64",
|
|
1456
|
+
"name": "match_quantity"
|
|
1457
|
+
}
|
|
1458
|
+
],
|
|
1459
|
+
"returns": {
|
|
1460
|
+
"type": "uint8"
|
|
1461
|
+
}
|
|
1462
|
+
},
|
|
1463
|
+
{
|
|
1464
|
+
"name": "amend_order",
|
|
1465
|
+
"args": [
|
|
1466
|
+
{
|
|
1467
|
+
"type": "uint64",
|
|
1468
|
+
"name": "price"
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
"type": "uint64",
|
|
1472
|
+
"name": "quantity"
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
"type": "uint64",
|
|
1476
|
+
"name": "slippage"
|
|
1477
|
+
}
|
|
1478
|
+
],
|
|
1479
|
+
"returns": {
|
|
1480
|
+
"type": "uint8"
|
|
1481
|
+
}
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
"name": "match_taker",
|
|
1485
|
+
"args": [
|
|
1486
|
+
{
|
|
1487
|
+
"type": "application",
|
|
1488
|
+
"name": "maker"
|
|
1489
|
+
}
|
|
1490
|
+
],
|
|
1491
|
+
"returns": {
|
|
1492
|
+
"type": "uint64"
|
|
1493
|
+
}
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
"name": "delete",
|
|
1497
|
+
"args": [],
|
|
1498
|
+
"returns": {
|
|
1499
|
+
"type": "uint8"
|
|
1500
|
+
}
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"name": "on_update",
|
|
1504
|
+
"args": [],
|
|
1505
|
+
"returns": {
|
|
1506
|
+
"type": "uint64"
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
],
|
|
1510
|
+
"networks": {}
|
|
1511
|
+
},
|
|
1512
|
+
"bare_call_config": {
|
|
1513
|
+
"no_op": "CREATE"
|
|
1514
|
+
}
|
|
1515
|
+
};
|
|
1516
|
+
var EscrowAppCallFactory = class {
|
|
1517
|
+
/**
|
|
1518
|
+
* Gets available create call factories
|
|
1519
|
+
*/
|
|
1520
|
+
static get create() {
|
|
1521
|
+
return {
|
|
1522
|
+
/**
|
|
1523
|
+
* Constructs a create call for the escrow_app smart contract using a bare call
|
|
1524
|
+
*
|
|
1525
|
+
* @param params Any parameters for the call
|
|
1526
|
+
* @returns A TypedCallParams object for the call
|
|
1527
|
+
*/
|
|
1528
|
+
bare(params = {}) {
|
|
1529
|
+
return {
|
|
1530
|
+
method: void 0,
|
|
1531
|
+
methodArgs: void 0,
|
|
1532
|
+
...params
|
|
1533
|
+
};
|
|
1534
|
+
},
|
|
1535
|
+
/**
|
|
1536
|
+
* Constructs a create call for the escrow_app smart contract using the on_create()uint8 ABI method
|
|
1537
|
+
*
|
|
1538
|
+
* @param args Any args for the contract call
|
|
1539
|
+
* @param params Any additional parameters for the call
|
|
1540
|
+
* @returns A TypedCallParams object for the call
|
|
1541
|
+
*/
|
|
1542
|
+
onCreate(args, params = {}) {
|
|
1543
|
+
return {
|
|
1544
|
+
method: "on_create()uint8",
|
|
1545
|
+
methodArgs: Array.isArray(args) ? args : [],
|
|
1546
|
+
...params
|
|
1547
|
+
};
|
|
1548
|
+
}
|
|
1549
|
+
};
|
|
1550
|
+
}
|
|
1551
|
+
/**
|
|
1552
|
+
* Gets available update call factories
|
|
1553
|
+
*/
|
|
1554
|
+
static get update() {
|
|
1555
|
+
return {
|
|
1556
|
+
/**
|
|
1557
|
+
* Constructs an update call for the escrow_app smart contract using the on_update()uint64 ABI method
|
|
1558
|
+
*
|
|
1559
|
+
* @param args Any args for the contract call
|
|
1560
|
+
* @param params Any additional parameters for the call
|
|
1561
|
+
* @returns A TypedCallParams object for the call
|
|
1562
|
+
*/
|
|
1563
|
+
onUpdate(args, params = {}) {
|
|
1564
|
+
return {
|
|
1565
|
+
method: "on_update()uint64",
|
|
1566
|
+
methodArgs: Array.isArray(args) ? args : [],
|
|
1567
|
+
...params
|
|
1568
|
+
};
|
|
1569
|
+
}
|
|
1570
|
+
};
|
|
1571
|
+
}
|
|
1572
|
+
/**
|
|
1573
|
+
* Gets available delete call factories
|
|
1574
|
+
*/
|
|
1575
|
+
static get delete() {
|
|
1576
|
+
return {
|
|
1577
|
+
/**
|
|
1578
|
+
* Constructs a delete call for the escrow_app smart contract using the delete()uint8 ABI method
|
|
1579
|
+
*
|
|
1580
|
+
* @param args Any args for the contract call
|
|
1581
|
+
* @param params Any additional parameters for the call
|
|
1582
|
+
* @returns A TypedCallParams object for the call
|
|
1583
|
+
*/
|
|
1584
|
+
delete(args, params = {}) {
|
|
1585
|
+
return {
|
|
1586
|
+
method: "delete()uint8",
|
|
1587
|
+
methodArgs: Array.isArray(args) ? args : [],
|
|
1588
|
+
...params
|
|
1589
|
+
};
|
|
1590
|
+
}
|
|
1591
|
+
};
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* Constructs a no op call for the setup(string,string,string,string,string)uint8 ABI method
|
|
1595
|
+
*
|
|
1596
|
+
* @param args Any args for the contract call
|
|
1597
|
+
* @param params Any additional parameters for the call
|
|
1598
|
+
* @returns A TypedCallParams object for the call
|
|
1599
|
+
*/
|
|
1600
|
+
static setup(args, params) {
|
|
1601
|
+
return {
|
|
1602
|
+
method: "setup(string,string,string,string,string)uint8",
|
|
1603
|
+
methodArgs: Array.isArray(args) ? args : [args.position, args.price, args.side, args.quantity, args.slippage],
|
|
1604
|
+
...params
|
|
1605
|
+
};
|
|
1606
|
+
}
|
|
1607
|
+
/**
|
|
1608
|
+
* Constructs a no op call for the match_maker(application,uint64)uint8 ABI method
|
|
1609
|
+
*
|
|
1610
|
+
* @param args Any args for the contract call
|
|
1611
|
+
* @param params Any additional parameters for the call
|
|
1612
|
+
* @returns A TypedCallParams object for the call
|
|
1613
|
+
*/
|
|
1614
|
+
static matchMaker(args, params) {
|
|
1615
|
+
return {
|
|
1616
|
+
method: "match_maker(application,uint64)uint8",
|
|
1617
|
+
methodArgs: Array.isArray(args) ? args : [args.taker, args.matchQuantity],
|
|
1618
|
+
...params
|
|
1619
|
+
};
|
|
1620
|
+
}
|
|
1621
|
+
/**
|
|
1622
|
+
* Constructs a no op call for the amend_order(uint64,uint64,uint64)uint8 ABI method
|
|
1623
|
+
*
|
|
1624
|
+
* @param args Any args for the contract call
|
|
1625
|
+
* @param params Any additional parameters for the call
|
|
1626
|
+
* @returns A TypedCallParams object for the call
|
|
1627
|
+
*/
|
|
1628
|
+
static amendOrder(args, params) {
|
|
1629
|
+
return {
|
|
1630
|
+
method: "amend_order(uint64,uint64,uint64)uint8",
|
|
1631
|
+
methodArgs: Array.isArray(args) ? args : [args.price, args.quantity, args.slippage],
|
|
1632
|
+
...params
|
|
1633
|
+
};
|
|
1634
|
+
}
|
|
1635
|
+
/**
|
|
1636
|
+
* Constructs a no op call for the match_taker(application)uint64 ABI method
|
|
1637
|
+
*
|
|
1638
|
+
* @param args Any args for the contract call
|
|
1639
|
+
* @param params Any additional parameters for the call
|
|
1640
|
+
* @returns A TypedCallParams object for the call
|
|
1641
|
+
*/
|
|
1642
|
+
static matchTaker(args, params) {
|
|
1643
|
+
return {
|
|
1644
|
+
method: "match_taker(application)uint64",
|
|
1645
|
+
methodArgs: Array.isArray(args) ? args : [args.maker],
|
|
1646
|
+
...params
|
|
1647
|
+
};
|
|
1648
|
+
}
|
|
1649
|
+
};
|
|
1650
|
+
var EscrowAppClient = class _EscrowAppClient {
|
|
1651
|
+
/**
|
|
1652
|
+
* Creates a new instance of `EscrowAppClient`
|
|
1653
|
+
*
|
|
1654
|
+
* @param appDetails appDetails The details to identify the app to deploy
|
|
1655
|
+
* @param algod An algod client instance
|
|
1656
|
+
*/
|
|
1657
|
+
constructor(appDetails, algod) {
|
|
1658
|
+
this.algod = algod;
|
|
1659
|
+
this.sender = appDetails.sender;
|
|
1660
|
+
this.appClient = algokit4__namespace.getAppClient({
|
|
1661
|
+
...appDetails,
|
|
1662
|
+
app: APP_SPEC3
|
|
1663
|
+
}, algod);
|
|
1664
|
+
}
|
|
1665
|
+
/**
|
|
1666
|
+
* The underlying `ApplicationClient` for when you want to have more flexibility
|
|
1667
|
+
*/
|
|
1668
|
+
appClient;
|
|
1669
|
+
sender;
|
|
1670
|
+
/**
|
|
1671
|
+
* Checks for decode errors on the AppCallTransactionResult and maps the return value to the specified generic type
|
|
1672
|
+
*
|
|
1673
|
+
* @param result The AppCallTransactionResult to be mapped
|
|
1674
|
+
* @param returnValueFormatter An optional delegate to format the return value if required
|
|
1675
|
+
* @returns The smart contract response with an updated return value
|
|
1676
|
+
*/
|
|
1677
|
+
mapReturnValue(result, returnValueFormatter) {
|
|
1678
|
+
if (result.return?.decodeError) {
|
|
1679
|
+
throw result.return.decodeError;
|
|
1680
|
+
}
|
|
1681
|
+
const returnValue = result.return?.returnValue !== void 0 && returnValueFormatter !== void 0 ? returnValueFormatter(result.return.returnValue) : result.return?.returnValue;
|
|
1682
|
+
return { ...result, return: returnValue };
|
|
1683
|
+
}
|
|
1684
|
+
/**
|
|
1685
|
+
* Calls the ABI method with the matching signature using an onCompletion code of NO_OP
|
|
1686
|
+
*
|
|
1687
|
+
* @param typedCallParams An object containing the method signature, args, and any other relevant parameters
|
|
1688
|
+
* @param returnValueFormatter An optional delegate which when provided will be used to map non-undefined return values to the target type
|
|
1689
|
+
* @returns The result of the smart contract call
|
|
1690
|
+
*/
|
|
1691
|
+
async call(typedCallParams, returnValueFormatter) {
|
|
1692
|
+
return this.mapReturnValue(await this.appClient.call(typedCallParams), returnValueFormatter);
|
|
1693
|
+
}
|
|
1694
|
+
/**
|
|
1695
|
+
* Idempotently deploys the escrow_app smart contract.
|
|
1696
|
+
*
|
|
1697
|
+
* @param params The arguments for the contract calls and any additional parameters for the call
|
|
1698
|
+
* @returns The deployment result
|
|
1699
|
+
*/
|
|
1700
|
+
deploy(params = {}) {
|
|
1701
|
+
const createArgs = params.createCall?.(EscrowAppCallFactory.create);
|
|
1702
|
+
const updateArgs = params.updateCall?.(EscrowAppCallFactory.update);
|
|
1703
|
+
const deleteArgs = params.deleteCall?.(EscrowAppCallFactory.delete);
|
|
1704
|
+
return this.appClient.deploy({
|
|
1705
|
+
...params,
|
|
1706
|
+
updateArgs,
|
|
1707
|
+
deleteArgs,
|
|
1708
|
+
createArgs,
|
|
1709
|
+
createOnCompleteAction: createArgs?.onCompleteAction
|
|
1710
|
+
});
|
|
1711
|
+
}
|
|
1712
|
+
/**
|
|
1713
|
+
* Gets available create methods
|
|
1714
|
+
*/
|
|
1715
|
+
get create() {
|
|
1716
|
+
const $this = this;
|
|
1717
|
+
return {
|
|
1718
|
+
/**
|
|
1719
|
+
* Creates a new instance of the escrow_app smart contract using a bare call.
|
|
1720
|
+
*
|
|
1721
|
+
* @param args The arguments for the bare call
|
|
1722
|
+
* @returns The create result
|
|
1723
|
+
*/
|
|
1724
|
+
async bare(args = {}) {
|
|
1725
|
+
return $this.mapReturnValue(await $this.appClient.create(args));
|
|
1726
|
+
},
|
|
1727
|
+
/**
|
|
1728
|
+
* Creates a new instance of the escrow_app smart contract using the on_create()uint8 ABI method.
|
|
1729
|
+
*
|
|
1730
|
+
* @param args The arguments for the smart contract call
|
|
1731
|
+
* @param params Any additional parameters for the call
|
|
1732
|
+
* @returns The create result
|
|
1733
|
+
*/
|
|
1734
|
+
async onCreate(args, params = {}) {
|
|
1735
|
+
return $this.mapReturnValue(await $this.appClient.create(EscrowAppCallFactory.create.onCreate(args, params)));
|
|
1736
|
+
}
|
|
1737
|
+
};
|
|
1738
|
+
}
|
|
1739
|
+
/**
|
|
1740
|
+
* Gets available update methods
|
|
1741
|
+
*/
|
|
1742
|
+
get update() {
|
|
1743
|
+
const $this = this;
|
|
1744
|
+
return {
|
|
1745
|
+
/**
|
|
1746
|
+
* Updates an existing instance of the escrow_app smart contract using the on_update()uint64 ABI method.
|
|
1747
|
+
*
|
|
1748
|
+
* @param args The arguments for the smart contract call
|
|
1749
|
+
* @param params Any additional parameters for the call
|
|
1750
|
+
* @returns The update result
|
|
1751
|
+
*/
|
|
1752
|
+
async onUpdate(args, params = {}) {
|
|
1753
|
+
return $this.mapReturnValue(await $this.appClient.update(EscrowAppCallFactory.update.onUpdate(args, params)));
|
|
1754
|
+
}
|
|
1755
|
+
};
|
|
1756
|
+
}
|
|
1757
|
+
/**
|
|
1758
|
+
* Gets available delete methods
|
|
1759
|
+
*/
|
|
1760
|
+
get delete() {
|
|
1761
|
+
const $this = this;
|
|
1762
|
+
return {
|
|
1763
|
+
/**
|
|
1764
|
+
* Deletes an existing instance of the escrow_app smart contract using the delete()uint8 ABI method.
|
|
1765
|
+
*
|
|
1766
|
+
* @param args The arguments for the smart contract call
|
|
1767
|
+
* @param params Any additional parameters for the call
|
|
1768
|
+
* @returns The delete result
|
|
1769
|
+
*/
|
|
1770
|
+
async delete(args, params = {}) {
|
|
1771
|
+
return $this.mapReturnValue(await $this.appClient.delete(EscrowAppCallFactory.delete.delete(args, params)));
|
|
1772
|
+
}
|
|
1773
|
+
};
|
|
1774
|
+
}
|
|
1775
|
+
/**
|
|
1776
|
+
* Makes a clear_state call to an existing instance of the escrow_app smart contract.
|
|
1777
|
+
*
|
|
1778
|
+
* @param args The arguments for the bare call
|
|
1779
|
+
* @returns The clear_state result
|
|
1780
|
+
*/
|
|
1781
|
+
clearState(args = {}) {
|
|
1782
|
+
return this.appClient.clearState(args);
|
|
1783
|
+
}
|
|
1784
|
+
/**
|
|
1785
|
+
* Calls the setup(string,string,string,string,string)uint8 ABI method.
|
|
1786
|
+
*
|
|
1787
|
+
* @param args The arguments for the contract call
|
|
1788
|
+
* @param params Any additional parameters for the call
|
|
1789
|
+
* @returns The result of the call
|
|
1790
|
+
*/
|
|
1791
|
+
setup(args, params = {}) {
|
|
1792
|
+
return this.call(EscrowAppCallFactory.setup(args, params));
|
|
1793
|
+
}
|
|
1794
|
+
/**
|
|
1795
|
+
* Calls the match_maker(application,uint64)uint8 ABI method.
|
|
1796
|
+
*
|
|
1797
|
+
* @param args The arguments for the contract call
|
|
1798
|
+
* @param params Any additional parameters for the call
|
|
1799
|
+
* @returns The result of the call
|
|
1800
|
+
*/
|
|
1801
|
+
matchMaker(args, params = {}) {
|
|
1802
|
+
return this.call(EscrowAppCallFactory.matchMaker(args, params));
|
|
1803
|
+
}
|
|
1804
|
+
/**
|
|
1805
|
+
* Calls the amend_order(uint64,uint64,uint64)uint8 ABI method.
|
|
1806
|
+
*
|
|
1807
|
+
* @param args The arguments for the contract call
|
|
1808
|
+
* @param params Any additional parameters for the call
|
|
1809
|
+
* @returns The result of the call
|
|
1810
|
+
*/
|
|
1811
|
+
amendOrder(args, params = {}) {
|
|
1812
|
+
return this.call(EscrowAppCallFactory.amendOrder(args, params));
|
|
1813
|
+
}
|
|
1814
|
+
/**
|
|
1815
|
+
* Calls the match_taker(application)uint64 ABI method.
|
|
1816
|
+
*
|
|
1817
|
+
* @param args The arguments for the contract call
|
|
1818
|
+
* @param params Any additional parameters for the call
|
|
1819
|
+
* @returns The result of the call
|
|
1820
|
+
*/
|
|
1821
|
+
matchTaker(args, params = {}) {
|
|
1822
|
+
return this.call(EscrowAppCallFactory.matchTaker(args, params));
|
|
1823
|
+
}
|
|
1824
|
+
/**
|
|
1825
|
+
* Extracts a binary state value out of an AppState dictionary
|
|
1826
|
+
*
|
|
1827
|
+
* @param state The state dictionary containing the state value
|
|
1828
|
+
* @param key The key of the state value
|
|
1829
|
+
* @returns A BinaryState instance containing the state value, or undefined if the key was not found
|
|
1830
|
+
*/
|
|
1831
|
+
static getBinaryState(state, key) {
|
|
1832
|
+
const value = state[key];
|
|
1833
|
+
if (!value) return void 0;
|
|
1834
|
+
if (!("valueRaw" in value))
|
|
1835
|
+
throw new Error(`Failed to parse state value for ${key}; received an int when expected a byte array`);
|
|
1836
|
+
return {
|
|
1837
|
+
asString() {
|
|
1838
|
+
return value.value;
|
|
1839
|
+
},
|
|
1840
|
+
asByteArray() {
|
|
1841
|
+
return value.valueRaw;
|
|
1842
|
+
}
|
|
1843
|
+
};
|
|
1844
|
+
}
|
|
1845
|
+
/**
|
|
1846
|
+
* Extracts a integer state value out of an AppState dictionary
|
|
1847
|
+
*
|
|
1848
|
+
* @param state The state dictionary containing the state value
|
|
1849
|
+
* @param key The key of the state value
|
|
1850
|
+
* @returns An IntegerState instance containing the state value, or undefined if the key was not found
|
|
1851
|
+
*/
|
|
1852
|
+
static getIntegerState(state, key) {
|
|
1853
|
+
const value = state[key];
|
|
1854
|
+
if (!value) return void 0;
|
|
1855
|
+
if ("valueRaw" in value)
|
|
1856
|
+
throw new Error(`Failed to parse state value for ${key}; received a byte array when expected a number`);
|
|
1857
|
+
return {
|
|
1858
|
+
asBigInt() {
|
|
1859
|
+
return typeof value.value === "bigint" ? value.value : BigInt(value.value);
|
|
1860
|
+
},
|
|
1861
|
+
asNumber() {
|
|
1862
|
+
return typeof value.value === "bigint" ? Number(value.value) : value.value;
|
|
1863
|
+
}
|
|
1864
|
+
};
|
|
1865
|
+
}
|
|
1866
|
+
/**
|
|
1867
|
+
* Returns the smart contract's global state wrapped in a strongly typed accessor with options to format the stored value
|
|
1868
|
+
*/
|
|
1869
|
+
async getGlobalState() {
|
|
1870
|
+
const state = await this.appClient.getGlobalState();
|
|
1871
|
+
return {
|
|
1872
|
+
get assetListed() {
|
|
1873
|
+
return _EscrowAppClient.getIntegerState(state, "asset_listed");
|
|
1874
|
+
},
|
|
1875
|
+
get feeTimerStart() {
|
|
1876
|
+
return _EscrowAppClient.getIntegerState(state, "fee_timer_start");
|
|
1877
|
+
},
|
|
1878
|
+
get marketAppId() {
|
|
1879
|
+
return _EscrowAppClient.getIntegerState(state, "market_app_id");
|
|
1880
|
+
},
|
|
1881
|
+
get owner() {
|
|
1882
|
+
return _EscrowAppClient.getBinaryState(state, "owner");
|
|
1883
|
+
},
|
|
1884
|
+
get position() {
|
|
1885
|
+
return _EscrowAppClient.getIntegerState(state, "position");
|
|
1886
|
+
},
|
|
1887
|
+
get price() {
|
|
1888
|
+
return _EscrowAppClient.getIntegerState(state, "price");
|
|
1889
|
+
},
|
|
1890
|
+
get quantity() {
|
|
1891
|
+
return _EscrowAppClient.getIntegerState(state, "quantity");
|
|
1892
|
+
},
|
|
1893
|
+
get quantityFilled() {
|
|
1894
|
+
return _EscrowAppClient.getIntegerState(state, "quantity_filled");
|
|
1895
|
+
},
|
|
1896
|
+
get side() {
|
|
1897
|
+
return _EscrowAppClient.getIntegerState(state, "side");
|
|
1898
|
+
},
|
|
1899
|
+
get slippage() {
|
|
1900
|
+
return _EscrowAppClient.getIntegerState(state, "slippage");
|
|
1901
|
+
}
|
|
1902
|
+
};
|
|
1903
|
+
}
|
|
1904
|
+
compose() {
|
|
1905
|
+
const client = this;
|
|
1906
|
+
const atc = new algosdk2.AtomicTransactionComposer();
|
|
1907
|
+
let promiseChain = Promise.resolve();
|
|
1908
|
+
const resultMappers = [];
|
|
1909
|
+
return {
|
|
1910
|
+
setup(args, params) {
|
|
1911
|
+
promiseChain = promiseChain.then(() => client.setup(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1912
|
+
resultMappers.push(void 0);
|
|
1913
|
+
return this;
|
|
1914
|
+
},
|
|
1915
|
+
matchMaker(args, params) {
|
|
1916
|
+
promiseChain = promiseChain.then(() => client.matchMaker(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1917
|
+
resultMappers.push(void 0);
|
|
1918
|
+
return this;
|
|
1919
|
+
},
|
|
1920
|
+
amendOrder(args, params) {
|
|
1921
|
+
promiseChain = promiseChain.then(() => client.amendOrder(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1922
|
+
resultMappers.push(void 0);
|
|
1923
|
+
return this;
|
|
1924
|
+
},
|
|
1925
|
+
matchTaker(args, params) {
|
|
1926
|
+
promiseChain = promiseChain.then(() => client.matchTaker(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1927
|
+
resultMappers.push(void 0);
|
|
1928
|
+
return this;
|
|
1929
|
+
},
|
|
1930
|
+
get update() {
|
|
1931
|
+
const $this = this;
|
|
1932
|
+
return {
|
|
1933
|
+
onUpdate(args, params) {
|
|
1934
|
+
promiseChain = promiseChain.then(() => client.update.onUpdate(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1935
|
+
resultMappers.push(void 0);
|
|
1936
|
+
return $this;
|
|
1937
|
+
}
|
|
1938
|
+
};
|
|
1939
|
+
},
|
|
1940
|
+
get delete() {
|
|
1941
|
+
const $this = this;
|
|
1942
|
+
return {
|
|
1943
|
+
delete(args, params) {
|
|
1944
|
+
promiseChain = promiseChain.then(() => client.delete.delete(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
|
|
1945
|
+
resultMappers.push(void 0);
|
|
1946
|
+
return $this;
|
|
1947
|
+
}
|
|
1948
|
+
};
|
|
1949
|
+
},
|
|
1950
|
+
clearState(args) {
|
|
1951
|
+
promiseChain = promiseChain.then(() => client.clearState({ ...args, sendParams: { ...args?.sendParams, skipSending: true, atc } }));
|
|
1952
|
+
resultMappers.push(void 0);
|
|
1953
|
+
return this;
|
|
1954
|
+
},
|
|
1955
|
+
addTransaction(txn, defaultSender) {
|
|
1956
|
+
promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
|
|
1957
|
+
return this;
|
|
1958
|
+
},
|
|
1959
|
+
async atc() {
|
|
1960
|
+
await promiseChain;
|
|
1961
|
+
return atc;
|
|
1962
|
+
},
|
|
1963
|
+
async simulate(options) {
|
|
1964
|
+
await promiseChain;
|
|
1965
|
+
const result = await atc.simulate(client.algod, new algosdk2.modelsv2.SimulateRequest({ txnGroups: [], ...options }));
|
|
1966
|
+
return {
|
|
1967
|
+
...result,
|
|
1968
|
+
returns: result.methodResults?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
|
|
1969
|
+
};
|
|
1970
|
+
},
|
|
1971
|
+
async execute(sendParams) {
|
|
1972
|
+
await promiseChain;
|
|
1973
|
+
const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
|
|
1288
1974
|
return {
|
|
1289
1975
|
...result,
|
|
1290
1976
|
returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
|
|
@@ -1659,7 +2345,7 @@ var createOrder = async (config, params) => {
|
|
|
1659
2345
|
if (!isBuying) {
|
|
1660
2346
|
const hasUsdcOptIn = await checkAssetOptIn(algodClient, activeAddress, usdcAssetId);
|
|
1661
2347
|
if (!hasUsdcOptIn) {
|
|
1662
|
-
const optInTxn = await
|
|
2348
|
+
const optInTxn = await algokit4__namespace.transferAsset(
|
|
1663
2349
|
{ from: signerAccount, to: activeAddress, assetId: usdcAssetId, amount: 0, skipSending: true },
|
|
1664
2350
|
algodClient
|
|
1665
2351
|
);
|
|
@@ -1670,7 +2356,7 @@ var createOrder = async (config, params) => {
|
|
|
1670
2356
|
const assetId = position === 1 ? yesAssetId : noAssetId;
|
|
1671
2357
|
const hasAssetOptIn = await checkAssetOptIn(algodClient, activeAddress, assetId);
|
|
1672
2358
|
if (!hasAssetOptIn) {
|
|
1673
|
-
const optInTxn = await
|
|
2359
|
+
const optInTxn = await algokit4__namespace.transferAsset(
|
|
1674
2360
|
{ from: signerAccount, to: activeAddress, assetId, amount: 0, skipSending: true },
|
|
1675
2361
|
algodClient
|
|
1676
2362
|
);
|
|
@@ -1678,15 +2364,15 @@ var createOrder = async (config, params) => {
|
|
|
1678
2364
|
createEscrowTxnIndex++;
|
|
1679
2365
|
}
|
|
1680
2366
|
}
|
|
1681
|
-
const paymentTxn = await
|
|
1682
|
-
{ from: signerAccount, to: marketAddress, amount:
|
|
2367
|
+
const paymentTxn = await algokit4__namespace.transferAlgos(
|
|
2368
|
+
{ from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(963500), skipSending: true },
|
|
1683
2369
|
algodClient
|
|
1684
2370
|
);
|
|
1685
2371
|
atc.addTransaction({ txn: paymentTxn.transaction, signer });
|
|
1686
2372
|
createEscrowTxnIndex++;
|
|
1687
2373
|
const fundAmount = isBuying ? Math.floor(quantity * (price + slippage) / 1e6) + fee : quantity;
|
|
1688
2374
|
const fundAssetId = isBuying ? usdcAssetId : position === 1 ? yesAssetId : noAssetId;
|
|
1689
|
-
const assetTransferTxn = await
|
|
2375
|
+
const assetTransferTxn = await algokit4__namespace.transferAsset(
|
|
1690
2376
|
{ from: signerAccount, to: marketAddress, amount: fundAmount, assetId: fundAssetId, skipSending: true },
|
|
1691
2377
|
algodClient
|
|
1692
2378
|
);
|
|
@@ -1699,11 +2385,11 @@ var createOrder = async (config, params) => {
|
|
|
1699
2385
|
atc.addTransaction({ txn: createEscrowTxn.transaction, signer });
|
|
1700
2386
|
let matchIndex = 1;
|
|
1701
2387
|
for (const matchingOrder of matchingOrders) {
|
|
1702
|
-
const payCounterPartyTxn = await
|
|
2388
|
+
const payCounterPartyTxn = await algokit4__namespace.transferAlgos(
|
|
1703
2389
|
{
|
|
1704
2390
|
from: signerAccount,
|
|
1705
2391
|
to: algosdk2.getApplicationAddress(matchingOrder.escrowAppId),
|
|
1706
|
-
amount:
|
|
2392
|
+
amount: algokit4__namespace.microAlgos(1e3 * (isBuying ? 1 : 2)),
|
|
1707
2393
|
skipSending: true
|
|
1708
2394
|
},
|
|
1709
2395
|
algodClient
|
|
@@ -1722,7 +2408,7 @@ var createOrder = async (config, params) => {
|
|
|
1722
2408
|
{
|
|
1723
2409
|
assets: [usdcAssetId, yesAssetId, noAssetId],
|
|
1724
2410
|
accounts: [activeAddress, marketFeeAddress, matchingOrder.owner],
|
|
1725
|
-
sendParams: { skipSending: true, fee:
|
|
2411
|
+
sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e4) }
|
|
1726
2412
|
}
|
|
1727
2413
|
);
|
|
1728
2414
|
atc.addTransaction({ txn: proposeAMatchTxn.transaction, signer });
|
|
@@ -1755,7 +2441,7 @@ var cancelOrder = async (config, params) => {
|
|
|
1755
2441
|
apps: [escrowAppId],
|
|
1756
2442
|
assets: [usdcAssetId, yesAssetId, noAssetId],
|
|
1757
2443
|
accounts: [orderOwner],
|
|
1758
|
-
sendParams: { skipSending: true, fee:
|
|
2444
|
+
sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(7e3) }
|
|
1759
2445
|
}
|
|
1760
2446
|
);
|
|
1761
2447
|
atc.addTransaction({ txn: deleteCallTxn.transaction, signer });
|
|
@@ -1779,11 +2465,11 @@ var proposeMatch = async (config, params) => {
|
|
|
1779
2465
|
algodClient
|
|
1780
2466
|
);
|
|
1781
2467
|
const atc = new algosdk2.AtomicTransactionComposer();
|
|
1782
|
-
const payMakerTxn = await
|
|
2468
|
+
const payMakerTxn = await algokit4__namespace.transferAlgos(
|
|
1783
2469
|
{
|
|
1784
2470
|
from: signerAccount,
|
|
1785
2471
|
to: algosdk2.getApplicationAddress(makerEscrowAppId),
|
|
1786
|
-
amount:
|
|
2472
|
+
amount: algokit4__namespace.microAlgos(2e3),
|
|
1787
2473
|
skipSending: true
|
|
1788
2474
|
},
|
|
1789
2475
|
algodClient
|
|
@@ -1802,7 +2488,7 @@ var proposeMatch = async (config, params) => {
|
|
|
1802
2488
|
{
|
|
1803
2489
|
assets: [usdcAssetId, yesAssetId, noAssetId],
|
|
1804
2490
|
accounts: [activeAddress, marketFeeAddress, makerAddress],
|
|
1805
|
-
sendParams: { skipSending: true, fee:
|
|
2491
|
+
sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e4) }
|
|
1806
2492
|
}
|
|
1807
2493
|
);
|
|
1808
2494
|
atc.addTransaction({ txn: proposeTxn.transaction, signer });
|
|
@@ -1813,6 +2499,68 @@ var proposeMatch = async (config, params) => {
|
|
|
1813
2499
|
confirmedRound: result.confirmedRound
|
|
1814
2500
|
};
|
|
1815
2501
|
};
|
|
2502
|
+
var amendOrder = async (config, params) => {
|
|
2503
|
+
const { algodClient, signer, activeAddress, usdcAssetId } = config;
|
|
2504
|
+
const { marketAppId, escrowAppId, price, quantity, slippage = 0 } = params;
|
|
2505
|
+
const escrowAppInfo = await algodClient.getApplicationByID(escrowAppId).do();
|
|
2506
|
+
const escrowState = decodeGlobalState(
|
|
2507
|
+
escrowAppInfo.params?.["global-state"] ?? escrowAppInfo["params"]?.["global-state"] ?? []
|
|
2508
|
+
);
|
|
2509
|
+
if ((escrowState.quantity_filled ?? 0) > 0) {
|
|
2510
|
+
throw new Error("Cannot amend an order that has been partially or fully filled.");
|
|
2511
|
+
}
|
|
2512
|
+
const globalState = await getMarketGlobalState(algodClient, marketAppId);
|
|
2513
|
+
const yesAssetId = globalState.yes_asset_id;
|
|
2514
|
+
const noAssetId = globalState.no_asset_id;
|
|
2515
|
+
const feeBase = globalState.fee_base_percent;
|
|
2516
|
+
const isBuy = escrowState.side === 1;
|
|
2517
|
+
const position = escrowState.position;
|
|
2518
|
+
const computeCollateral = (qty, px, slip) => {
|
|
2519
|
+
if (isBuy) {
|
|
2520
|
+
const fee = calculateFee(qty, px + slip, feeBase);
|
|
2521
|
+
return Math.floor(qty * (px + slip) / 1e6) + fee;
|
|
2522
|
+
}
|
|
2523
|
+
return qty;
|
|
2524
|
+
};
|
|
2525
|
+
const oldCollateral = computeCollateral(
|
|
2526
|
+
escrowState.quantity ?? 0,
|
|
2527
|
+
escrowState.price ?? 0,
|
|
2528
|
+
escrowState.slippage ?? 0
|
|
2529
|
+
);
|
|
2530
|
+
const newCollateral = computeCollateral(quantity, price, slippage);
|
|
2531
|
+
const delta = newCollateral - oldCollateral;
|
|
2532
|
+
const fundAssetId = isBuy ? usdcAssetId : position === 1 ? yesAssetId : noAssetId;
|
|
2533
|
+
const escrowAddr = algosdk2.getApplicationAddress(escrowAppId).toString();
|
|
2534
|
+
const signerAccount = { signer, addr: activeAddress };
|
|
2535
|
+
const atc = new algosdk2.AtomicTransactionComposer();
|
|
2536
|
+
if (delta > 0) {
|
|
2537
|
+
const fundTxn = await algokit4__namespace.transferAsset(
|
|
2538
|
+
{ from: signerAccount, to: escrowAddr, amount: delta, assetId: fundAssetId, skipSending: true },
|
|
2539
|
+
algodClient
|
|
2540
|
+
);
|
|
2541
|
+
atc.addTransaction({ txn: fundTxn.transaction, signer });
|
|
2542
|
+
}
|
|
2543
|
+
const escrowClient = new EscrowAppClient(
|
|
2544
|
+
{ resolveBy: "id", id: escrowAppId, sender: signerAccount },
|
|
2545
|
+
algodClient
|
|
2546
|
+
);
|
|
2547
|
+
const feeMicros = delta <= 0 ? 2e3 : 1e3;
|
|
2548
|
+
const amendCall = await escrowClient.amendOrder(
|
|
2549
|
+
{ price, quantity, slippage },
|
|
2550
|
+
{
|
|
2551
|
+
assets: [usdcAssetId, yesAssetId, noAssetId],
|
|
2552
|
+
apps: [marketAppId],
|
|
2553
|
+
sendParams: { fee: algokit4__namespace.microAlgos(feeMicros), skipSending: true }
|
|
2554
|
+
}
|
|
2555
|
+
);
|
|
2556
|
+
atc.addTransaction({ txn: amendCall.transaction, signer });
|
|
2557
|
+
const result = await atc.execute(algodClient, 4);
|
|
2558
|
+
return {
|
|
2559
|
+
success: true,
|
|
2560
|
+
txIds: result.txIDs,
|
|
2561
|
+
confirmedRound: result.confirmedRound
|
|
2562
|
+
};
|
|
2563
|
+
};
|
|
1816
2564
|
var splitShares = async (config, params) => {
|
|
1817
2565
|
const { algodClient, signer, activeAddress, usdcAssetId } = config;
|
|
1818
2566
|
const { marketAppId, amount } = params;
|
|
@@ -1829,7 +2577,7 @@ var splitShares = async (config, params) => {
|
|
|
1829
2577
|
let optInCosts = 0;
|
|
1830
2578
|
const hasYesOptIn = await checkAssetOptIn(algodClient, activeAddress, yesAssetId);
|
|
1831
2579
|
if (!hasYesOptIn) {
|
|
1832
|
-
const optInTxn = await
|
|
2580
|
+
const optInTxn = await algokit4__namespace.transferAsset(
|
|
1833
2581
|
{ from: signerAccount, to: activeAddress, assetId: yesAssetId, amount: 0, skipSending: true },
|
|
1834
2582
|
algodClient
|
|
1835
2583
|
);
|
|
@@ -1838,19 +2586,19 @@ var splitShares = async (config, params) => {
|
|
|
1838
2586
|
}
|
|
1839
2587
|
const hasNoOptIn = await checkAssetOptIn(algodClient, activeAddress, noAssetId);
|
|
1840
2588
|
if (!hasNoOptIn) {
|
|
1841
|
-
const optInTxn = await
|
|
2589
|
+
const optInTxn = await algokit4__namespace.transferAsset(
|
|
1842
2590
|
{ from: signerAccount, to: activeAddress, assetId: noAssetId, amount: 0, skipSending: true },
|
|
1843
2591
|
algodClient
|
|
1844
2592
|
);
|
|
1845
2593
|
atc.addTransaction({ txn: optInTxn.transaction, signer });
|
|
1846
2594
|
optInCosts += 1e3;
|
|
1847
2595
|
}
|
|
1848
|
-
const algoPayment = await
|
|
1849
|
-
{ from: signerAccount, to: marketAddress, amount:
|
|
2596
|
+
const algoPayment = await algokit4__namespace.transferAlgos(
|
|
2597
|
+
{ from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
|
|
1850
2598
|
algodClient
|
|
1851
2599
|
);
|
|
1852
2600
|
atc.addTransaction({ txn: algoPayment.transaction, signer });
|
|
1853
|
-
const usdcTransfer = await
|
|
2601
|
+
const usdcTransfer = await algokit4__namespace.transferAsset(
|
|
1854
2602
|
{ from: signerAccount, to: marketAddress, amount, assetId: usdcAssetId, skipSending: true },
|
|
1855
2603
|
algodClient
|
|
1856
2604
|
);
|
|
@@ -1883,24 +2631,24 @@ var mergeShares = async (config, params) => {
|
|
|
1883
2631
|
let optInCosts = 0;
|
|
1884
2632
|
const hasUsdcOptIn = await checkAssetOptIn(algodClient, activeAddress, usdcAssetId);
|
|
1885
2633
|
if (!hasUsdcOptIn) {
|
|
1886
|
-
const optInTxn = await
|
|
2634
|
+
const optInTxn = await algokit4__namespace.transferAsset(
|
|
1887
2635
|
{ from: signerAccount, to: activeAddress, assetId: usdcAssetId, amount: 0, skipSending: true },
|
|
1888
2636
|
algodClient
|
|
1889
2637
|
);
|
|
1890
2638
|
atc.addTransaction({ txn: optInTxn.transaction, signer });
|
|
1891
2639
|
optInCosts += 1e3;
|
|
1892
2640
|
}
|
|
1893
|
-
const algoPayment = await
|
|
1894
|
-
{ from: signerAccount, to: marketAddress, amount:
|
|
2641
|
+
const algoPayment = await algokit4__namespace.transferAlgos(
|
|
2642
|
+
{ from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
|
|
1895
2643
|
algodClient
|
|
1896
2644
|
);
|
|
1897
2645
|
atc.addTransaction({ txn: algoPayment.transaction, signer });
|
|
1898
|
-
const yesTransfer = await
|
|
2646
|
+
const yesTransfer = await algokit4__namespace.transferAsset(
|
|
1899
2647
|
{ from: signerAccount, to: marketAddress, amount, assetId: yesAssetId, skipSending: true },
|
|
1900
2648
|
algodClient
|
|
1901
2649
|
);
|
|
1902
2650
|
atc.addTransaction({ txn: yesTransfer.transaction, signer });
|
|
1903
|
-
const noTransfer = await
|
|
2651
|
+
const noTransfer = await algokit4__namespace.transferAsset(
|
|
1904
2652
|
{ from: signerAccount, to: marketAddress, amount, assetId: noAssetId, skipSending: true },
|
|
1905
2653
|
algodClient
|
|
1906
2654
|
);
|
|
@@ -1937,7 +2685,7 @@ var claim = async (config, params) => {
|
|
|
1937
2685
|
throw new Error("No tokens to claim");
|
|
1938
2686
|
}
|
|
1939
2687
|
const atc = new algosdk2.AtomicTransactionComposer();
|
|
1940
|
-
const tokenTransfer = await
|
|
2688
|
+
const tokenTransfer = await algokit4__namespace.transferAsset(
|
|
1941
2689
|
{ from: signerAccount, to: marketAddress, amount: tokenBalance, assetId, skipSending: true },
|
|
1942
2690
|
algodClient
|
|
1943
2691
|
);
|
|
@@ -1946,7 +2694,7 @@ var claim = async (config, params) => {
|
|
|
1946
2694
|
{},
|
|
1947
2695
|
{
|
|
1948
2696
|
assets: [usdcAssetId, assetId],
|
|
1949
|
-
sendParams: { skipSending: true, fee:
|
|
2697
|
+
sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e3) }
|
|
1950
2698
|
}
|
|
1951
2699
|
);
|
|
1952
2700
|
atc.addTransaction({ txn: claimTxn.transaction, signer });
|
|
@@ -2284,6 +3032,21 @@ var AlphaClient = class {
|
|
|
2284
3032
|
async proposeMatch(params) {
|
|
2285
3033
|
return proposeMatch(this.config, params);
|
|
2286
3034
|
}
|
|
3035
|
+
/**
|
|
3036
|
+
* Amends (edits) an existing unfilled order in-place.
|
|
3037
|
+
*
|
|
3038
|
+
* Cheaper and faster than cancel + recreate. The escrow contract adjusts
|
|
3039
|
+
* collateral automatically — sends you a refund if the new value is lower,
|
|
3040
|
+
* or requires extra funds if higher.
|
|
3041
|
+
*
|
|
3042
|
+
* Only works on orders with zero quantity filled.
|
|
3043
|
+
*
|
|
3044
|
+
* @param params - Amend parameters (marketAppId, escrowAppId, price, quantity, slippage?)
|
|
3045
|
+
* @returns Whether the amendment succeeded
|
|
3046
|
+
*/
|
|
3047
|
+
async amendOrder(params) {
|
|
3048
|
+
return amendOrder(this.config, params);
|
|
3049
|
+
}
|
|
2287
3050
|
// ============================================
|
|
2288
3051
|
// Positions
|
|
2289
3052
|
// ============================================
|