tx · 6s3cKJsaFVHnoe8Gm8KAYYx8PvGiFsrSP8fHLDvCkumc

3MwwD14kfMXCMBF2Q7Bcq4MgeZwm8XjcW5c:  -0.01700000 Waves

2022.08.31 13:52 [2208523] smart account 3MwwD14kfMXCMBF2Q7Bcq4MgeZwm8XjcW5c > SELF 0.00000000 Waves

{ "type": 13, "id": "6s3cKJsaFVHnoe8Gm8KAYYx8PvGiFsrSP8fHLDvCkumc", "fee": 1700000, "feeAssetId": null, "timestamp": 1661943192078, "version": 1, "sender": "3MwwD14kfMXCMBF2Q7Bcq4MgeZwm8XjcW5c", "senderPublicKey": "D8DocenwMziG3oWkMzM5iujuh8ih5K7U1ToWdrNscyZS", "proofs": [ "3XFfFKzr8WZ4zZPayMosJtXEzaXBPB8a4q6AudZRJCfmmNcSH5oPGnv4Rt3obdTyTLaVQCH5LPLcUAC5QMMGGgWv" ], "script": "base64:BgK1GwgCEgMKAQgSAwoBCBIAEgQKAgEEEgMKAQESABIECgIBARIDCgEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIg9mYWN0b3J5Q29udHJhY3QiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IhBnZXRGYWN0b3J5Q29uZmlnIhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiByRtYXRjaDAiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciICcGQiAnBrIgtjaGVja0NhbGxlciIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiCmZhY3RvcnlDZmciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIEYW1JZCIEcHJJZCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0IgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IgZhbW91bnQiDWNoZWNrUGF5bWVudHMiCnVuc3Rha2VJbnYiD2NoZWNrUG9vbFN0YXR1cyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiDXBvb2xMUEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoRQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgICX18AAWcAAQABaAACAAFpAAMAAWoABAABawABAAFsAAIAAW0AAwABbgAEAAFvAAUAAXAABgABcQAHAAFyAAgAAXMACQABdAAKAAF1AAEAAXYAAgABdwADAAF4AAEAAXkABwEBegIBQQFCCQC8AgMJALYCAQUBQQUBZAkAtgIBBQFCAQFDAgFEAUUJAKADAQkAvAIDBQFECQC2AgEFAUUFAWQBAUYDAUcBSAFJCQBrAwUBRwUBSAUBSQEBSgEBRAMJAL8CAgUBZQUBRAkAvgIBBQFEBQFEAQFLAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTAACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFNAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFOAAIRJXMlc19fcHJpY2VfX2xhc3QBAU8CAVABUQkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVAJAMwIAgkApAMBBQFRBQNuaWwFAWYBAVICAVMBVAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVMCAl9fBQFUAQFVAgFTAVQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFTAgJfXwUBVAEBVgACDyVzX19hbW91bnRBc3NldAEBVwACDiVzX19wcmljZUFzc2V0AQFYAAIRJXNfX2ZhY3RvcnlDb25maWcBAVkAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAVoBAmFhCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFhAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYWICAmFjAmFkCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhYwICX18FAmFkAghfX2NvbmZpZwECYWUBAmFmCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFmAQJhZwACDCVzX19zaHV0ZG93bgECYWgBAmFpCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYWkBAmFqAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gBAmFrAwJhbAJhbQJhbgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYWwCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYW0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFuAQJhbwICYXACYXEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhcAUCYXEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXAJAMwIAgIBLgkAzAgCBQJhcQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhcgICYXACYXEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhcAUCYXEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXAJAMwIAgIBLgkAzAgCBQJhcQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAAJhcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFvAgUEdGhpcwkBAUsAAQJhdAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYXMJAQJhZwAHAQJhdQAJANkEAQkBAmFvAgUCYXMJAQFZAAECYXYABAJhdwkBAmFvAgUEdGhpcwkBAVYABAJheAkBAmFvAgUEdGhpcwkBAVcABAJhZAkBAmFyAgUCYXMJAQJhZQEFAmF4BAJhYwkBAmFyAgUCYXMJAQJhZQEFAmF3CQC1CQIJAQJhbwIFAmFzCQECYWICCQCkAwEFAmFjCQCkAwEFAmFkBQFmAQJheQAJALUJAgkBAmFvAgUCYXMJAQFYAAUBZgECYXoKAmFBAmFCAmFDAmFEAmFFAmFGAmFHAmFIAmFJAmFKCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhQQkAzAgCCQCkAwEFAmFCCQDMCAIJAKQDAQUCYUMJAMwIAgkApAMBBQJhRAkAzAgCCQCkAwEFAmFFCQDMCAIJAKQDAQUCYUYJAMwIAgkApAMBBQJhRwkAzAgCCQCkAwEFAmFICQDMCAIJAKQDAQUCYUkJAMwIAgkApAMBBQJhSgUDbmlsBQFmAQJhSwYCYUwCYU0CYU4CYUQCYUcCYUgJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhTAkAzAgCCQCkAwEFAmFNCQDMCAIJAKQDAQUCYU4JAMwIAgkApAMBBQJhRAkAzAgCCQCkAwEFAmFHCQDMCAIJAKQDAQUCYUgFA25pbAUBZgECYU8BAmFQAwkAAAIFAmFQAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhUAECYVECAmFSAmFTCQC8AgMFAmFSBQFkBQJhUwECYVQEAmFVAmFWAmFXAmFYBAJhWQkBAXoCBQJhVwUCYVUEAmFaCQEBegIFAmFYBQJhVgkBAmFRAgUCYVoFAmFZAQJiYQMCYVcCYVgCYmIEAmJjCQECYXYABAJiZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFwBAJiZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFxBAJiZgkBAmFUBAUCYmQFAmJlBQJhVwUCYVgEAmFTCQEBegIFAmFXBQJiZAQCYVIJAQF6AgUCYVgFAmJlBAJiZwkBAXoCBQJiYgUBYgQCYmgJAQJhUQIFAmFTBQJiZwQCYmkJAQJhUQIFAmFSBQJiZwkAzAgCBQJiZgkAzAgCBQJiaAkAzAgCBQJiaQUDbmlsAQJiagMCYVcCYVgCYmIEAmJrCQECYmEDBQJhVwUCYVgFAmJiCQDMCAIJAQFDAgkAkQMCBQJiawAABQFiCQDMCAIJAQFDAgkAkQMCBQJiawABBQFiCQDMCAIJAQFDAgkAkQMCBQJiawACBQFiBQNuaWwBAmJsBAJibQJibgJibwFTBAJiYwkBAmF2AAQCYnAJAJEDAgUCYmMFAW0EAmJxCQCRAwIFAmJjBQFuBAJicgkAkQMCBQJiYwUBbwQCYVUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcAQCYVYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcQQCYnMJAJEDAgUCYmMFAWwEAmJ0CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYnAJAKwCAgkArAICAgZBc3NldCAFAmJwAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJwBQJibgkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCYnUJAQJhTwEFAmJxBAJidgkBAXoCBQJidQUCYVUEAmJ3CQECYU8BBQJicgQCYngJAQF6AgUCYncFAmFWBAJieQkBAmFRAgUCYngFAmJ2BAJiegkBAUMCBQJieQUBYgQCYkEJAQF6AgUCYm8FAWIEAmJCCQEBegIFAmJ0BQFiBAJiQwkAvAIDBQJidgUCYkEFAmJCBAJiRAkAvAIDBQJieAUCYkEFAmJCBAJiRQkBAUMCBQJiQwUCYVUEAmJGCQEBQwIFAmJEBQJhVgQCYkcDCQAAAgUCYm0CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVMFAmJFAwkAAAIFAmJxAgVXQVZFUwUEdW5pdAkA2QQBBQJicQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFTBQJiRgMJAAACBQJicgIFV0FWRVMFBHVuaXQJANkEAQUCYnIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCCQClCAEFAVMFAmJtCQECYUsGBQJiRQUCYkYFAmJvBQJiegUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU4ABQJiegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJiegUDbmlsCQCcCgoFAmJFBQJiRgUCYnEFAmJyBQJidQUCYncFAmJ0BQJieQUCYnMFAmJHAQJiSAkCYm0CYkkCYkoCYksCYkwCYk0BUwJiTgJiTwQCYmMJAQJhdgAEAmJwCQDZBAEJAJEDAgUCYmMFAW0EAmJQCQCRAwIFAmJjBQFuBAJiUQkAkQMCBQJiYwUBbwQCYlIJAJEDAgUCYmMFAXIEAmJTCQCRAwIFAmJjBQFzBAJiZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFwBAJiZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFxBAJicwkAkQMCBQJiYwUBbAQCYnQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnAJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYnACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJiVAkA2AQBCQELdmFsdWVPckVsc2UCBQJiSwkA2QQBAgVXQVZFUwQCYlUJANgEAQkBC3ZhbHVlT3JFbHNlAgUCYk0JANkEAQIFV0FWRVMDAwkBAiE9AgUCYlAFAmJUBgkBAiE9AgUCYlEFAmJVCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYnUDBQJiTgkBAmFPAQUCYlAJAGUCCQECYU8BBQJiUAUCYkoEAmJ3AwUCYk4JAQJhTwEFAmJRCQBlAgkBAmFPAQUCYlEFAmJMBAJiVgkBAXoCBQJiSgUCYmQEAmJXCQEBegIFAmJMBQJiZQQCYlgJAQJhUQIFAmJXBQJiVgQCYnYJAQF6AgUCYnUFAmJkBAJieAkBAXoCBQJidwUCYmUEAmJZAwkAAAIFAmJ0AAAEAmJ5BQFlBAJiWgUBZQQCYmcJAHYGCQC5AgIFAmJWBQJiVwAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUMCBQJiZwUBYgkBAUMCBQJiVgUCYmQJAQFDAgUCYlcFAmJlCQECYVECCQC3AgIFAmJ4BQJiVwkAtwICBQJidgUCYlYFAmJaBAJieQkBAmFRAgUCYngFAmJ2BAJiWgkAvAIDCQEBSgEJALgCAgUCYnkFAmJYBQFkBQJieQQCY2EJAQF6AgUCYkkFAWIDAwkBAiE9AgUCYnkFAWUJAL8CAgUCYloFAmNhBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJiWgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNhBAJiQgkBAXoCBQJidAUBYgQCY2IJALwCAwUCYlYFAmJ5BQFkBAJjYwkAvAIDBQJiVwUBZAUCYnkEAmNkAwkAvwICBQJjYgUCYlcJAJQKAgUCY2MFAmJXCQCUCgIFAmJWBQJjYgQCY2UIBQJjZAJfMQQCY2YIBQJjZAJfMgQCYmcJALwCAwUCYkIFAmNmBQJieAkAlwoFCQEBQwIFAmJnBQFiCQEBQwIFAmNlBQJiZAkBAUMCBQJjZgUCYmUFAmJ5BQJiWgQCY2cIBQJiWQJfMQQCY2gIBQJiWQJfMgQCY2kIBQJiWQJfMwQCYnoJAQFDAggFAmJZAl80BQFiBAJjagkBAUMCCAUCYlkCXzUFAWIDCQBnAgAABQJjZwkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY2sDCQEBIQEFAmJPAAAFAmNnBAJjbAkAZQIFAmJKBQJjaAQCY20JAGUCBQJiTAUCY2kEAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgAFAmJ6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmJ6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBUwUCYm0JAQJhegoFAmNoBQJjaQUCY2sFAmJ6BQJiSQUCY2oFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNsBQJjbQUDbmlsCQCfCg0FAmNnBQJjawUCYnoFAmJ1BQJidwUCYnQFAmJwBQJicwUCY24FAmNsBQJjbQUCYksFAmJNAQJjbwECY3AEAmJjCQECYXYABAJjcQkAkQMCBQJiYwUBbgQCY3IJAJEDAgUCYmMFAW8EAmJzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAWwEAmJkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXAEAmJlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXEEAmNzCQECYU8BBQJjcQQCY3QJAQJhTwEFAmNyBAJieQMJAAACCAUCY3AJb3JkZXJUeXBlBQNCdXkJAQJhVAQFAmJkBQJiZQkAZAIFAmNzCAUCY3AGYW1vdW50BQJjdAkBAmFUBAUCYmQFAmJlCQBlAgUCY3MIBQJjcAZhbW91bnQFAmN0BAJiegkBAUMCBQJieQUBYgMDAwkBAmF0AAYJAAACBQJicwUBaQYJAAACBQJicwUBagkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmN1CAgFAmNwCWFzc2V0UGFpcgthbW91bnRBc3NldAQCY3YDCQAAAgUCY3UFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmN1BAJjdwgIBQJjcAlhc3NldFBhaXIKcHJpY2VBc3NldAQCY3gDCQAAAgUCY3cFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmN3AwMJAQIhPQIFAmN2BQJjcQYJAQIhPQIFAmN4BQJjcgkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmN5CAUCY3AFcHJpY2UEAmN6CQBrAwUBYgUCYmUFAmJkBAJjQQkBAUYDBQJjeQUBYgUCY3oEAmNCAwkAAAIIBQJjcAlvcmRlclR5cGUFA0J1eQkAZwIFAmJ6BQJjQQkAZwIFAmNBBQJiegYBAmNDAQJjRAMJAQIhPQIJAJADAQgFAmNECHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCY0UJAQV2YWx1ZQEJAJEDAggFAmNECHBheW1lbnRzAAAEAmJuCQEFdmFsdWUBCAUCY0UHYXNzZXRJZAQCY0YIBQJjRQZhbW91bnQEAmJZCQECYmwECQDYBAEIBQJjRA10cmFuc2FjdGlvbklkCQDYBAEFAmJuBQJjRggFAmNEBmNhbGxlcgQCYkUIBQJiWQJfMQQCYkYIBQJiWQJfMgQCYnMJAQ1wYXJzZUludFZhbHVlAQgFAmJZAl85BAJiRwgFAmJZA18xMAMDCQECYXQABgkAAAIFAmJzBQFqCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJicwkAlwoFBQJiRQUCYkYFAmNGBQJibgUCYkcBAmNHAwJjRAJiSQJiTwMJAQIhPQIJAJADAQgFAmNECHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJjSAkBBXZhbHVlAQkAkQMCCAUCY0QIcGF5bWVudHMAAAQCY0kJAQV2YWx1ZQEJAJEDAggFAmNECHBheW1lbnRzAAEEAmNKCQECYkgJCQDYBAEIBQJjRA10cmFuc2FjdGlvbklkBQJiSQgFAmNIBmFtb3VudAgFAmNIB2Fzc2V0SWQIBQJjSQZhbW91bnQIBQJjSQdhc3NldElkCQClCAEIBQJjRAZjYWxsZXIHBQJiTwQCYnMJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl84AwMDCQECYXQABgkAAAIFAmJzBQFoBgkAAAIFAmJzBQFqCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJicwUCY0oBAmNLAAQCY0wJAKIIAQkBAUwAAwkAAQIFAmNMAgZTdHJpbmcEAmNNBQJjTAkA2QQBBQJjTQMJAAECBQJjTAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjTgAEAmNMCQCiCAEJAQFNAAMJAAECBQJjTAIGU3RyaW5nBAJjTQUCY0wJANkEAQUCY00DCQABAgUCY0wCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECY08BAmNEBAJjUAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJjTAkBAmNLAAMJAAECBQJjTAIKQnl0ZVZlY3RvcgQCY1EFAmNMAwkAAAIIBQJjRA9jYWxsZXJQdWJsaWNLZXkFAmNRBgUCY1ADCQABAgUCY0wCBFVuaXQDCQAAAggFAmNEBmNhbGxlcgUEdGhpcwYFAmNQCQACAQILTWF0Y2ggZXJyb3IVAmNEAQtjb25zdHJ1Y3RvcgECYXMEAmNSCQECY08BBQJjRAMJAAACBQJjUgUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUsABQJhcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNEAQpzZXRNYW5hZ2VyAQJjUwQCY1IJAQJjTwEFAmNEAwkAAAIFAmNSBQJjUgQCY1QJANkEAQUCY1MDCQAAAgUCY1QFAmNUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFNAAUCY1MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjRAEOY29uZmlybU1hbmFnZXIABAJjVQkBAmNOAAQCY1YDCQEJaXNEZWZpbmVkAQUCY1UGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmNWBQJjVgQCY1cDCQAAAggFAmNED2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY1UGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmNXBQJjVwkAzAgCCQELU3RyaW5nRW50cnkCCQEBTAAJANgEAQkBBXZhbHVlAQUCY1UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU0ABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY0QBA3B1dAICYkkCY1gEAmNZCQECYXkABAJjWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCY1kFAXgCIUVycm9yLiBJbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzLgQCZGEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmNZBQF5AitFcnJvci4gSW5jb3JyZWN0IHNsaXBwYWdlIGNvbnRyYWN0IGFkZHJlc3MuAwkAZgIAAAUCYkkJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCY0oJAQJjRwMFAmNEBQJiSQYEAmNrCAUCY0oCXzIEAmJwCAUCY0oCXzcEAmJHCAUCY0oCXzkEAmNsCAUCY0oDXzEwBAJjbQgFAmNKA18xMQQCZGIIBQJjSgNfMTIEAmRjCAUCY0oDXzEzBAJkZAkA/AcEBQJhcwIEZW1pdAkAzAgCBQJjawUDbmlsBQNuaWwDCQAAAgUCZGQFAmRkBAJkZQQCY0wFAmRkAwkAAQIFAmNMAgdBZGRyZXNzBAJkZgUCY0wJAPwHBAUCZGYCBGVtaXQJAMwIAgUCY2sFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRlBQJkZQQCZGcDCQBmAgUCY2wAAAkA/AcEBQJkYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRiBQJjbAUDbmlsBQNuaWwDCQAAAgUCZGcFAmRnBAJkaAMJAGYCBQJjbQAACQD8BwQFAmRhAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGMFAmNtBQNuaWwFA25pbAMJAAACBQJkaAUCZGgEAmRpAwUCY1gEAmRqCQD8BwQFAmNaAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJicAUCY2sFA25pbAMJAAACBQJkagUCZGoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY0QGY2FsbGVyBQJjawUCYnAFA25pbAkAzggCBQJiRwUCZGkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY0QBCnB1dEZvckZyZWUBAmRrAwkAZgIAAAUCZGsJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCY0oJAQJjRwMFAmNEBQJkawcIBQJjSgJfOQJjRAEDZ2V0AAQCYlkJAQJjQwEFAmNEBAJkbAgFAmJZAl8xBAJiRggFAmJZAl8yBAJjRggFAmJZAl8zBAJibggFAmJZAl80BAJiRwgFAmJZAl81BAJkbQkA/AcEBQJhcwIEYnVybgkAzAgCBQJjRgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibgUCY0YFA25pbAMJAAACBQJkbQUCZG0FAmJHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNEAQlnZXROb0xlc3MCAmRuAmRvBAJiWQkBAmNDAQUCY0QEAmJFCAUCYlkCXzEEAmJGCAUCYlkCXzIEAmNGCAUCYlkCXzMEAmJuCAUCYlkCXzQEAmJHCAUCYlkCXzUDCQBmAgUCZG4FAmJFCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJiRQIDIDwgCQCkAwEFAmRuAwkAZgIFAmRvBQJiRgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmJGAgMgPCAJAKQDAQUCZG8EAmRtCQD8BwQFAmFzAgRidXJuCQDMCAIFAmNGBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJuBQJjRgUDbmlsAwkAAAIFAmRtBQJkbQUCYkcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY0QBDXVuc3Rha2VBbmRHZXQBAmRwBAJkcQMJAQIhPQIJAJADAQgFAmNECHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmRxBQJkcQQCYmMJAQJhdgAEAmNZCQECYXkABAJicAkA2QQBCQCRAwIFAmJjBQFtBAJjWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCY1kFAXgCIUVycm9yLiBJbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzLgQCZHIJAPwHBAUCY1oCB3Vuc3Rha2UJAMwIAgkA2AQBBQJicAkAzAgCBQJkcAUDbmlsBQNuaWwDCQAAAgUCZHIFAmRyBAJiWQkBAmJsBAkA2AQBCAUCY0QNdHJhbnNhY3Rpb25JZAkA2AQBBQJicAUCZHAIBQJjRAZjYWxsZXIEAmJzCQENcGFyc2VJbnRWYWx1ZQEIBQJiWQJfOQQCYkcIBQJiWQNfMTAEAmRzAwMJAQJhdAAGCQAAAgUCYnMFAWoJAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJzBgMJAAACBQJkcwUCZHMEAmRtCQD8BwQFAmFzAgRidXJuCQDMCAIFAmRwBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJwBQJkcAUDbmlsAwkAAAIFAmRtBQJkbQUCYkcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY0QBCGFjdGl2YXRlAgJkdAJkdQMJAQIhPQIJAKUIAQgFAmNEBmNhbGxlcgkApQgBBQJhcwkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcABQJkdQUDbmlsAgdzdWNjZXNzAmNEARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhdgACY0QBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFQCQCUCgIFA25pbAkBAmFPAQUCYVACY0QBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmFXAmFYAmJiBAJiawkBAmJhAwUCYVcFAmFYBQJiYgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJrAAAJAMwIAgkApgMBCQCRAwIFAmJrAAEJAMwIAgkApgMBCQCRAwIFAmJrAAIFA25pbAJjRAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUEBQgkAlAoCBQNuaWwJAKYDAQkBAXoCBQFBBQFCAmNEARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFEAUUJAJQKAgUDbmlsCQEBQwIJAKcDAQUBRAUBRQJjRAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJhUgJhUwkAlAoCBQNuaWwJAKYDAQkBAmFRAgkApwMBBQJhUgkApwMBBQJhUwJjRAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJtAmJJAmJKAmJLAmJMAmJNAVMCYk4CYk8JAJQKAgUDbmlsCQECYkgJBQJibQUCYkkFAmJKBQJiSwUCYkwFAmJNBQFTBQJiTgUCYk8CY0QBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJibQJibgJibwFTBAJiWQkBAmJsBAUCYm0FAmJuBQJibwkBEUBleHRyTmF0aXZlKDEwNjIpAQUBUwkAlAoCBQNuaWwJAJwKCggFAmJZAl8xCAUCYlkCXzIIBQJiWQJfMwgFAmJZAl80CAUCYlkCXzUIBQJiWQJfNggFAmJZAl83CQCmAwEIBQJiWQJfOAgFAmJZAl85CAUCYlkDXzEwAmNEAQ1zdGF0c1JFQURPTkxZAAQCYmMJAQJhdgAEAmJwCQDZBAEJAJEDAgUCYmMFAW0EAmNxCQCRAwIFAmJjBQFuBAJjcgkAkQMCBQJiYwUBbwQCYlIJAJEDAgUCYmMFAXIEAmJTCQCRAwIFAmJjBQFzBAJiZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFwBAJiZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFxBAJkdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJicAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNzCQECYU8BBQJjcQQCY3QJAQJhTwEFAmNyBAJkdwMJAAACBQJkdgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiYQMFAmNzBQJjdAUCZHYEAmJ6AAAEAmR4CQEBQwIJAJEDAgUCZHcAAQUBYgQCZHkJAQFDAgkAkQMCBQJkdwACBQFiBAJkegkBBXZhbHVlAQkAmggCBQJhcwkBAmFoAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY3MJAMwIAgkApAMBBQJjdAkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJkeAkAzAgCCQCkAwEFAmR5CQDMCAIJAKQDAQUCZHoFA25pbAUBZgJjRAEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmJKBAJiYwkBAmF2AAQCYnAJANkEAQkAkQMCBQJiYwUBbQQCYlAJAJEDAgUCYmMFAW4EAmJxCQDZBAEFAmJQBAJiUQkAkQMCBQJiYwUBbwQCYnIJANkEAQUCYlEEAmJkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXAEAmJlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXEEAmJzCQCRAwIFAmJjBQFsBAJkdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJicAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNzCQECYU8BBQJiUAQCY3QJAQJhTwEFAmJRBAJhWQkBAXoCBQJjcwUCYmQEAmFaCQEBegIFAmN0BQJiZQQCYnkDCQAAAgUCZHYAAAUBZQkBAmFRAgUCYVoFAmFZBAJiVgkBAXoCBQJiSgUCYmQEAmJXCQC8AgMFAmJWBQJieQUBZAQCYkwJAQFDAgUCYlcFAmJlBAJjSgkBAmJICQIAAKDCHgUCYkoFAmJxBQJiTAUCYnICAAYHBAJjZwgFAmNKAl8xBAJkQQgFAmNKAl8zBAJidQgFAmNKAl80BAJidwgFAmNKAl81BAJidAgFAmNKAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEJAQFDAgUCYnkFAWIJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYnQJAMwIAgUCYnMJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJMBQNuaWwFAWYCY0QBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmJMBAJiYwkBAmF2AAQCYnAJANkEAQkAkQMCBQJiYwUBbQQCYlAJAJEDAgUCYmMFAW4EAmJxCQDZBAEFAmJQBAJiUQkAkQMCBQJiYwUBbwQCYnIJANkEAQUCYlEEAmJkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXAEAmJlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXEEAmJzCQCRAwIFAmJjBQFsBAJkdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJicAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRCCQECYU8BBQJiUAQCZEMJAQJhTwEFAmJRBAJkRAkBAXoCBQJkQgUCYmQEAmRFCQEBegIFAmRDBQJiZQQCYnkDCQAAAgUCZHYAAAUBZQkBAmFRAgUCZEUFAmREBAJiVwkBAXoCBQJiTAUCYmUEAmJWCQC8AgMFAmJXBQFkBQJieQQCYkoJAQFDAgUCYlYFAmJkBAJjSgkBAmJICQIAAKDCHgUCYkoFAmJxBQJiTAUCYnICAAYHBAJjZwgFAmNKAl8xBAJkQQgFAmNKAl8zBAJidQgFAmNKAl80BAJidwgFAmNKAl81BAJidAgFAmNKAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEJAQFDAgUCYnkFAWIJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYnQJAMwIAgUCYnMJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJMBQNuaWwFAWYCY0QBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmRGAmRHBAJiWQkBAmJsBAIABQJkRgUCZEcFBHRoaXMEAmJFCAUCYlkCXzEEAmJGCAUCYlkCXzIEAmJ1CAUCYlkCXzUEAmJ3CAUCYlkCXzYEAmJ0CAUCYlkCXzcEAmJ6CAUCYlkCXzgEAmJzCQENcGFyc2VJbnRWYWx1ZQEIBQJiWQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJFCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYnQJAMwIAgkApgMBBQJiegkAzAgCCQCkAwEFAmJzBQNuaWwFAWYBAmRIAQJkSQAEAmRKBAJjTAkBAmNLAAMJAAECBQJjTAIKQnl0ZVZlY3RvcgQCY1EFAmNMBQJjUQMJAAECBQJjTAIEVW5pdAgFAmRID3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJjTAUCZEgDCQABAgUCY0wCBU9yZGVyBAJjcAUCY0wEAmRLCQECYXUABAJhbAkBAmNvAQUCY3AEAmFtCQD0AwMIBQJjcAlib2R5Qnl0ZXMJAJEDAggFAmNwBnByb29mcwAACAUCY3APc2VuZGVyUHVibGljS2V5BAJhbgkA9AMDCAUCY3AJYm9keUJ5dGVzCQCRAwIIBQJjcAZwcm9vZnMAAQUCZEsDAwMFAmFsBQJhbQcFAmFuBwYJAQJhawMFAmFsBQJhbQUCYW4DCQABAgUCY0wCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJjTQUCY0wEAmRMCQD2AwEJAQV2YWx1ZQEIBQJjTQZzY3JpcHQEAmRNCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYXMJAQJhagAEAmROCQDxBwEFBHRoaXMDAwkAAAIFAmRNBQJkTAkBAiE9AgUCZE4FAmRMBwYJAPQDAwgFAmRICWJvZHlCeXRlcwkAkQMCCAUCZEgGcHJvb2ZzAAAFAmRKCQD0AwMIBQJkSAlib2R5Qnl0ZXMJAJEDAggFAmRIBnByb29mcwAABQJkSmyaPXk=", "chainId": 84, "height": 2208523, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 8
5+
6+let b = 100000000
7+
8+let c = toBigInt(100000000)
9+
10+let d = toBigInt(1000000000000000000)
11+
12+let e = toBigInt(0)
13+
14+let f = "__"
15+
16+let g = 1
17+
18+let h = 2
19+
20+let i = 3
21+
22+let j = 4
23+
24+let k = 1
25+
26+let l = 2
27+
28+let m = 3
29+
30+let n = 4
31+
32+let o = 5
33+
34+let p = 6
35+
36+let q = 7
37+
38+let r = 8
39+
40+let s = 9
41+
42+let t = 10
43+
44+let u = 1
45+
46+let v = 2
47+
48+let w = 3
49+
50+let x = 1
51+
52+let y = 7
53+
54+func z (A,B) = fraction(toBigInt(A), d, toBigInt(B))
55+
56+
57+func C (D,E) = toInt(fraction(D, toBigInt(E), d))
58+
59+
60+func F (G,H,I) = fraction(G, H, I)
61+
62+
63+func J (D) = if ((e > D))
64+ then -(D)
65+ else D
66+
67+
68+func K () = "%s__factoryContract"
69+
70+
71+func L () = "%s__managerPublicKey"
72+
73+
74+func M () = "%s__pendingManagerPublicKey"
75+
76+
77+func N () = "%s%s__price__last"
78+
79+
80+func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
81+
82+
83+func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
84+
85+
86+func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
87+
88+
89+func V () = "%s__amountAsset"
90+
91+
92+func W () = "%s__priceAsset"
93+
94+
95+func X () = "%s__factoryConfig"
96+
97+
98+func Y () = "%s%s__matcher__publicKey"
99+
100+
101+func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
102+
103+
104+func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
105+
106+
107+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
108+
109+
110+func ag () = "%s__shutdown"
111+
112+
113+func ah (ai) = ("%s%s__poolWeight__" + ai)
114+
115+
116+func aj () = "%s__allowedLpScriptHash"
117+
118+
119+func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
120+
121+
122+func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
123+
124+
125+func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
126+
127+
128+let as = addressFromStringValue(ao(this, K()))
129+
130+func at () = valueOrElse(getBoolean(as, ag()), false)
131+
132+
133+func au () = fromBase58String(ao(as, Y()))
134+
135+
136+func av () = {
137+ let aw = ao(this, V())
138+ let ax = ao(this, W())
139+ let ad = ar(as, ae(ax))
140+ let ac = ar(as, ae(aw))
141+ split(ao(as, ab(toString(ac), toString(ad))), f)
142+ }
143+
144+
145+func ay () = split(ao(as, X()), f)
146+
147+
148+func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
149+
150+
151+func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
152+
153+
154+func aO (aP) = if ((aP == "WAVES"))
155+ then wavesBalance(this).available
156+ else assetBalance(this, fromBase58String(aP))
157+
158+
159+func aQ (aR,aS) = fraction(aR, d, aS)
160+
161+
162+func aT (aU,aV,aW,aX) = {
163+ let aY = z(aW, aU)
164+ let aZ = z(aX, aV)
165+ aQ(aZ, aY)
166+ }
167+
168+
169+func ba (aW,aX,bb) = {
170+ let bc = av()
171+ let bd = parseIntValue(bc[p])
172+ let be = parseIntValue(bc[q])
173+ let bf = aT(bd, be, aW, aX)
174+ let aS = z(aW, bd)
175+ let aR = z(aX, be)
176+ let bg = z(bb, b)
177+ let bh = aQ(aS, bg)
178+ let bi = aQ(aR, bg)
179+[bf, bh, bi]
180+ }
181+
182+
183+func bj (aW,aX,bb) = {
184+ let bk = ba(aW, aX, bb)
185+[C(bk[0], b), C(bk[1], b), C(bk[2], b)]
186+ }
187+
188+
189+func bl (bm,bn,bo,S) = {
190+ let bc = av()
191+ let bp = bc[m]
192+ let bq = bc[n]
193+ let br = bc[o]
194+ let aU = parseIntValue(bc[p])
195+ let aV = parseIntValue(bc[q])
196+ let bs = bc[l]
197+ let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
198+ if ((bp != bn))
199+ then throw("Invalid asset passed.")
200+ else {
201+ let bu = aO(bq)
202+ let bv = z(bu, aU)
203+ let bw = aO(br)
204+ let bx = z(bw, aV)
205+ let by = aQ(bx, bv)
206+ let bz = C(by, b)
207+ let bA = z(bo, b)
208+ let bB = z(bt, b)
209+ let bC = fraction(bv, bA, bB)
210+ let bD = fraction(bx, bA, bB)
211+ let bE = C(bC, aU)
212+ let bF = C(bD, aV)
213+ let bG = if ((bm == ""))
214+ then nil
215+ else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
216+ then unit
217+ else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
218+ then unit
219+ else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
220+ $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
221+ }
222+ }
223+
224+
225+func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
226+ let bc = av()
227+ let bp = fromBase58String(bc[m])
228+ let bP = bc[n]
229+ let bQ = bc[o]
230+ let bR = bc[r]
231+ let bS = bc[s]
232+ let bd = parseIntValue(bc[p])
233+ let be = parseIntValue(bc[q])
234+ let bs = bc[l]
235+ let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
236+ let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
237+ let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
238+ if (if ((bP != bT))
239+ then true
240+ else (bQ != bU))
241+ then throw("Invalid amt or price asset passed.")
242+ else {
243+ let bu = if (bN)
244+ then aO(bP)
245+ else (aO(bP) - bJ)
246+ let bw = if (bN)
247+ then aO(bQ)
248+ else (aO(bQ) - bL)
249+ let bV = z(bJ, bd)
250+ let bW = z(bL, be)
251+ let bX = aQ(bW, bV)
252+ let bv = z(bu, bd)
253+ let bx = z(bw, be)
254+ let bY = if ((bt == 0))
255+ then {
256+ let by = e
257+ let bZ = e
258+ let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
259+ $Tuple5(C(bg, b), C(bV, bd), C(bW, be), aQ((bx + bW), (bv + bV)), bZ)
260+ }
261+ else {
262+ let by = aQ(bx, bv)
263+ let bZ = fraction(J((by - bX)), d, by)
264+ let ca = z(bI, b)
265+ if (if ((by != e))
266+ then (bZ > ca)
267+ else false)
268+ then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
269+ else {
270+ let bB = z(bt, b)
271+ let cb = fraction(bV, by, d)
272+ let cc = fraction(bW, d, by)
273+ let cd = if ((cb > bW))
274+ then $Tuple2(cc, bW)
275+ else $Tuple2(bV, cb)
276+ let ce = cd._1
277+ let cf = cd._2
278+ let bg = fraction(bB, cf, bx)
279+ $Tuple5(C(bg, b), C(ce, bd), C(cf, be), by, bZ)
280+ }
281+ }
282+ let cg = bY._1
283+ let ch = bY._2
284+ let ci = bY._3
285+ let bz = C(bY._4, b)
286+ let cj = C(bY._5, b)
287+ if ((0 >= cg))
288+ then throw("Invalid calculations. LP calculated is less than zero.")
289+ else {
290+ let ck = if (!(bO))
291+ then 0
292+ else cg
293+ let cl = (bJ - ch)
294+ let cm = (bL - ci)
295+ let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
296+ $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
297+ }
298+ }
299+ }
300+
301+
302+func co (cp) = {
303+ let bc = av()
304+ let cq = bc[n]
305+ let cr = bc[o]
306+ let bs = parseIntValue(bc[l])
307+ let bd = parseIntValue(bc[p])
308+ let be = parseIntValue(bc[q])
309+ let cs = aO(cq)
310+ let ct = aO(cr)
311+ let by = if ((cp.orderType == Buy))
312+ then aT(bd, be, (cs + cp.amount), ct)
313+ else aT(bd, be, (cs - cp.amount), ct)
314+ let bz = C(by, b)
315+ if (if (if (at())
316+ then true
317+ else (bs == i))
318+ then true
319+ else (bs == j))
320+ then throw("Exchange operations disabled")
321+ else {
322+ let cu = cp.assetPair.amountAsset
323+ let cv = if ((cu == unit))
324+ then "WAVES"
325+ else toBase58String(value(cu))
326+ let cw = cp.assetPair.priceAsset
327+ let cx = if ((cw == unit))
328+ then "WAVES"
329+ else toBase58String(value(cw))
330+ if (if ((cv != cq))
331+ then true
332+ else (cx != cr))
333+ then throw("Wrong order assets.")
334+ else {
335+ let cy = cp.price
336+ let cz = fraction(b, be, bd)
337+ let cA = F(cy, b, cz)
338+ let cB = if ((cp.orderType == Buy))
339+ then (bz >= cA)
340+ else (cA >= bz)
341+ true
342+ }
343+ }
344+ }
345+
346+
347+func cC (cD) = if ((size(cD.payments) != 1))
348+ then throw("exactly 1 payment is expected")
349+ else {
350+ let cE = value(cD.payments[0])
351+ let bn = value(cE.assetId)
352+ let cF = cE.amount
353+ let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
354+ let bE = bY._1
355+ let bF = bY._2
356+ let bs = parseIntValue(bY._9)
357+ let bG = bY._10
358+ if (if (at())
359+ then true
360+ else (bs == j))
361+ then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
362+ else $Tuple5(bE, bF, cF, bn, bG)
363+ }
364+
365+
366+func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
367+ then throw("exactly 2 payments are expected")
368+ else {
369+ let cH = value(cD.payments[0])
370+ let cI = value(cD.payments[1])
371+ let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
372+ let bs = parseIntValue(cJ._8)
373+ if (if (if (at())
374+ then true
375+ else (bs == h))
376+ then true
377+ else (bs == j))
378+ then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
379+ else cJ
380+ }
381+
382+
383+func cK () = {
384+ let cL = getString(L())
385+ if ($isInstanceOf(cL, "String"))
386+ then {
387+ let cM = cL
388+ fromBase58String(cM)
389+ }
390+ else if ($isInstanceOf(cL, "Unit"))
391+ then unit
392+ else throw("Match error")
393+ }
394+
395+
396+func cN () = {
397+ let cL = getString(M())
398+ if ($isInstanceOf(cL, "String"))
399+ then {
400+ let cM = cL
401+ fromBase58String(cM)
402+ }
403+ else if ($isInstanceOf(cL, "Unit"))
404+ then unit
405+ else throw("Match error")
406+ }
407+
408+
409+func cO (cD) = {
410+ let cP = throw("Permission denied")
411+ let cL = cK()
412+ if ($isInstanceOf(cL, "ByteVector"))
413+ then {
414+ let cQ = cL
415+ if ((cD.callerPublicKey == cQ))
416+ then true
417+ else cP
418+ }
419+ else if ($isInstanceOf(cL, "Unit"))
420+ then if ((cD.caller == this))
421+ then true
422+ else cP
423+ else throw("Match error")
424+ }
425+
426+
427+@Callable(cD)
428+func constructor (as) = {
429+ let cR = cO(cD)
430+ if ((cR == cR))
431+ then [StringEntry(K(), as)]
432+ else throw("Strict value is not equal to itself.")
433+ }
434+
435+
436+
437+@Callable(cD)
438+func setManager (cS) = {
439+ let cR = cO(cD)
440+ if ((cR == cR))
441+ then {
442+ let cT = fromBase58String(cS)
443+ if ((cT == cT))
444+ then [StringEntry(M(), cS)]
445+ else throw("Strict value is not equal to itself.")
446+ }
447+ else throw("Strict value is not equal to itself.")
448+ }
449+
450+
451+
452+@Callable(cD)
453+func confirmManager () = {
454+ let cU = cN()
455+ let cV = if (isDefined(cU))
456+ then true
457+ else throw("No pending manager")
458+ if ((cV == cV))
459+ then {
460+ let cW = if ((cD.callerPublicKey == value(cU)))
461+ then true
462+ else throw("You are not pending manager")
463+ if ((cW == cW))
464+ then [StringEntry(L(), toBase58String(value(cU))), DeleteEntry(M())]
465+ else throw("Strict value is not equal to itself.")
466+ }
467+ else throw("Strict value is not equal to itself.")
468+ }
469+
470+
471+
472+@Callable(cD)
473+func put (bI,cX) = {
474+ let cY = ay()
475+ let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
476+ let da = valueOrErrorMessage(addressFromString(cY[y]), "Error. Incorrect slippage contract address.")
477+ if ((0 > bI))
478+ then throw("Invalid slippageTolerance passed")
479+ else {
480+ let cJ = cG(cD, bI, true)
481+ let ck = cJ._2
482+ let bp = cJ._7
483+ let bG = cJ._9
484+ let cl = cJ._10
485+ let cm = cJ._11
486+ let db = cJ._12
487+ let dc = cJ._13
488+ let dd = invoke(as, "emit", [ck], nil)
489+ if ((dd == dd))
490+ then {
491+ let de = {
492+ let cL = dd
493+ if ($isInstanceOf(cL, "Address"))
494+ then {
495+ let df = cL
496+ invoke(df, "emit", [ck], nil)
497+ }
498+ else unit
499+ }
500+ if ((de == de))
501+ then {
502+ let dg = if ((cl > 0))
503+ then invoke(da, "put", nil, [AttachedPayment(db, cl)])
504+ else nil
505+ if ((dg == dg))
506+ then {
507+ let dh = if ((cm > 0))
508+ then invoke(da, "put", nil, [AttachedPayment(dc, cm)])
509+ else nil
510+ if ((dh == dh))
511+ then {
512+ let di = if (cX)
513+ then {
514+ let dj = invoke(cZ, "stake", nil, [AttachedPayment(bp, ck)])
515+ if ((dj == dj))
516+ then nil
517+ else throw("Strict value is not equal to itself.")
518+ }
519+ else [ScriptTransfer(cD.caller, ck, bp)]
520+ (bG ++ di)
521+ }
522+ else throw("Strict value is not equal to itself.")
523+ }
524+ else throw("Strict value is not equal to itself.")
525+ }
526+ else throw("Strict value is not equal to itself.")
527+ }
528+ else throw("Strict value is not equal to itself.")
529+ }
530+ }
531+
532+
533+
534+@Callable(cD)
535+func putForFree (dk) = if ((0 > dk))
536+ then throw("Invalid value passed")
537+ else {
538+ let cJ = cG(cD, dk, false)
539+ cJ._9
540+ }
541+
542+
543+
544+@Callable(cD)
545+func get () = {
546+ let bY = cC(cD)
547+ let dl = bY._1
548+ let bF = bY._2
549+ let cF = bY._3
550+ let bn = bY._4
551+ let bG = bY._5
552+ let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
553+ if ((dm == dm))
554+ then bG
555+ else throw("Strict value is not equal to itself.")
556+ }
557+
558+
559+
560+@Callable(cD)
561+func getNoLess (dn,do) = {
562+ let bY = cC(cD)
563+ let bE = bY._1
564+ let bF = bY._2
565+ let cF = bY._3
566+ let bn = bY._4
567+ let bG = bY._5
568+ if ((dn > bE))
569+ then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(dn)))
570+ else if ((do > bF))
571+ then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(do)))
572+ else {
573+ let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
574+ if ((dm == dm))
575+ then bG
576+ else throw("Strict value is not equal to itself.")
577+ }
578+ }
579+
580+
581+
582+@Callable(cD)
583+func unstakeAndGet (dp) = {
584+ let dq = if ((size(cD.payments) != 0))
585+ then throw("No payments are expected")
586+ else true
587+ if ((dq == dq))
588+ then {
589+ let bc = av()
590+ let cY = ay()
591+ let bp = fromBase58String(bc[m])
592+ let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
593+ let dr = invoke(cZ, "unstake", [toBase58String(bp), dp], nil)
594+ if ((dr == dr))
595+ then {
596+ let bY = bl(toBase58String(cD.transactionId), toBase58String(bp), dp, cD.caller)
597+ let bs = parseIntValue(bY._9)
598+ let bG = bY._10
599+ let ds = if (if (at())
600+ then true
601+ else (bs == j))
602+ then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
603+ else true
604+ if ((ds == ds))
605+ then {
606+ let dm = invoke(as, "burn", [dp], [AttachedPayment(bp, dp)])
607+ if ((dm == dm))
608+ then bG
609+ else throw("Strict value is not equal to itself.")
610+ }
611+ else throw("Strict value is not equal to itself.")
612+ }
613+ else throw("Strict value is not equal to itself.")
614+ }
615+ else throw("Strict value is not equal to itself.")
616+ }
617+
618+
619+
620+@Callable(cD)
621+func activate (dt,du) = if ((toString(cD.caller) != toString(as)))
622+ then throw("permissions denied")
623+ else $Tuple2([StringEntry(V(), dt), StringEntry(W(), du)], "success")
624+
625+
626+
627+@Callable(cD)
628+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
629+
630+
631+
632+@Callable(cD)
633+func getAccBalanceWrapperREADONLY (aP) = $Tuple2(nil, aO(aP))
634+
635+
636+
637+@Callable(cD)
638+func calcPricesWrapperREADONLY (aW,aX,bb) = {
639+ let bk = ba(aW, aX, bb)
640+ $Tuple2(nil, [toString(bk[0]), toString(bk[1]), toString(bk[2])])
641+ }
642+
643+
644+
645+@Callable(cD)
646+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
647+
648+
649+
650+@Callable(cD)
651+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
652+
653+
654+
655+@Callable(cD)
656+func calcPriceBigIntWrapperREADONLY (aR,aS) = $Tuple2(nil, toString(aQ(parseBigIntValue(aR), parseBigIntValue(aS))))
657+
658+
659+
660+@Callable(cD)
661+func estimatePutOperationWrapperREADONLY (bm,bI,bJ,bK,bL,bM,S,bN,bO) = $Tuple2(nil, bH(bm, bI, bJ, bK, bL, bM, S, bN, bO))
662+
663+
664+
665+@Callable(cD)
666+func estimateGetOperationWrapperREADONLY (bm,bn,bo,S) = {
667+ let bY = bl(bm, bn, bo, addressFromStringValue(S))
668+ $Tuple2(nil, $Tuple10(bY._1, bY._2, bY._3, bY._4, bY._5, bY._6, bY._7, toString(bY._8), bY._9, bY._10))
669+ }
670+
671+
672+
673+@Callable(cD)
674+func statsREADONLY () = {
675+ let bc = av()
676+ let bp = fromBase58String(bc[m])
677+ let cq = bc[n]
678+ let cr = bc[o]
679+ let bR = bc[r]
680+ let bS = bc[s]
681+ let bd = parseIntValue(bc[p])
682+ let be = parseIntValue(bc[q])
683+ let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
684+ let cs = aO(cq)
685+ let ct = aO(cr)
686+ let dw = if ((dv == 0))
687+ then [e, e, e]
688+ else ba(cs, ct, dv)
689+ let bz = 0
690+ let dx = C(dw[1], b)
691+ let dy = C(dw[2], b)
692+ let dz = value(getInteger(as, ah(toString(this))))
693+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dv), toString(bz), toString(dx), toString(dy), toString(dz)], f))
694+ }
695+
696+
697+
698+@Callable(cD)
699+func evaluatePutByAmountAssetREADONLY (bJ) = {
700+ let bc = av()
701+ let bp = fromBase58String(bc[m])
702+ let bP = bc[n]
703+ let bq = fromBase58String(bP)
704+ let bQ = bc[o]
705+ let br = fromBase58String(bQ)
706+ let bd = parseIntValue(bc[p])
707+ let be = parseIntValue(bc[q])
708+ let bs = bc[l]
709+ let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
710+ let cs = aO(bP)
711+ let ct = aO(bQ)
712+ let aY = z(cs, bd)
713+ let aZ = z(ct, be)
714+ let by = if ((dv == 0))
715+ then e
716+ else aQ(aZ, aY)
717+ let bV = z(bJ, bd)
718+ let bW = fraction(bV, by, d)
719+ let bL = C(bW, be)
720+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
721+ let cg = cJ._1
722+ let dA = cJ._3
723+ let bu = cJ._4
724+ let bw = cJ._5
725+ let bt = cJ._6
726+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
727+ }
728+
729+
730+
731+@Callable(cD)
732+func evaluatePutByPriceAssetREADONLY (bL) = {
733+ let bc = av()
734+ let bp = fromBase58String(bc[m])
735+ let bP = bc[n]
736+ let bq = fromBase58String(bP)
737+ let bQ = bc[o]
738+ let br = fromBase58String(bQ)
739+ let bd = parseIntValue(bc[p])
740+ let be = parseIntValue(bc[q])
741+ let bs = bc[l]
742+ let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
743+ let dB = aO(bP)
744+ let dC = aO(bQ)
745+ let dD = z(dB, bd)
746+ let dE = z(dC, be)
747+ let by = if ((dv == 0))
748+ then e
749+ else aQ(dE, dD)
750+ let bW = z(bL, be)
751+ let bV = fraction(bW, d, by)
752+ let bJ = C(bV, bd)
753+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
754+ let cg = cJ._1
755+ let dA = cJ._3
756+ let bu = cJ._4
757+ let bw = cJ._5
758+ let bt = cJ._6
759+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
760+ }
761+
762+
763+
764+@Callable(cD)
765+func evaluateGetREADONLY (dF,dG) = {
766+ let bY = bl("", dF, dG, this)
767+ let bE = bY._1
768+ let bF = bY._2
769+ let bu = bY._5
770+ let bw = bY._6
771+ let bt = bY._7
772+ let bz = bY._8
773+ let bs = parseIntValue(bY._9)
774+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
775+ }
776+
777+
778+@Verifier(dH)
779+func dI () = {
780+ let dJ = {
781+ let cL = cK()
782+ if ($isInstanceOf(cL, "ByteVector"))
783+ then {
784+ let cQ = cL
785+ cQ
786+ }
787+ else if ($isInstanceOf(cL, "Unit"))
788+ then dH.senderPublicKey
789+ else throw("Match error")
790+ }
791+ let cL = dH
792+ if ($isInstanceOf(cL, "Order"))
793+ then {
794+ let cp = cL
795+ let dK = au()
796+ let al = co(cp)
797+ let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
798+ let an = sigVerify(cp.bodyBytes, cp.proofs[1], dK)
799+ if (if (if (al)
800+ then am
801+ else false)
802+ then an
803+ else false)
804+ then true
805+ else ak(al, am, an)
806+ }
807+ else if ($isInstanceOf(cL, "SetScriptTransaction"))
808+ then {
809+ let cM = cL
810+ let dL = blake2b256(value(cM.script))
811+ let dM = fromBase64String(value(getString(as, aj())))
812+ let dN = scriptHash(this)
813+ if (if ((dM == dL))
814+ then (dN != dL)
815+ else false)
816+ then true
817+ else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
818+ }
819+ else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
820+ }
821+

github/deemru/w8io/169f3d6 
53.16 ms