Skip to content

Commit

Permalink
feat: dns trait
Browse files Browse the repository at this point in the history
  • Loading branch information
ex3ndr committed Apr 8, 2023
1 parent 8783c7e commit 6473618
Show file tree
Hide file tree
Showing 22 changed files with 879 additions and 93 deletions.
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ module.exports = {
maxWorkers: 1,
globalSetup: './jest.setup.js',
globalTeardown: './jest.teardown.js',
snapshotSerializers: ["ton-jest/serializers"],
};
4 changes: 3 additions & 1 deletion jest.setup.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const coverage = require('@tact-lang/coverage');

module.exports = async () => {
coverage.beginCoverage();
if (process.env.COVERAGE === 'true') {
coverage.beginCoverage();
}
};
14 changes: 8 additions & 6 deletions jest.teardown.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ const coverage = require('@tact-lang/coverage');
const path = require('path');

module.exports = async () => {
coverage.completeCoverage([
path.resolve(__dirname, 'examples', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'test', 'features', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'test', 'bugs', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'benchmarks', 'contracts', 'output', '*.boc')
]);
if (process.env.COVERAGE === 'true') {
coverage.completeCoverage([
path.resolve(__dirname, 'examples', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'test', 'features', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'test', 'bugs', 'output', '*.boc'),
path.resolve(__dirname, 'src', 'benchmarks', 'contracts', 'output', '*.boc')
]);
}
};
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"clean": "rm -fr dist",
"build": "tsc && cp ./src/grammar/grammar.ohm* ./dist/grammar/ && cp ./src/func/funcfiftlib.* ./dist/func",
"test": "jest",
"coverage": "COVERAGE=true jest",
"release": "yarn clean && yarn build && yarn test && yarn release-it --npm.yarn1"
},
"files": [
Expand Down Expand Up @@ -62,6 +63,7 @@
"rollup": "^3.17.2",
"shiki": "^0.12.1",
"ton-compiler": "^2.3.0",
"ton-jest": "^0.0.3",
"ts-jest": "^29.0.3",
"ts-node": "^10.9.1",
"typescript": "^4.9.3"
Expand Down
2 changes: 1 addition & 1 deletion src/generator/writers/writeFunction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export function writeStatement(f: ASTStatement, self: string | null, returns: Ty
if (self) {
ctx.append(`return (${self}, ());`);
} else {
ctx.append(`return;`);
ctx.append(`return ();`);
}
}
return;
Expand Down
92 changes: 60 additions & 32 deletions src/imports/stdlib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,41 +17,69 @@ files['libs/dns.fc'] =
'IGlmICgoZG9tYWluLnNsaWNlX2JpdHMoKSA9PSA4KSAmIChkb21haW4uc2xpY2VfcmVmcygpID09IDApKSB7CiAgICAgICAgaWYgKGRvbWFpbi5wcmVsb2FkX3VpbnQo' +
'OCkgPT0gNDYpIHsKICAgICAgICAgICAgcmV0dXJuIGJlZ2luX2NlbGwoKS5zdG9yZV91aW50KDAsIDgpLmVuZF9jZWxsKCkuYmVnaW5fcGFyc2UoKTsKICAgICAgICB9' +
'CiAgICB9CiAgICAKICAgIDs7IFNwbGl0IGRvbWFpbiBpbnRvIHNlZ21lbnRzCiAgICB0dXBsZSBzZWdtZW50cyA9IG51bGwoKTsKICAgIGJ1aWxkZXIgY3VycmVudCA9' +
'IGJlZ2luX2NlbGwoKTsKICAgIGludCBpc0ZpcnN0ID0gdHJ1ZTsKICAgIGludCBpc0h5cGVuID0gZmFsc2U7CiAgICBzbGljZSBjcyA9IGRvbWFpbjsKICAgIGludCBj' +
'b250aW51ZSA9IHRydWU7CiAgICBkbyB7CgogICAgICAgIDs7IFByZXBhcmUgZm9yIGxvYWRpbmcgbmV4dCBjaGFyYWN0ZXIKICAgICAgICBpZiAoY3Muc2xpY2VfYml0' +
'cygpID09IDApIHsKICAgICAgICAgICAgaW50IHJlZnMgPSBjcy5zbGljZV9yZWZzKCk7CiAgICAgICAgICAgIGlmIChyZWZzID09IDEpIHsKICAgICAgICAgICAgICAg' +
'IGNzID0gY3N+bG9hZF9yZWYoKS5iZWdpbl9wYXJzZSgpOwogICAgICAgICAgICB9IGVsc2VpZiAocmVmcyA+IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxs' +
'KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlID0g' +
'ZmFsc2U7CiAgICAgICAgfQoKICAgICAgICA7OyBDb250aW51ZSBsb2FkaW5nIG5leHQgY2hhcmFjdGVyCiAgICAgICAgaWYgKGNvbnRpbnVlKSB7CiAgICAgICAgICAg' +
'IGludCBjaGFyID0gY3N+bG9hZF91aW50KDgpOwogICAgICAgICAgICA7OyB3ZSBjYW4gZG8gaXQgYmVjYXVzZSBhZGRpdGlvbmFsIFVURi04IGNoYXJhY3RlcidzIG9j' +
'dGV0cyA+PSAxMjggLS0gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzM2MjkudHh0CiAgICAgICAgICAgIGludCBpc19oeXBoZW4gPSAoY2hhciA9PSA0NSk7CiAg' +
'ICAgICAgICAgIGludCBpc19kb3QgID0gKGNoYXIgPT0gNDYpOwogICAgICAgICAgICBpbnQgdmFsaWRfY2hhciA9IGlzX2h5cGhlbiB8IGlzX2RvdCB8ICgoY2hhciA+' +
'PSA0OCkgJiAoY2hhciA8PSA1NykpIHwgKChjaGFyID49IDk3KSAmIChjaGFyIDw9IDEyMikpOyA7OyAnLScgb3IgMC05IG9yIGEtegogICAgICAgICAgICBpZiAofiB2' +
'YWxpZF9jaGFyIHwgKGlzRmlyc3QgJiBpc19oeXBoZW4pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlz' +
'SHlwZW4gPSBpc19oeXBoZW47CiAgICAgICAgICAgIGlmIChpc19kb3QpIHsKICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0IHwgaXNIeXBlbikgeyA7OyBFbXB0eSBv' +
'ciBlbmRzIHdpdGggaHlwaGVuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNlZ21lbnRz' +
'ID0gY29ucyhjdXJyZW50LCBzZWdtZW50cyk7CiAgICAgICAgICAgICAgICBjdXJyZW50ID0gYmVnaW5fY2VsbCgpOwogICAgICAgICAgICAgICAgaXNIeXBlbiA9IGZh' +
'bHNlOwogICAgICAgICAgICAgICAgaXNGaXJzdCA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CiAgICAg' +
'ICAgICAgICAgICBjdXJyZW50fnN0b3JlX3VpbnQoY2hhciwgOCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfSB1bnRpbCAofiBjb250aW51ZSk7CiAgICBp' +
'ZiAoaXNGaXJzdCB8IGlzSHlwZW4pIHsgOzsgRW1wdHkgb3IgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgIHJldHVybiBudWxsKCk7CiAgICB9CiAgICBzZWdtZW50cyA9' +
'IGNvbnMoY3VycmVudCwgc2VnbWVudHMpOwoKICAgIDs7IENvbmNhdGVuYXRlIHNlZ21lbnRzCiAgICBidWlsZGVyIHJlcyA9IGJlZ2luX2NlbGwoKTsKICAgIChidWls' +
'ZGVyIGIsIHR1cGxlIHRhaWwpID0gdW5jb25zKHNlZ21lbnRzKTsKICAgIHJlcyA9IHJlcy5zdG9yZV9idWlsZGVyKGIpOwogICAgd2hpbGUofiBudWxsPyh0YWlsKSkg' +
'ewogICAgICAgIChiLCB0YWlsKSA9IHVuY29ucyh0YWlsKTsKICAgICAgICByZXMgPSByZXMuc3RvcmVfdWludCgwLCA4KTsgOzsgQWRkIFwwIHNlcGFyYXRvcgogICAg' +
'ICAgIHJlcyA9IHJlcy5zdG9yZV9idWlsZGVyKGIpOwogICAgfQogICAgcmV0dXJuIHJlcy5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0KCnNsaWNlIGRuc19pbnRl' +
'cm5hbF9ub3JtYWxpemUoc2xpY2Ugc3JjKSBpbmxpbmVfcmVmIHsKICAgIHRocm93X3VubGVzcyhzcmMuc2xpY2VfcmVmcygpID09IDAsIDEzNCk7IDs7IEludmFsaWQg' +
'YXJndW1lbnQgZXJyb3IKICAgIGJ1aWxkZXIgdGFyZ2V0ID0gYmVnaW5fY2VsbCgpOwogICAgcmVwZWF0KHNyYy5zbGljZV9iaXRzKCkgLyA4KSB7CiAgICAgICAgaW50' +
'IGNoYXIgPSBzcmN+bG9hZF91aW50KDgpOwoKICAgICAgICA7OyBiID0+IDYKICAgICAgICBpZiAoY2hhciA9PSA5OCkgewogICAgICAgICAgICBjaGFyID0gNTQ7CiAg' +
'ICAgICAgfQoKICAgICAgICA7OyBnLCBxID0+IDkKICAgICAgICBpZiAoKGNoYXIgPT0gMTAzKSB8IChjaGFyID09IDExMykpIHsKICAgICAgICAgICAgY2hhciA9IDU3' +
'OyAgICAKICAgICAgICB9CgogICAgICAgIDs7IGwgPT4gMQogICAgICAgIGlmIChjaGFyID09IDEwOCkgewogICAgICAgICAgICBjaGFyID0gNDk7CiAgICAgICAgfQoK' +
'ICAgICAgICA7OyBvID0+IDAKICAgICAgICBpZiAoY2hhciA9PSAxMTEpIHsKICAgICAgICAgICAgY2hhciA9IDQ4OwogICAgICAgIH0KCiAgICAgICAgOzsgcyA9PiA1' +
'CiAgICAgICAgaWYgKGNoYXIgPT0gMTE1KSB7CiAgICAgICAgICAgIGNoYXIgPSA1MzsKICAgICAgICB9CgogICAgICAgIDs7IHUgPT4gdgogICAgICAgIGlmIChjaGFy' +
'ID09IDExNykgewogICAgICAgICAgICBjaGFyID0gMTE4OwogICAgICAgIH0KCiAgICAgICAgOzsgeiA9PiAyCiAgICAgICAgaWYgKGNoYXIgPT0gMTIyKSB7CiAgICAg' +
'ICAgICAgIGNoYXIgPSA1MDsKICAgICAgICB9CgogICAgICAgIHRhcmdldCA9IHRhcmdldC5zdG9yZV91aW50KGNoYXIsIDgpOwogICAgfQogICAgcmV0dXJuIHRhcmdl' +
'dC5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0=';
'IGJlZ2luX2NlbGwoKTsKICAgIGludCBpc0N1cnJlbnRFbXB0eSA9IHRydWU7CiAgICBpbnQgaXNGaXJzdCA9IHRydWU7CiAgICBpbnQgaXNIeXBlbiA9IGZhbHNlOwog' +
'ICAgc2xpY2UgY3MgPSBkb21haW47CiAgICBpbnQgY29udGludWUgPSB0cnVlOwogICAgZG8gewoKICAgICAgICA7OyBQcmVwYXJlIGZvciBsb2FkaW5nIG5leHQgY2hh' +
'cmFjdGVyCiAgICAgICAgaWYgKGNzLnNsaWNlX2JpdHMoKSA9PSAwKSB7CiAgICAgICAgICAgIGludCByZWZzID0gY3Muc2xpY2VfcmVmcygpOwogICAgICAgICAgICBp' +
'ZiAocmVmcyA9PSAxKSB7CiAgICAgICAgICAgICAgICBjcyA9IGNzfmxvYWRfcmVmKCkuYmVnaW5fcGFyc2UoKTsKICAgICAgICAgICAgfSBlbHNlaWYgKHJlZnMgPiAx' +
'KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29udGludWUgPSBmYWxzZTsKICAgICAg' +
'ICAgICAgfQogICAgICAgICAgICBjb250aW51ZSA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgOzsgQ29udGludWUgbG9hZGluZyBuZXh0IGNoYXJhY3RlcgogICAg' +
'ICAgIGlmIChjb250aW51ZSkgewogICAgICAgICAgICBpbnQgY2hhciA9IGNzfmxvYWRfdWludCg4KTsKICAgICAgICAgICAgOzsgd2UgY2FuIGRvIGl0IGJlY2F1c2Ug' +
'YWRkaXRpb25hbCBVVEYtOCBjaGFyYWN0ZXIncyBvY3RldHMgPj0gMTI4IC0tIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzNjI5LnR4dAogICAgICAgICAgICBp' +
'bnQgaXNfaHlwaGVuID0gKGNoYXIgPT0gNDUpOwogICAgICAgICAgICBpbnQgaXNfZG90ICA9IChjaGFyID09IDQ2KTsKICAgICAgICAgICAgaW50IHZhbGlkX2NoYXIg' +
'PSBpc19oeXBoZW4gfCBpc19kb3QgfCAoKGNoYXIgPj0gNDgpICYgKGNoYXIgPD0gNTcpKSB8ICgoY2hhciA+PSA5NykgJiAoY2hhciA8PSAxMjIpKTsgOzsgJy0nIG9y' +
'IDAtOSBvciBhLXoKICAgICAgICAgICAgaWYgKH4gdmFsaWRfY2hhciB8IChpc0ZpcnN0ICYgaXNfaHlwaGVuKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwo' +
'KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpc0h5cGVuID0gaXNfaHlwaGVuOwogICAgICAgICAgICBpZiAoaXNfZG90KSB7CiAgICAgICAgICAgICAgICBpZiAo' +
'aXNGaXJzdCB8IGlzSHlwZW4pIHsgOzsgRW1wdHkgb3IgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsKCk7CiAgICAgICAgICAg' +
'ICAgICB9CiAgICAgICAgICAgICAgICBzZWdtZW50cyA9IGNvbnMoY3VycmVudCwgc2VnbWVudHMpOwogICAgICAgICAgICAgICAgY3VycmVudCA9IGJlZ2luX2NlbGwo' +
'KTsKICAgICAgICAgICAgICAgIGlzSHlwZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlzRmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgaXNDdXJyZW50RW1w' +
'dHkgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgaXNDdXJyZW50RW1wdHkg' +
'PSBmYWxzZTsKICAgICAgICAgICAgICAgIGN1cnJlbnR+c3RvcmVfdWludChjaGFyLCA4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9IHVudGlsICh+IGNv' +
'bnRpbnVlKTsKICAgIGlmIChpc0h5cGVuKSB7IDs7IGVuZHMgd2l0aCBoeXBoZW4KICAgICAgICByZXR1cm4gbnVsbCgpOwogICAgfQogICAgaWYgKH4gaXNDdXJyZW50' +
'RW1wdHkpIHsKICAgICAgICBzZWdtZW50cyA9IGNvbnMoY3VycmVudCwgc2VnbWVudHMpOwogICAgfQoKICAgIDs7IENvbmNhdGVuYXRlIHNlZ21lbnRzCiAgICBidWls' +
'ZGVyIHJlcyA9IGJlZ2luX2NlbGwoKTsKICAgIChidWlsZGVyIGIsIHR1cGxlIHRhaWwpID0gdW5jb25zKHNlZ21lbnRzKTsKICAgIHJlcyA9IHJlcy5zdG9yZV9idWls' +
'ZGVyKGIpOwogICAgd2hpbGUofiBudWxsPyh0YWlsKSkgewogICAgICAgIChiLCB0YWlsKSA9IHVuY29ucyh0YWlsKTsKICAgICAgICByZXMgPSByZXMuc3RvcmVfdWlu' +
'dCgwLCA4KTsgOzsgQWRkIFwwIHNlcGFyYXRvcgogICAgICAgIHJlcyA9IHJlcy5zdG9yZV9idWlsZGVyKGIpOwogICAgfQogICAgcmVzID0gcmVzLnN0b3JlX3VpbnQo' +
'MCwgOCk7IDs7IEFkZCBcMCBzZXBhcmF0b3IKICAgIHJldHVybiByZXMuZW5kX2NlbGwoKS5iZWdpbl9wYXJzZSgpOwp9CgppbnQgZG5zX2ludGVybmFsX3ZlcmlmeShz' +
'bGljZSBzYykgaW5saW5lX3JlZiB7CiAgICBpZiAoc2Muc2xpY2VfcmVmcygpICE9IDApIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpbnQgYml0cyA9' +
'IHNjLnNsaWNlX2JpdHMoKTsKICAgIGlmIChiaXRzICUgOCAhPSAwKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKGJpdHMgPT0gMCkgeyA7OyBD' +
'YXNlIGZvciByb290IGRvbWFpbgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaW50IGxlbiA9IGJpdHMgLyA4OwogICAgaW50IGNvdW50ZXIgPSAwOwogICAg' +
'aW50IGlzRmlyc3QgPSB0cnVlOwogICAgaW50IGlzSHlwZW4gPSBmYWxzZTsKICAgIHJlcGVhdChsZW4pIHsKICAgICAgICBpbnQgY2hhciA9IHNjfmxvYWRfdWludCg4' +
'KTsKICAgICAgICBpZiAoY2hhciA9PSAwKSB7CiAgICAgICAgICAgIGlmIChjb3VudGVyID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg' +
'ICAgICAgfQogICAgICAgICAgICBpZiAoaXNIeXBlbikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdW50' +
'ZXIgPSAwOwogICAgICAgICAgICBpc0h5cGVuID0gZmFsc2U7CiAgICAgICAgICAgIGlzRmlyc3QgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlu' +
'dCBjaGFySXNIeXBlbiA9IChjaGFyID09IDQ1KTsKICAgICAgICAgICAgaW50IGlzVmFsaWQgPSBjaGFySXNIeXBlbiB8ICgoY2hhciA+PSA0OCkgJiAoY2hhciA8PSA1' +
'NykpIHwgKChjaGFyID49IDk3KSAmIChjaGFyIDw9IDEyMikpOwogICAgICAgICAgICBpZiAofiBpc1ZhbGlkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7' +
'CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNoYXJJc0h5cGVuICYgaXNGaXJzdCkgIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg' +
'ICAgfQogICAgICAgICAgICBpc0h5cGVuID0gY2hhcklzSHlwZW47CiAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgY291bnRlciA9IGNvdW50' +
'ZXIgKyAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjb3VudGVyID09IDAgJiB+IGlzSHlwZW47Cn0KCnNsaWNlIGRuc19pbnRlcm5hbF9ub3JtYWxpemUoc2xp' +
'Y2Ugc3JjKSBpbmxpbmVfcmVmIHsKICAgIHRocm93X3VubGVzcyhzcmMuc2xpY2VfcmVmcygpID09IDAsIDEzNCk7IDs7IEludmFsaWQgYXJndW1lbnQgZXJyb3IKICAg' +
'IGJ1aWxkZXIgdGFyZ2V0ID0gYmVnaW5fY2VsbCgpOwogICAgcmVwZWF0KHNyYy5zbGljZV9iaXRzKCkgLyA4KSB7CiAgICAgICAgaW50IGNoYXIgPSBzcmN+bG9hZF91' +
'aW50KDgpOwoKICAgICAgICA7OyBiID0+IDYKICAgICAgICBpZiAoY2hhciA9PSA5OCkgewogICAgICAgICAgICBjaGFyID0gNTQ7CiAgICAgICAgfQoKICAgICAgICA7' +
'OyBnLCBxID0+IDkKICAgICAgICBpZiAoKGNoYXIgPT0gMTAzKSB8IChjaGFyID09IDExMykpIHsKICAgICAgICAgICAgY2hhciA9IDU3OyAgICAKICAgICAgICB9Cgog' +
'ICAgICAgIDs7IGwgPT4gMQogICAgICAgIGlmIChjaGFyID09IDEwOCkgewogICAgICAgICAgICBjaGFyID0gNDk7CiAgICAgICAgfQoKICAgICAgICA7OyBvID0+IDAK' +
'ICAgICAgICBpZiAoY2hhciA9PSAxMTEpIHsKICAgICAgICAgICAgY2hhciA9IDQ4OwogICAgICAgIH0KCiAgICAgICAgOzsgcyA9PiA1CiAgICAgICAgaWYgKGNoYXIg' +
'PT0gMTE1KSB7CiAgICAgICAgICAgIGNoYXIgPSA1MzsKICAgICAgICB9CgogICAgICAgIDs7IHUgPT4gdgogICAgICAgIGlmIChjaGFyID09IDExNykgewogICAgICAg' +
'ICAgICBjaGFyID0gMTE4OwogICAgICAgIH0KCiAgICAgICAgOzsgeiA9PiAyCiAgICAgICAgaWYgKGNoYXIgPT0gMTIyKSB7CiAgICAgICAgICAgIGNoYXIgPSA1MDsK' +
'ICAgICAgICB9CgogICAgICAgIHRhcmdldCA9IHRhcmdldC5zdG9yZV91aW50KGNoYXIsIDgpOwogICAgfQogICAgcmV0dXJuIHRhcmdldC5lbmRfY2VsbCgpLmJlZ2lu' +
'X3BhcnNlKCk7Cn0=';
files['libs/dns.tact'] =
'aW1wb3J0ICIuL2Rucy5mYyI7CgpzdHJ1Y3QgRE5TUmVzb2x2ZVJlc3VsdCB7CiAgICBwcmVmaXg6IEludDsgCiAgICByZWNvcmQ6IENlbGw/OyAKfQoKQG5hbWUoZG5z' +
'X3N0cmluZ190b19pbnRlcm5hbCkKbmF0aXZlIGRuc1N0cmluZ1RvSW50ZXJuYWwoc3RyOiBTdHJpbmcpOiBTbGljZT87CgpAbmFtZShkbnNfaW50ZXJuYWxfbm9ybWFs' +
'aXplKQpuYXRpdmUgZG5zSW50ZXJuYWxOb3JtYWxpemUoc3JjOiBTbGljZSk6IFNsaWNlOw==';
'aXplKQpuYXRpdmUgZG5zSW50ZXJuYWxOb3JtYWxpemUoc3JjOiBTbGljZSk6IFNsaWNlOwoKQG5hbWUoZG5zX2ludGVybmFsX3ZlcmlmeSkKbmF0aXZlIGRuc0ludGVy' +
'bmFsVmVyaWZ5KHN1YmRvbWFpbjogU2xpY2UpOiBCb29sOwoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluOiBTbGljZSk6IEludCB7CiAgICBs' +
'ZXQgaTogSW50ID0gMDsKICAgIGxldCBuZWVkQnJlYWs6IEJvb2wgPSBmYWxzZTsKICAgIGRvIHsKICAgICAgICBsZXQgY2hhcjogSW50ID0gc3ViZG9tYWluLmxvYWRV' +
'aW50KDgpOyAvLyB3ZSBkbyBub3QgY2hlY2sgZG9tYWluLmxlbmd0aCBiZWNhdXNlIGl0IE1VU1QgY29udGFpbnMgXDAgY2hhcmFjdGVyCiAgICAgICAgbmVlZEJyZWFr' +
'ID0gY2hhciA9PSAwOwogICAgICAgIGlmICghbmVlZEJyZWFrKSB7CiAgICAgICAgICAgIGkgPSBpICsgODsKICAgICAgICB9CiAgICB9IHVudGlsIChuZWVkQnJlYWsp' +
'OwogICAgcmVxdWlyZShpICE9IDAsICJJbnZhbGlkIEROUyBuYW1lIik7CiAgICByZXR1cm4gaTsKfQoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW4oc3ViZG9tYWluOiBT' +
'bGljZSk6IFNsaWNlIHsKICAgIGxldCBsZW46IEludCA9IGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluKTsKICAgIHJldHVybiBzdWJkb21haW4ubG9h' +
'ZEJpdHMobGVuKTsKfQoKdHJhaXQgRE5TUmVzb2x2ZXIgewoKICAgIGdldCBmdW4gZG5zcmVzb2x2ZShzdWJkb21haW46IFNsaWNlLCBjYXRlZ29yeTogSW50KTogRE5T' +
'UmVzb2x2ZVJlc3VsdCB7CgogICAgICAgIC8vIE5vcm1hbGl6ZQogICAgICAgIGxldCBkZWx0YTogSW50ID0gMDsKICAgICAgICBpZiAoc3ViZG9tYWluLnByZWxvYWRV' +
'aW50KDgpID09IDApIHsKICAgICAgICAgICAgc3ViZG9tYWluLmxvYWRVaW50KDgpOyAvLyBTa2lwIGZpcnN0IGJ5dGUKICAgICAgICAgICAgZGVsdGEgPSBkZWx0YSAr' +
'IDg7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVja3MgY29ycmVjdG5lc3MKICAgICAgICByZXF1aXJlKGRuc0ludGVybmFsVmVyaWZ5KHN1YmRvbWFpbiksICJJbnZh' +
'bGlkIEROUyBuYW1lIik7CgogICAgICAgIC8vIFJlc29sdmUKICAgICAgICBsZXQgcmVzOiBETlNSZXNvbHZlUmVzdWx0ID0gc2VsZi5kb1Jlc29sdmVETlMoc3ViZG9t' +
'YWluLCBjYXRlZ29yeSk7CiAgICAgICAgcmV0dXJuIEROU1Jlc29sdmVSZXN1bHR7cHJlZml4OiByZXMucHJlZml4ICsgZGVsdGEsIHJlY29yZDogcmVzLnJlY29yZH07' +
'CiAgICB9CgogICAgdmlydHVhbCBmdW4gZG9SZXNvbHZlRE5TKHN1YmRvbWFpbjogU2xpY2UsIGNhdGVnb3J5OiBJbnQpOiBETlNSZXNvbHZlUmVzdWx0IHsKICAgICAg' +
'ICByZXR1cm4gRE5TUmVzb2x2ZVJlc3VsdHtwcmVmaXg6IHN1YmRvbWFpbi5iaXRzKCksIHJlY29yZDogbnVsbH07CiAgICB9Cn0=';
files['libs/ownable.tact'] =
'bWVzc2FnZSBDaGFuZ2VPd25lciB7CiAgICBuZXdPd25lcjogQWRkcmVzczsKfQoKQGludGVyZmFjZSgib3JnLnRvbi5vd25hYmxlIikKdHJhaXQgT3duYWJsZSB7CiAg' +
'ICBvd25lcjogQWRkcmVzczsKCiAgICBmdW4gcmVxdWlyZU93bmVyKCkgewogICAgICAgIG5hdGl2ZVRocm93VW5sZXNzKDEzMiwgc2VuZGVyKCkgPT0gc2VsZi5vd25l' +
Expand Down
Loading

0 comments on commit 6473618

Please sign in to comment.