tx · Er48URK6xZ8SZK2657Gw37FNVN1WN4Ptgk2up7Jk7HNa

3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N:  -0.02000000 Waves

2021.01.13 18:48 [1351877] smart account 3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N > SELF 0.00000000 Waves

{ "type": 13, "id": "Er48URK6xZ8SZK2657Gw37FNVN1WN4Ptgk2up7Jk7HNa", "fee": 2000000, "feeAssetId": null, "timestamp": 1610552937389, "version": 1, "sender": "3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N", "senderPublicKey": "4bj7YXaphTC4Ldx7DqqMmrTjNshRtw1yNsej2XXZcAzS", "proofs": [ "3ZuWtwg85kVgCBnCAwfcRQUozhDV5DcxRMEAicFmKFxz4azW6y3anvBAxcSoCVxffttA13LRaPwDcRj4mS9FJNro", "3EgNfW1edN5vpZwy1tViCvQnG6piNUgH8UhpFqpp7Wxwai3JQ5zy4f8WZEugA2Py1WVE4Fnc4nHucFT5997Y5Zn4", "59G1RzXA9Tg7nyD3GUWAG2yDVy6tpAWCr2s77msVw3frDTGE3gJofi7gKGtxG6buX4fhns949UzLo2fgrvfEQzos" ], "script": "base64:AAIEAAAAAAAAABgIAhIAEgASAwoBARIECgIBCBIDCgEIEgAAAABPAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5BwEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkCAAAAAAEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkAAAAAAAAAAAAAAAAAB1dBVkVMRVQAAAAAAAX14QAAAAAABVBBVUxJAAAAAAAAD0JAAAAAAApQQVVMSVNDQUxFAAAAAAAAAAAGAAAAAAhQUklDRUxFVAAAAAAAAA9CQAAAAAAETVVMVAAAAAAABfXhAAAAAAAJTVVMVFNDQUxFAAAAAAAAAAAIAAAAAA1NSU5PUkRFUlRPVEFMCQAAaAAAAAIAAAAAAAAAAAoFAAAAB1dBVkVMRVQAAAAABk1BWFJPSQAAAAAAAAAAXwAAAAAIQ0FOQ0VMRUQCAAAACGNhbmNlbGVkAAAAAANORVcCAAAAA25ldwAAAAAGRklMTEVEAgAAAAZmaWxsZWQAAAAACFByaWNlS2V5AgAAAAVwcmljZQAAAAAOQm9uZEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAAEk5ldXRyaW5vQXNzZXRJZEtleQIAAAARbmV1dHJpbm9fYXNzZXRfaWQAAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAA1iYWxhbmNlX2xvY2tfAAAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAABXdhdmVzAAAAABhOZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAACG5ldXRyaW5vAAAAAA1GaXJzdE9yZGVyS2V5AgAAAAtvcmRlcl9maXJzdAEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAEGRlYnVnX29yZGVyX3JvaV8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfcHJpY2VfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3RvdGFsXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl9vd25lcl8FAAAAB29yZGVySWQBAAAAEWdldE9yZGVySGVpZ2h0S2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADW9yZGVyX2hlaWdodF8FAAAAB29yZGVySWQBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADW9yZGVyX3N0YXR1c18FAAAAB29yZGVySWQBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAATb3JkZXJfZmlsbGVkX3RvdGFsXwUAAAAHb3JkZXJJZAEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX3ByZXZfBQAAAAdvcmRlcklkAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAALb3JkZXJfbmV4dF8FAAAAB29yZGVySWQBAAAAFmNvbnZlcnROZXV0cmlub1RvV2F2ZXMAAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAIUFJJQ0VMRVQFAAAABXByaWNlBQAAAAdXQVZFTEVUBQAAAAVQQVVMSQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVwcmljZQUAAAAIUFJJQ0VMRVQFAAAABVBBVUxJBQAAAAdXQVZFTEVUAQAAABJjb252ZXJ0V2F2ZXNUb0JvbmQAAAACAAAABmFtb3VudAAAAAVwcmljZQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAZhbW91bnQFAAAABXByaWNlAQAAABJjb252ZXJ0Qm9uZFRvV2F2ZXMAAAACAAAABmFtb3VudAAAAAVwcmljZQkBAAAAFmNvbnZlcnROZXV0cmlub1RvV2F2ZXMAAAACBQAAAAZhbW91bnQFAAAABXByaWNlAAAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUdTtvo6VxMIh2iEZIvz80ovmfBZcv5hnJAAAAAA9jb250cm9sQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSejY4Al5SfQ9KNGpQt9mxR9NCIt5FVwUMAAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSuH7rQ0t+7YUExJ5nSa50m5XZ8tHHDqnMAAAAAD25ldXRyaW5vQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAAC2JvbmRBc3NldElkAQAAACCYmj/HR4FeqpgFSwNV5zduR1hOCfeWKyNvd0FwtMmJSAAAAAAJaXNCbG9ja2VkCQEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAKaXNfYmxvY2tlZAAAAAAMY3VycmVudFByaWNlCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAAhQcmljZUtleQAAAAAVbmV1dHJpbm9Mb2NrZWRCYWxhbmNlCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5AAAAAAdyZXNlcnZlCQAAZQAAAAIICQAD7wAAAAEFAAAAEG5ldXRyaW5vQ29udHJhY3QAAAAHcmVndWxhcgkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAFVdhdmVzTG9ja2VkQmFsYW5jZUtleQAAAAAOcmVzZXJ2ZXNJblVzZG4JAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAHcmVzZXJ2ZQUAAAAMY3VycmVudFByaWNlAAAAAA5uZXV0cmlub1N1cHBseQkAAGUAAAACCQAAZQAAAAIJAABkAAAAAgUAAAAVbmV1dHJpbm9Mb2NrZWRCYWxhbmNlCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAIcXVhbnRpdHkJAAPwAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAPbmV1dHJpbm9Bc3NldElkCQAD8AAAAAIFAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAAAAAAHZGVmaWNpdAkAAGUAAAACBQAAAA5uZXV0cmlub1N1cHBseQUAAAAOcmVzZXJ2ZXNJblVzZG4AAAAADWN1cnJlbnRNYXhSb2kJAABrAAAAAwUAAAAHZGVmaWNpdAAAAAAAAAAAZAUAAAAObmV1dHJpbm9TdXBwbHkAAAAADWN1cnJlbnRCck11bHQJAABrAAAAAwUAAAAOcmVzZXJ2ZXNJblVzZG4FAAAABE1VTFQFAAAADm5ldXRyaW5vU3VwcGx5AAAAAApmaXJzdE9yZGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA1GaXJzdE9yZGVyS2V5AAAAAAppc3N1ZWROc2J0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAEHRtcF9pc3N1ZWROc2J0XzIAAAAAAAAAAAAAAAAAB25zYnRNYXgJAABoAAAAAgkAAGgAAAACAAAAAAAAAAsiAAAAAAAAAAPoBQAAAAVQQVVMSQAAAAALbnNidEN1cnJlbnQJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAABzoAAAAAAAAAA+gFAAAABVBBVUxJBQAAAAppc3N1ZWROc2J0AQAAAA1nZXRPcmRlclByaWNlAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyT3duZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAAmlkAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAAmlkAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAJpZAEAAAAMZ2V0UHJldk9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAAAmlkAQAAAAxnZXROZXh0T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAACaWQBAAAADmdldFByaWNlRm9yUm9pAAAAAQAAAAtyb2lQZXJjZW50cwkAAGsAAAADCQAAZAAAAAIAAAAAAAAAAGQFAAAAC3JvaVBlcmNlbnRzBQAAAAxjdXJyZW50UHJpY2UAAAAAAAAAAGQBAAAAD2dldFJldmVyc2VQcmljZQAAAAEAAAAFcHJpY2UJAABpAAAAAgkAAGgAAAACBQAAAAhQUklDRUxFVAUAAAAIUFJJQ0VMRVQFAAAABXByaWNlAQAAABZjYWxjTnNidDJXYXZlc1ByaWNlUmF3AAAAAgAAAA1zcGVudFdhdmVzUmF3AAAAD3JlY2VpdmVkTnNidFJhdwkAAGsAAAADBQAAAA1zcGVudFdhdmVzUmF3CQAAaAAAAAIFAAAABVBBVUxJBQAAAAhQUklDRUxFVAUAAAAPcmVjZWl2ZWROc2J0UmF3AQAAAAlvcmRlckRhdGEAAAAHAAAAB29yZGVySWQAAAANdG90YWxXYXZlbGV0cwAAAA5maWxsZWRXYXZlbGV0cwAAAAVvd25lcgAAAAZzdGF0dXMAAAADcm9pAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJQcmljZUtleQAAAAEFAAAAB29yZGVySWQFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAB29yZGVySWQFAAAADXRvdGFsV2F2ZWxldHMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAOZmlsbGVkV2F2ZWxldHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVvd25lcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldE9yZGVySGVpZ2h0S2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAB29yZGVySWQFAAAABnN0YXR1cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABlkZWJ1Z19vcmRlcl9jdXJyZW50UHJpY2VfBQAAAAdvcmRlcklkBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAdvcmRlcklkBQAAAANyb2kFAAAAA25pbAEAAAAQaW50ZXJuYWxTZWxsQm9uZAAAAAgAAAALcEZpcnN0T3JkZXIAAAAKcE5leHRPcmRlcgAAAAxwRmlsbGVkVG90YWwAAAAEcFJvaQAAAAZwUHJpY2UAAAAQcFBheW1lbnRXYXZlbGV0cwAAABFvcmRlck93bmVyQWRkcmVzcwAAAAxpbnN0YW50T3JkZXIEAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwkBAAAADmdldFByaWNlRm9yUm9pAAAAAQUAAAAEcFJvaQQAAAANcmVtYWluZWRUb3RhbAkAAGUAAAACBQAAABBwUGF5bWVudFdhdmVsZXRzBQAAAAxwRmlsbGVkVG90YWwEAAAAE2ZpbGxhYmxlT3JkZXJBbW91bnQJAQAAABJjb252ZXJ0V2F2ZXNUb0JvbmQAAAACBQAAAA1yZW1haW5lZFRvdGFsBQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMEAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAkBAAAAEmNvbnZlcnRCb25kVG9XYXZlcwAAAAIFAAAAE2ZpbGxhYmxlT3JkZXJBbW91bnQFAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwQAAAAVbmJUb2tlbnNTZWxsQ29uZGl0aW9uCQAAZwAAAAIFAAAADWN1cnJlbnRNYXhSb2kFAAAABHBSb2kDCQEAAAABIQAAAAEFAAAAFW5iVG9rZW5zU2VsbENvbmRpdGlvbgkAAAIAAAABCQABLAAAAAICAAAAE2lubmFwcm9wcmlhdGUgcm9pOiAJAAGkAAAAAQUAAAAEcFJvaQMJAAAAAAAAAgUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkAAAAAAAAAAAACQAAAgAAAAECAAAAH2Nhbm5vdCBmaWxsIG9yZGVyIGF0IHRoZSBtb21lbnQEAAAADmNoYW5nZVdhdmVsZXRzCQAAZQAAAAIFAAAADXJlbWFpbmVkVG90YWwFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAQAAAAMd3JpdGVTZXREYXRhAwUAAAAMaW5zdGFudE9yZGVyCQEAAAAJb3JkZXJEYXRhAAAABwUAAAALcEZpcnN0T3JkZXIFAAAAEHBQYXltZW50V2F2ZWxldHMJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAAJYAAAAAQgFAAAAEW9yZGVyT3duZXJBZGRyZXNzAAAABWJ5dGVzBQAAAAZGSUxMRUQFAAAABHBSb2kFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgkAAGQAAAACBQAAAAxwRmlsbGVkVG90YWwFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAtwRmlyc3RPcmRlcgUAAAAGRklMTEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAApwTmV4dE9yZGVyAgAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQUAAAAKcE5leHRPcmRlcgUAAAADbmlsCQAETgAAAAIFAAAADHdyaXRlU2V0RGF0YQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFvcmRlck93bmVyQWRkcmVzcwUAAAATZmlsbGFibGVPcmRlckFtb3VudAUAAAALYm9uZEFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkBQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBQAAAA5jaGFuZ2VXYXZlbGV0cwUAAAAEdW5pdAUAAAADbmlsAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAUAAAADcm9pAAAABXByaWNlAAAACXByZXZPcmRlcgAAAANpbnYAAAAMaW5zdGFudE9yZGVyBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAA2ludgAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKbmV3T3JkZXJJZAkAAlgAAAABCAUAAAADaW52AAAADXRyYW5zYWN0aW9uSWQDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQAAZgAAAAIFAAAADU1JTk9SREVSVE9UQUwIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAXbWluIG9yZGVyIHRvdGFsIGVxdWFscyAJAAGkAAAAAQUAAAANTUlOT1JERVJUT1RBTAMJAABmAAAAAgUAAAADcm9pBQAAAAZNQVhST0kJAAACAAAAAQIAAAAXbWF4IHNldE9yZGVyIFJPSSBpcyA5NSUDCQAAZgAAAAIAAAAAAAAAAAAFAAAAA3JvaQkAAAIAAAABAgAAACNjYW4ndCBwbGFjZSBvcmRlciB3aXRoIG5lZ2F0aXZlIHJvaQMJAAAAAAAAAgUAAAADcm9pAAAAAAAAAAAACQAAAgAAAAECAAAAHHJvaSBzaG91bGQgbm90IGJlIGVxdWFsIHRvIDADCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAQAAAAIhPQAAAAIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAKbmV3T3JkZXJJZAIAAAAACQAAAgAAAAECAAAADG9yZGVyIGV4aXN0cwMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkBAAAAAiE9AAAAAgkBAAAADmdldE9yZGVyU3RhdHVzAAAAAQUAAAAJcHJldk9yZGVyBQAAAANORVcHCQAAAgAAAAECAAAAHHByZXYgb3JkZXIgc3RhdHVzIGlzIG5vdCBuZXcEAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24JAAAAAAAAAgUAAAAJcHJldk9yZGVyAgAAAAAEAAAABW93bmVyCQAEJQAAAAEIBQAAAANpbnYAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uBQAAAApmaXJzdE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAJcHJldk9yZGVyBAAAAAxuZXh0T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAluZXh0T3JkZXIEAAAAEGlzTmV4dE9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJbmV4dE9yZGVyAgAAAAAJAABnAAAAAgUAAAADcm9pBQAAAAxuZXh0T3JkZXJSb2kHBgcEAAAADHByZXZPcmRlclJvaQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEFAAAACXByZXZPcmRlcgQAAAAQaXNQcmV2T3JkZXJFcnJvcgMDCQEAAAACIT0AAAACBQAAAAlwcmV2T3JkZXICAAAAAAkAAGYAAAACBQAAAAxwcmV2T3JkZXJSb2kFAAAAA3JvaQcGBwMDBQAAABBpc05leHRPcmRlckVycm9yBgUAAAAQaXNQcmV2T3JkZXJFcnJvcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9pbnZhbGlkIG9yZGVyIGlzUHJldk9yZGVyRXJyb3I6CQABpQAAAAEFAAAAEGlzUHJldk9yZGVyRXJyb3ICAAAAEiBpc05leHRPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc05leHRPcmRlckVycm9yAwMFAAAAGWlzTmV3T3JkZXJBdEZpcnN0UG9zaXRpb24JAABnAAAAAgUAAAANY3VycmVudE1heFJvaQUAAAADcm9pBwkBAAAAEGludGVybmFsU2VsbEJvbmQAAAAIBQAAAApuZXdPcmRlcklkBQAAAAluZXh0T3JkZXIAAAAAAAAAAAAFAAAAA3JvaQUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CAUAAAADaW52AAAABmNhbGxlcgYDBQAAAAxpbnN0YW50T3JkZXIJAAACAAAAAQIAAAAy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AAPuAAAAAQkAAlkAAAABAgAAACxhZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxzZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxkZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxmZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxnZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxoZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxqZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxrZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxyZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZExxNUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZEx5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZEx1NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZExoNUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACsxZEw0SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDJkTDI1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDNkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDRkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDVkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDZkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDdkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDhkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkxTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkyTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkzTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDk0TDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwEAAAAUcHJpdmF0ZU5zYnRQcmljZVJFU1QAAAAABAAAAAprQ2FsY0FycmF5CQEAAAAKY2FsY3VsYXRlSwAAAAUFAAAAB3Jlc2VydmUFAAAADm5ldXRyaW5vU3VwcGx5BQAAAAxjdXJyZW50UHJpY2UFAAAAB25zYnRNYXgFAAAAC25zYnRDdXJyZW50BAAAAAVtdWx0SwkAAZEAAAACBQAAAAprQ2FsY0FycmF5BQAAAAhJZHhNdWx0SwQAAAAJbXVsdFN0ZXAxCQAAawAAAAMFAAAAB25zYnRNYXgFAAAABE1VTFQJAABlAAAAAgUAAAAHbnNidE1heAUAAAALbnNidEN1cnJlbnQEAAAACW11bHRTdGVwMgkAAGsAAAADBQAAAAltdWx0U3RlcDEFAAAACW11bHRTdGVwMQUAAAAETVVMVAQAAAASbXVsdE5zYnQydXNkblByaWNlCQAAawAAAAMFAAAABW11bHRLBQAAAAltdWx0U3RlcDIFAAAABE1VTFQEAAAADm5zYnQydXNkblByaWNlCQAAawAAAAMFAAAAEm11bHROc2J0MnVzZG5QcmljZQUAAAAFUEFVTEkFAAAABE1VTFQEAAAAD25zYnQyd2F2ZXNQcmljZQkAAGsAAAADBQAAAA5uc2J0MnVzZG5QcmljZQUAAAAFUEFVTEkFAAAADGN1cnJlbnRQcmljZQkABRQAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAObnNidDJ1c2RuUHJpY2UFAAAADm5zYnQydXNkblByaWNlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAPbnNidDJ3YXZlc1ByaWNlBQAAAA9uc2J0MndhdmVzUHJpY2UAAAAGAAAAAWkBAAAADW5zYnRQcmljZVJFU1QAAAAABAAAAA5uc2J0UHJpY2VUdXBsZQkBAAAAFHByaXZhdGVOc2J0UHJpY2VSRVNUAAAAAAQAAAAObnNidDJ1c2RuUHJpY2UICAUAAAAObnNidFByaWNlVHVwbGUAAAACXzEAAAAFdmFsdWUEAAAAD25zYnQyd2F2ZXNQcmljZQgIBQAAAA5uc2J0UHJpY2VUdXBsZQAAAAJfMgAAAAV2YWx1ZQQAAAAIcmVzdERhdGEJAAS5AAAAAgkABEwAAAACAgAAABJzdGFydE5zYnRQcmljZVJFU1QJAARMAAAAAgkAAaQAAAABBQAAAA5uc2J0MnVzZG5QcmljZQkABEwAAAACCQABpAAAAAEFAAAAD25zYnQyd2F2ZXNQcmljZQkABEwAAAACAgAAABBlbmROc2J0UHJpY2VSRVNUBQAAAANuaWwCAAAAAl9fCQAAAgAAAAEFAAAACHJlc3REYXRhAAAAAWkBAAAAB2J1eU5zYnQAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACXBtdEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACHdhdmVzUGF5BQAAAAlwbXRBbW91bnQEAAAADG93bmVyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJjYW4gdXNlIHdhdmVzIG9ubHkDCQAAZgAAAAIJAABoAAAAAgAAAAAAAAAACgUAAAAHV0FWRUxFVAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAFW1pbiAxMCB3YXZlcyBleHBlY3RlZAQAAAALY3VydmVSZXN1bHQJAQAAAA1jdXJ2ZUZ1bmN0aW9uAAAABgUAAAAHcmVzZXJ2ZQUAAAAObmV1dHJpbm9TdXBwbHkFAAAADGN1cnJlbnRQcmljZQUAAAAHbnNidE1heAUAAAALbnNidEN1cnJlbnQFAAAACHdhdmVzUGF5BAAAAApuc2J0QW1vdW50CQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAAABAAAABJuc2J0MldhdmVzUHJpY2VSYXcJAQAAABZjYWxjTnNidDJXYXZlc1ByaWNlUmF3AAAAAgUAAAAId2F2ZXNQYXkFAAAACm5zYnRBbW91bnQEAAAAA3JvaQkAAGUAAAACCQAAawAAAAMJAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABBQAAABJuc2J0MldhdmVzUHJpY2VSYXcAAAAAAAAAAGQFAAAADGN1cnJlbnRQcmljZQAAAAAAAAAAZAkABE4AAAACCQEAAAAJb3JkZXJEYXRhAAAABwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAlwbXRBbW91bnQFAAAACXBtdEFtb3VudAkABCUAAAABBQAAAAxvd25lckFkZHJlc3MFAAAABkZJTExFRAUAAAADcm9pBQAAABJuc2J0MldhdmVzUHJpY2VSYXcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzBQAAAApuc2J0QW1vdW50BQAAAAtib25kQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAAAh3YXZlc1BheQUAAAAEdW5pdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABFkZWJ1Z19jdXJ2ZVJlc3VsdAkBAAAABXRvU3RyAAAAAgIAAAALY3VydmVSZXN1bHQFAAAAC2N1cnZlUmVzdWx0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABB0bXBfaXNzdWVkTnNidF8yCQAAZAAAAAIFAAAACmlzc3VlZE5zYnQFAAAACm5zYnRBbW91bnQFAAAAA25pbAAAAAFpAQAAABRpbnN0YW50QnV5TnNidE9yRmFpbAAAAAEAAAANbm9MZXNzVGhlblJvaQQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAANyb2kFAAAADWN1cnJlbnRNYXhSb2kDCQAAZgAAAAIFAAAADW5vTGVzc1RoZW5Sb2kFAAAAA3JvaQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9DdXJyZW50IG1heFJvaT0JAAGkAAAAAQUAAAADcm9pAgAAAC0gaXMgbGVzcyB0aGVuIHBhc3NlZCBwYXJhbWV0ZXIgbm9MZXNzVGhlblJvaT0JAAGkAAAAAQUAAAANbm9MZXNzVGhlblJvaQQAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzCQEAAAAOZ2V0UHJpY2VGb3JSb2kAAAABBQAAAANyb2kJAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAUFAAAAA3JvaQkBAAAAD2dldFJldmVyc2VQcmljZQAAAAEFAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwIAAAAABQAAAAFpBgAAAAFpAQAAAA9hZGRCdXlCb25kT3JkZXIAAAACAAAABXByaWNlAAAACXByZXZPcmRlcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABBQAAAAVwcmljZQMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAPcHJpY2UgbGVzcyB6ZXJvCQEAAAAXaW50ZXJuYWxBZGRCdXlCb25kT3JkZXIAAAAFCQAAawAAAAMJAABlAAAAAgUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBQAAAAxjdXJyZW50UHJpY2UAAAAAAAAAAGQFAAAADGN1cnJlbnRQcmljZQUAAAAFcHJpY2UFAAAACXByZXZPcmRlcgUAAAABaQcAAAABaQEAAAALY2FuY2VsT3JkZXIAAAABAAAAB29yZGVySWQEAAAABW93bmVyCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAAB29yZGVySWQEAAAABmFtb3VudAkAAGUAAAACCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAAB29yZGVySWQJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAHb3JkZXJJZAQAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAJbmV4dE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAHb3JkZXJJZAQAAAAJcHJldk9yZGVyCQEAAAAMZ2V0UHJldk9yZGVyAAAAAQUAAAAHb3JkZXJJZAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAQAAAAIhPQAAAAIFAAAABW93bmVyBQAAAAZjYWxsZXIJAAACAAAAAQIAAAARcGVybWlzc2lvbiBkZW5pZWQDCQEAAAACIT0AAAACCQEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABBQAAAAdvcmRlcklkBQAAAANORVcJAAACAAAAAQIAAAAUaW52YWxpZCBvcmRlciBzdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgUAAAAHb3JkZXJJZAUAAAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIFAAAACW5leHRPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhzZWxsQm9uZAAAAAADBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQAAAAAAAAIFAAAACmZpcnN0T3JkZXICAAAAAAkAAAIAAAABAgAAAA9lbXB0eSBvcmRlcmJvb2sEAAAACW5leHRPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACmZpcnN0T3JkZXIEAAAAC2ZpbGxlZFRvdGFsCQEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAACm9yZGVyUHJpY2UJAQAAAA1nZXRPcmRlclByaWNlAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAADcm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAPcGF5bWVudFdhdmVsZXRzCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAAEW9yZGVyT3duZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADWdldE9yZGVyT3duZXIAAAABBQAAAApmaXJzdE9yZGVyCQEAAAAQaW50ZXJuYWxTZWxsQm9uZAAAAAgFAAAACmZpcnN0T3JkZXIFAAAACW5leHRPcmRlcgUAAAALZmlsbGVkVG90YWwFAAAAA3JvaQUAAAAKb3JkZXJQcmljZQUAAAAPcGF5bWVudFdhdmVsZXRzBQAAABFvcmRlck93bmVyQWRkcmVzcwcAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABBwdWJLZXlBZG1pbnNMaXN0CQAETAAAAAICAAAALEdYeG1aYUNpZ1BnSnNUNmQxY0xyOG5VWEE2NW5HWDhWN0Z1QXp6clk4d1FFCQAETAAAAAICAAAALDN4dW14NGhyUHBlZW9vNzlITEdiWkNnZno5NUwzOVpGZHh4d1dlU1VDMlB1CQAETAAAAAICAAAALEQ0Q3F0SzVmQnNuelJvMzNaTWhyTTduaUxzZURIMnVSb0s2d2VCcTJKUTNBCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADV9HOFg==", "chainId": 84, "height": 1351877, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CMZRDuE8nV6x3S1DPMn2VF8oYNFuyvRwY7USwytKyZdy Next: 7ib7q42TFXW558nKYQh6sBRzhboEFcXwPij2wocAhD61 Diff:
OldNewDifferences
121121
122122 let ad = c(y)
123123
124-func ae (af) = a(B(af))
124+let ae = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
125+
126+let af = ((2850 * 1000) * i)
127+
128+let ag = (((1850 * 1000) * i) + ae)
129+
130+func ah (ai) = a(B(ai))
125131
126132
127-func ag (af) = a(C(af))
133+func aj (ai) = a(C(ai))
128134
129135
130-func ah (af) = c(D(af))
136+func ak (ai) = c(D(ai))
131137
132138
133-func ai (af) = c(F(af))
139+func al (ai) = c(F(ai))
134140
135141
136-func aj (af) = a(G(af))
142+func am (ai) = a(G(ai))
137143
138144
139-func ak (af) = c(H(af))
145+func an (ai) = c(H(ai))
140146
141147
142-func al (af) = c(I(af))
148+func ao (ai) = c(I(ai))
143149
144150
145-func am (an) = fraction((100 + an), V, 100)
151+func ap (aq) = fraction((100 + aq), V, 100)
146152
147153
148-func ao (L) = ((k * k) / L)
154+func ar (L) = ((k * k) / L)
149155
150156
151-func ap (aq,ar) = fraction(aq, (i * k), ar)
157+func as (at,au) = fraction(at, (i * k), au)
152158
153159
154-func as (A,at,au,av,aw,ax,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), at), IntegerEntry(G(A), au), StringEntry(D(A), av), IntegerEntry(E(A), height), StringEntry(F(A), aw), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), ax)]
160+func av (A,aw,ax,ay,az,aA,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), aw), IntegerEntry(G(A), ax), StringEntry(D(A), ay), IntegerEntry(E(A), height), StringEntry(F(A), az), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), aA)]
155161
156162
157-func ay (az,aA,aB,aC,aD,aE,aF,aG) = {
158- let aH = am(aC)
159- let aI = (aE - aB)
160- let aJ = N(aI, aH)
161- let aK = O(aJ, aH)
162- let aL = (ab >= aC)
163- if (!(aL))
164- then throw(("innapropriate roi: " + toString(aC)))
165- else if ((aK == 0))
163+func aB (aC,aD,aE,aF,aG,aH,aI,aJ) = {
164+ let aK = ap(aF)
165+ let aL = (aH - aE)
166+ let aM = N(aL, aK)
167+ let aN = O(aM, aK)
168+ let aO = (ab >= aF)
169+ if (!(aO))
170+ then throw(("innapropriate roi: " + toString(aF)))
171+ else if ((aN == 0))
166172 then throw("cannot fill order at the moment")
167173 else {
168- let aM = (aI - aK)
169- let aN = if (aG)
170- then as(az, aE, (aB + aK), toBase58String(aF.bytes), r, aC, V)
171- else [IntegerEntry(G(az), (aB + aK)), StringEntry(F(az), r), StringEntry(H(aA), ""), StringEntry(y, aA)]
172- (aN ++ [ScriptTransfer(aF, aJ, T), ScriptTransfer(P, aK, unit), ScriptTransfer(aF, aM, unit)])
174+ let aP = (aL - aN)
175+ let aQ = if (aJ)
176+ then av(aC, aH, (aE + aN), toBase58String(aI.bytes), r, aF, V)
177+ else [IntegerEntry(G(aC), (aE + aN)), StringEntry(F(aC), r), StringEntry(H(aD), ""), StringEntry(y, aD)]
178+ (aQ ++ [ScriptTransfer(aI, aM, T), ScriptTransfer(P, aN, unit), ScriptTransfer(aI, aP, unit)])
173179 }
174180 }
175181
176182
177-func aO (ax,L,aP,aQ,aG) = {
178- let aR = value(aQ.payments[0])
179- let aS = toBase58String(aQ.transactionId)
183+func aR (aA,L,aS,aT,aJ) = {
184+ let aU = value(aT.payments[0])
185+ let aV = toBase58String(aT.transactionId)
180186 if (U)
181187 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
182- else if ((n > aR.amount))
188+ else if ((n > aU.amount))
183189 then throw(("min order total equals " + toString(n)))
184- else if ((ax > o))
190+ else if ((aA > o))
185191 then throw("max setOrder ROI is 95%")
186- else if ((0 > ax))
192+ else if ((0 > aA))
187193 then throw("can't place order with negative roi")
188- else if ((ax == 0))
194+ else if ((aA == 0))
189195 then throw("roi should not be equal to 0")
190- else if (isDefined(aR.assetId))
196+ else if (isDefined(aU.assetId))
191197 then throw("can use waves only")
192- else if ((ah(aS) != ""))
198+ else if ((ak(aV) != ""))
193199 then throw("order exists")
194- else if (if ((aP != ""))
195- then (ai(aP) != q)
200+ else if (if ((aS != ""))
201+ then (al(aS) != q)
196202 else false)
197203 then throw("prev order status is not new")
198204 else {
199- let aT = (aP == "")
200- let av = toString(aQ.caller)
201- let aU = if (aT)
205+ let aW = (aS == "")
206+ let ay = toString(aT.caller)
207+ let aX = if (aW)
202208 then ad
203- else al(aP)
204- let aV = a(z(aU))
205- let aW = if (if ((aU != ""))
206- then (ax >= aV)
209+ else ao(aS)
210+ let aY = a(z(aX))
211+ let aZ = if (if ((aX != ""))
212+ then (aA >= aY)
207213 else false)
208214 then true
209215 else false
210- let aX = a(z(aP))
211- let aY = if (if ((aP != ""))
212- then (aX > ax)
216+ let ba = a(z(aS))
217+ let bb = if (if ((aS != ""))
218+ then (ba > aA)
213219 else false)
214220 then true
215221 else false
216- if (if (aW)
222+ if (if (aZ)
217223 then true
218- else aY)
219- then throw(((("invalid order isPrevOrderError:" + toString(aY)) + " isNextOrderError:") + toString(aW)))
220- else if (if (aT)
221- then (ab >= ax)
224+ else bb)
225+ then throw(((("invalid order isPrevOrderError:" + toString(bb)) + " isNextOrderError:") + toString(aZ)))
226+ else if (if (aW)
227+ then (ab >= aA)
222228 else false)
223- then ay(aS, aU, 0, ax, L, aR.amount, aQ.caller, true)
224- else if (aG)
229+ then aB(aV, aX, 0, aA, L, aU.amount, aT.caller, true)
230+ else if (aJ)
225231 then throw("Instant order couldn't be added into waiting queue")
226- else ([StringEntry(H(aS), aP), StringEntry(I(aS), aU), StringEntry(I(aP), if ((aP == ""))
232+ else ([StringEntry(H(aV), aS), StringEntry(I(aV), aX), StringEntry(I(aS), if ((aS == ""))
227233 then ""
228- else aS), StringEntry(H(aU), if ((aU == ""))
234+ else aV), StringEntry(H(aX), if ((aX == ""))
229235 then ""
230- else aS), StringEntry(y, if (if ((ad == ""))
236+ else aV), StringEntry(y, if (if ((ad == ""))
231237 then true
232- else (ad == aU))
233- then aS
234- else ad)] ++ as(aS, aR.amount, 0, av, q, ax, L))
238+ else (ad == aX))
239+ then aV
240+ else ad)] ++ av(aV, aU.amount, 0, ay, q, aA, L))
235241 }
236242 }
237243
238244
239-func aZ (ba,bb,L,bc,bd,be) = {
240- let bf = 271828100
241- let bg = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
242- let bh = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
243- let bi = M(ba, L)
244- let bj = fraction(bi, l, bb)
245- let bk = (bg * (bj - (1 * l)))
246- let bl = pow(bf, m, bk, m, m, DOWN)
247- let bm = fraction(bh, bl, i)
248- let bn = M(be, L)
249- let bo = fraction(bm, bc, i)
250- let bp = fraction(bo, i, (bc - bd))
251- let bq = (fraction(bn, l, i) + fraction(bp, bc, i))
252- let br = fraction(bo, l, bq)
253- let bs = fraction(br, bc, l)
254- let bt = ((bc - bd) - bs)
255-[bt, bn, ba, bb, bc, bd, bg, bh, bi, L, bj, bk, bl, bm, bo, bp, bq, br, bs]
245+let bc = 0
246+
247+let bd = 1
248+
249+let be = 2
250+
251+let bf = 3
252+
253+let bg = 4
254+
255+let bh = 5
256+
257+let bi = 6
258+
259+func bj (bk,bl,L,bm,bn) = {
260+ let bo = 271828100
261+ let bp = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
262+ let bq = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
263+ let br = M(bk, L)
264+ let bs = fraction(br, l, bl)
265+ let bt = (bp * (bs - (1 * l)))
266+ let bu = pow(bo, m, bt, m, m, DOWN)
267+ let bv = fraction(bq, bu, i)
268+[bp, bq, br, bs, bt, bu, bv]
256269 }
257270
258271
259-func bu (bv,bw) = (((((((((((((((((((((((((((((((((((((((bv + "[nsbtAmountRaw=") + toString(bw[0])) + " usdnPayment=") + toString(bw[1])) + " wRaw=") + toString(bw[2])) + " uRaw=") + toString(bw[3])) + " mRaw=") + toString(bw[4])) + " sRaw=") + toString(bw[5])) + " nsbtCurveParam_a=") + toString(bw[6])) + " nsbtCurveParam_b=") + toString(bw[7])) + " wReservesInUsdn=") + toString(bw[8])) + " price=") + toString(bw[9])) + " multBR=") + toString(bw[10])) + " multPower=") + toString(bw[11])) + " multExpInPower=") + toString(bw[12])) + " multK=") + toString(bw[13])) + " multStepM1=") + toString(bw[14])) + " multStep2=") + toString(bw[15])) + " multStepM3=") + toString(bw[16])) + " multStep4=") + toString(bw[17])) + " stepM5=") + toString(bw[18])) + "]")
272+func bw (bk,bl,L,bm,bn,bx) = {
273+ let by = bj(bk, bl, L, bm, bn)
274+ let bv = by[bi]
275+ let bz = M(bx, L)
276+ let bA = fraction(bv, bm, i)
277+ let bB = fraction(bA, i, (bm - bn))
278+ let bC = (fraction(bz, l, i) + fraction(bB, bm, i))
279+ let bD = fraction(bA, l, bC)
280+ let bE = fraction(bD, bm, l)
281+ let bF = ((bm - bn) - bE)
282+[bF, bz, bk, bl, bm, bn, by[bc], by[bd], by[be], L, by[bf], by[bg], by[bh], bv, bA, bB, bC, bD, bE]
283+ }
260284
261285
262-func bx (by) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
286+func bG (bH,bI) = (((((((((((((((((((((((((((((((((((((((bH + "[nsbtAmountRaw=") + toString(bI[0])) + " usdnPayment=") + toString(bI[1])) + " wRaw=") + toString(bI[2])) + " uRaw=") + toString(bI[3])) + " mRaw=") + toString(bI[4])) + " sRaw=") + toString(bI[5])) + " nsbtCurveParam_a=") + toString(bI[6])) + " nsbtCurveParam_b=") + toString(bI[7])) + " wReservesInUsdn=") + toString(bI[8])) + " price=") + toString(bI[9])) + " multBR=") + toString(bI[10])) + " multPower=") + toString(bI[11])) + " multExpInPower=") + toString(bI[12])) + " multK=") + toString(bI[13])) + " multStepM1=") + toString(bI[14])) + " multStep2=") + toString(bI[15])) + " multStepM3=") + toString(bI[16])) + " multStep4=") + toString(bI[17])) + " stepM5=") + toString(bI[18])) + "]")
287+
288+
289+func bJ (bK) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
263290 then !(isDefined(transferTransactionById(fromBase58String("adLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
264291 else false)
265292 then !(isDefined(transferTransactionById(fromBase58String("sdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
312339 else false
313340
314341
315-@Callable(by)
342+func bL () = {
343+ let by = bj(X, Z, V, af, ag)
344+ let bv = by[bi]
345+ let bM = fraction(af, l, (af - ag))
346+ let bB = fraction(bM, bM, l)
347+ let bN = fraction(bv, bB, l)
348+ let bO = fraction(bN, i, l)
349+ let bP = fraction(bO, i, V)
350+ $Tuple2(IntegerEntry("nsbt2usdnPrice", bO), IntegerEntry("nsbt2wavesPrice", bP))
351+ }
352+
353+
354+@Callable(bK)
355+func nsbtPriceREST () = {
356+ let bQ = bL()
357+ let bO = bQ._1.value
358+ let bP = bQ._2.value
359+ let bR = makeString(["startNsbtPriceREST", toString(bO), toString(bP), "endNsbtPriceREST"], "__")
360+ throw(bR)
361+ }
362+
363+
364+
365+@Callable(bK)
316366 func buyNsbt () = {
317- let aR = value(by.payments[0])
318- let bz = aR.amount
319- let bA = bz
320- let bB = by.caller
367+ let aU = value(bK.payments[0])
368+ let bS = aU.amount
369+ let bT = bS
370+ let bU = bK.caller
321371 if (U)
322372 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
323- else if (isDefined(aR.assetId))
373+ else if (isDefined(aU.assetId))
324374 then throw("can use waves only")
325- else if (((10 * h) > bz))
375+ else if (((10 * h) > bS))
326376 then throw("min 10 waves expected")
327377 else {
328- let bC = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
329- let bD = ((2850 * 1000) * i)
330- let bE = (((1850 * 1000) * i) + bC)
331- let bw = aZ(X, Z, V, bD, bE, bA)
332- let bF = bw[0]
333- let bG = ap(bA, bF)
334- let ax = (fraction(ao(bG), 100, V) - 100)
335- (as(toBase58String(by.transactionId), bz, bz, toString(bB), r, ax, bG) ++ [ScriptTransfer(bB, bF, T), ScriptTransfer(P, bA, unit), StringEntry("debug_curveResult", bu("curveResult", bw)), IntegerEntry("tmp_issuedNsbt_2", (bC + bF))])
378+ let bI = bw(X, Z, V, af, ag, bT)
379+ let bV = bI[0]
380+ let bW = as(bT, bV)
381+ let aA = (fraction(ar(bW), 100, V) - 100)
382+ (av(toBase58String(bK.transactionId), bS, bS, toString(bU), r, aA, bW) ++ [ScriptTransfer(bU, bV, T), ScriptTransfer(P, bT, unit), StringEntry("debug_curveResult", bG("curveResult", bI)), IntegerEntry("tmp_issuedNsbt_2", (ae + bV))])
336383 }
337384 }
338385
339386
340387
341-@Callable(by)
342-func instantBuyNsbtOrFail (bH) = {
343- let aR = value(by.payments[0])
344- let ax = ab
345- if ((bH > ax))
346- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bH)))
388+@Callable(bK)
389+func instantBuyNsbtOrFail (bX) = {
390+ let aU = value(bK.payments[0])
391+ let aA = ab
392+ if ((bX > aA))
393+ then throw(((("Current maxRoi=" + toString(aA)) + " is less then passed parameter noLessThenRoi=") + toString(bX)))
347394 else {
348- let aH = am(ax)
349- aO(ax, ao(aH), "", by, true)
395+ let aK = ap(aA)
396+ aR(aA, ar(aK), "", bK, true)
350397 }
351398 }
352399
353400
354401
355-@Callable(by)
356-func addBuyBondOrder (L,aP) = {
357- let aR = value(by.payments[0])
358- let aH = ao(L)
402+@Callable(bK)
403+func addBuyBondOrder (L,aS) = {
404+ let aU = value(bK.payments[0])
405+ let aK = ar(L)
359406 if ((0 >= L))
360407 then throw("price less zero")
361- else aO(fraction((aH - V), 100, V), L, aP, by, false)
408+ else aR(fraction((aK - V), 100, V), L, aS, bK, false)
362409 }
363410
364411
365412
366-@Callable(by)
413+@Callable(bK)
367414 func cancelOrder (A) = {
368- let av = ah(A)
369- let K = (ag(A) - aj(A))
370- let bI = toString(by.caller)
371- let aU = al(A)
372- let aP = ak(A)
415+ let ay = ak(A)
416+ let K = (aj(A) - am(A))
417+ let bY = toString(bK.caller)
418+ let aX = ao(A)
419+ let aS = an(A)
373420 if (U)
374421 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
375- else if ((av != bI))
422+ else if ((ay != bY))
376423 then throw("permission denied")
377- else if ((ai(A) != q))
424+ else if ((al(A) != q))
378425 then throw("invalid order status")
379426 else [StringEntry(y, if ((ad == A))
380- then aU
381- else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(by.caller, K, unit)]
427+ then aX
428+ else ad), StringEntry(I(aS), aX), StringEntry(H(aX), aS), StringEntry(F(A), p), ScriptTransfer(bK.caller, K, unit)]
382429 }
383430
384431
385432
386-@Callable(by)
433+@Callable(bK)
387434 func sellBond () = if (U)
388435 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
389436 else if ((ad == ""))
390437 then throw("empty orderbook")
391438 else {
392- let aU = al(ad)
393- let bJ = aj(ad)
394- let bK = ae(ad)
395- let ax = a(z(ad))
396- let bL = ag(ad)
397- let aF = Address(fromBase58String(ah(ad)))
398- ay(ad, aU, bJ, ax, bK, bL, aF, false)
439+ let aX = ao(ad)
440+ let bZ = am(ad)
441+ let ca = ah(ad)
442+ let aA = a(z(ad))
443+ let cb = aj(ad)
444+ let aI = Address(fromBase58String(ak(ad)))
445+ aB(ad, aX, bZ, aA, ca, cb, aI, false)
399446 }
400447
401448
402-@Verifier(bM)
403-func bN () = {
404- let bO = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405- let bP = ((((if (sigVerify(bM.bodyBytes, bM.proofs[0], fromBase58String(bO[0])))
449+@Verifier(cc)
450+func cd () = {
451+ let ce = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
452+ let cf = ((((if (sigVerify(cc.bodyBytes, cc.proofs[0], fromBase58String(ce[0])))
406453 then 1
407- else 0) + (if (sigVerify(bM.bodyBytes, bM.proofs[1], fromBase58String(bO[1])))
454+ else 0) + (if (sigVerify(cc.bodyBytes, cc.proofs[1], fromBase58String(ce[1])))
408455 then 1
409- else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[2], fromBase58String(bO[2])))
456+ else 0)) + (if (sigVerify(cc.bodyBytes, cc.proofs[2], fromBase58String(ce[2])))
410457 then 1
411- else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[3], fromBase58String(bO[3])))
458+ else 0)) + (if (sigVerify(cc.bodyBytes, cc.proofs[3], fromBase58String(ce[3])))
412459 then 2
413460 else 0))
414- (bP >= 3)
461+ (cf >= 3)
415462 }
416463
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
55
66
77 func c (b) = valueOrElse(getString(this, b), "")
88
99
1010 func d (e,b) = valueOrElse(getBoolean(e, b), false)
1111
1212
1313 func f (e,b) = valueOrElse(getString(e, b), "")
1414
1515
1616 func g (e,b) = valueOrElse(getInteger(e, b), 0)
1717
1818
1919 let h = 100000000
2020
2121 let i = 1000000
2222
2323 let j = 6
2424
2525 let k = 1000000
2626
2727 let l = 100000000
2828
2929 let m = 8
3030
3131 let n = (10 * h)
3232
3333 let o = 95
3434
3535 let p = "canceled"
3636
3737 let q = "new"
3838
3939 let r = "filled"
4040
4141 let s = "price"
4242
4343 let t = "bond_asset_id"
4444
4545 let u = "neutrino_asset_id"
4646
4747 let v = "balance_lock_"
4848
4949 let w = (v + "waves")
5050
5151 let x = (v + "neutrino")
5252
5353 let y = "order_first"
5454
5555 func z (A) = ("debug_order_roi_" + A)
5656
5757
5858 func B (A) = ("order_price_" + A)
5959
6060
6161 func C (A) = ("order_total_" + A)
6262
6363
6464 func D (A) = ("order_owner_" + A)
6565
6666
6767 func E (A) = ("order_height_" + A)
6868
6969
7070 func F (A) = ("order_status_" + A)
7171
7272
7373 func G (A) = ("order_filled_total_" + A)
7474
7575
7676 func H (A) = ("order_prev_" + A)
7777
7878
7979 func I (A) = ("order_next_" + A)
8080
8181
8282 func J (K,L) = fraction(fraction(K, k, L), h, i)
8383
8484
8585 func M (K,L) = fraction(fraction(K, L, k), i, h)
8686
8787
8888 func N (K,L) = M(K, L)
8989
9090
9191 func O (K,L) = J(K, L)
9292
9393
9494 let P = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we')
9595
9696 let Q = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx')
9797
9898 let R = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62')
9999
100100 let S = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
101101
102102 let T = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH'
103103
104104 let U = d(Q, "is_blocked")
105105
106106 let V = g(Q, s)
107107
108108 let W = g(P, x)
109109
110110 let X = (wavesBalance(P).regular - g(P, w))
111111
112112 let Y = M(X, V)
113113
114114 let Z = (((W + value(assetInfo(S)).quantity) - assetBalance(P, S)) - assetBalance(R, S))
115115
116116 let aa = (Z - Y)
117117
118118 let ab = fraction(aa, 100, Z)
119119
120120 let ac = fraction(Y, l, Z)
121121
122122 let ad = c(y)
123123
124-func ae (af) = a(B(af))
124+let ae = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
125+
126+let af = ((2850 * 1000) * i)
127+
128+let ag = (((1850 * 1000) * i) + ae)
129+
130+func ah (ai) = a(B(ai))
125131
126132
127-func ag (af) = a(C(af))
133+func aj (ai) = a(C(ai))
128134
129135
130-func ah (af) = c(D(af))
136+func ak (ai) = c(D(ai))
131137
132138
133-func ai (af) = c(F(af))
139+func al (ai) = c(F(ai))
134140
135141
136-func aj (af) = a(G(af))
142+func am (ai) = a(G(ai))
137143
138144
139-func ak (af) = c(H(af))
145+func an (ai) = c(H(ai))
140146
141147
142-func al (af) = c(I(af))
148+func ao (ai) = c(I(ai))
143149
144150
145-func am (an) = fraction((100 + an), V, 100)
151+func ap (aq) = fraction((100 + aq), V, 100)
146152
147153
148-func ao (L) = ((k * k) / L)
154+func ar (L) = ((k * k) / L)
149155
150156
151-func ap (aq,ar) = fraction(aq, (i * k), ar)
157+func as (at,au) = fraction(at, (i * k), au)
152158
153159
154-func as (A,at,au,av,aw,ax,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), at), IntegerEntry(G(A), au), StringEntry(D(A), av), IntegerEntry(E(A), height), StringEntry(F(A), aw), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), ax)]
160+func av (A,aw,ax,ay,az,aA,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), aw), IntegerEntry(G(A), ax), StringEntry(D(A), ay), IntegerEntry(E(A), height), StringEntry(F(A), az), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), aA)]
155161
156162
157-func ay (az,aA,aB,aC,aD,aE,aF,aG) = {
158- let aH = am(aC)
159- let aI = (aE - aB)
160- let aJ = N(aI, aH)
161- let aK = O(aJ, aH)
162- let aL = (ab >= aC)
163- if (!(aL))
164- then throw(("innapropriate roi: " + toString(aC)))
165- else if ((aK == 0))
163+func aB (aC,aD,aE,aF,aG,aH,aI,aJ) = {
164+ let aK = ap(aF)
165+ let aL = (aH - aE)
166+ let aM = N(aL, aK)
167+ let aN = O(aM, aK)
168+ let aO = (ab >= aF)
169+ if (!(aO))
170+ then throw(("innapropriate roi: " + toString(aF)))
171+ else if ((aN == 0))
166172 then throw("cannot fill order at the moment")
167173 else {
168- let aM = (aI - aK)
169- let aN = if (aG)
170- then as(az, aE, (aB + aK), toBase58String(aF.bytes), r, aC, V)
171- else [IntegerEntry(G(az), (aB + aK)), StringEntry(F(az), r), StringEntry(H(aA), ""), StringEntry(y, aA)]
172- (aN ++ [ScriptTransfer(aF, aJ, T), ScriptTransfer(P, aK, unit), ScriptTransfer(aF, aM, unit)])
174+ let aP = (aL - aN)
175+ let aQ = if (aJ)
176+ then av(aC, aH, (aE + aN), toBase58String(aI.bytes), r, aF, V)
177+ else [IntegerEntry(G(aC), (aE + aN)), StringEntry(F(aC), r), StringEntry(H(aD), ""), StringEntry(y, aD)]
178+ (aQ ++ [ScriptTransfer(aI, aM, T), ScriptTransfer(P, aN, unit), ScriptTransfer(aI, aP, unit)])
173179 }
174180 }
175181
176182
177-func aO (ax,L,aP,aQ,aG) = {
178- let aR = value(aQ.payments[0])
179- let aS = toBase58String(aQ.transactionId)
183+func aR (aA,L,aS,aT,aJ) = {
184+ let aU = value(aT.payments[0])
185+ let aV = toBase58String(aT.transactionId)
180186 if (U)
181187 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
182- else if ((n > aR.amount))
188+ else if ((n > aU.amount))
183189 then throw(("min order total equals " + toString(n)))
184- else if ((ax > o))
190+ else if ((aA > o))
185191 then throw("max setOrder ROI is 95%")
186- else if ((0 > ax))
192+ else if ((0 > aA))
187193 then throw("can't place order with negative roi")
188- else if ((ax == 0))
194+ else if ((aA == 0))
189195 then throw("roi should not be equal to 0")
190- else if (isDefined(aR.assetId))
196+ else if (isDefined(aU.assetId))
191197 then throw("can use waves only")
192- else if ((ah(aS) != ""))
198+ else if ((ak(aV) != ""))
193199 then throw("order exists")
194- else if (if ((aP != ""))
195- then (ai(aP) != q)
200+ else if (if ((aS != ""))
201+ then (al(aS) != q)
196202 else false)
197203 then throw("prev order status is not new")
198204 else {
199- let aT = (aP == "")
200- let av = toString(aQ.caller)
201- let aU = if (aT)
205+ let aW = (aS == "")
206+ let ay = toString(aT.caller)
207+ let aX = if (aW)
202208 then ad
203- else al(aP)
204- let aV = a(z(aU))
205- let aW = if (if ((aU != ""))
206- then (ax >= aV)
209+ else ao(aS)
210+ let aY = a(z(aX))
211+ let aZ = if (if ((aX != ""))
212+ then (aA >= aY)
207213 else false)
208214 then true
209215 else false
210- let aX = a(z(aP))
211- let aY = if (if ((aP != ""))
212- then (aX > ax)
216+ let ba = a(z(aS))
217+ let bb = if (if ((aS != ""))
218+ then (ba > aA)
213219 else false)
214220 then true
215221 else false
216- if (if (aW)
222+ if (if (aZ)
217223 then true
218- else aY)
219- then throw(((("invalid order isPrevOrderError:" + toString(aY)) + " isNextOrderError:") + toString(aW)))
220- else if (if (aT)
221- then (ab >= ax)
224+ else bb)
225+ then throw(((("invalid order isPrevOrderError:" + toString(bb)) + " isNextOrderError:") + toString(aZ)))
226+ else if (if (aW)
227+ then (ab >= aA)
222228 else false)
223- then ay(aS, aU, 0, ax, L, aR.amount, aQ.caller, true)
224- else if (aG)
229+ then aB(aV, aX, 0, aA, L, aU.amount, aT.caller, true)
230+ else if (aJ)
225231 then throw("Instant order couldn't be added into waiting queue")
226- else ([StringEntry(H(aS), aP), StringEntry(I(aS), aU), StringEntry(I(aP), if ((aP == ""))
232+ else ([StringEntry(H(aV), aS), StringEntry(I(aV), aX), StringEntry(I(aS), if ((aS == ""))
227233 then ""
228- else aS), StringEntry(H(aU), if ((aU == ""))
234+ else aV), StringEntry(H(aX), if ((aX == ""))
229235 then ""
230- else aS), StringEntry(y, if (if ((ad == ""))
236+ else aV), StringEntry(y, if (if ((ad == ""))
231237 then true
232- else (ad == aU))
233- then aS
234- else ad)] ++ as(aS, aR.amount, 0, av, q, ax, L))
238+ else (ad == aX))
239+ then aV
240+ else ad)] ++ av(aV, aU.amount, 0, ay, q, aA, L))
235241 }
236242 }
237243
238244
239-func aZ (ba,bb,L,bc,bd,be) = {
240- let bf = 271828100
241- let bg = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
242- let bh = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
243- let bi = M(ba, L)
244- let bj = fraction(bi, l, bb)
245- let bk = (bg * (bj - (1 * l)))
246- let bl = pow(bf, m, bk, m, m, DOWN)
247- let bm = fraction(bh, bl, i)
248- let bn = M(be, L)
249- let bo = fraction(bm, bc, i)
250- let bp = fraction(bo, i, (bc - bd))
251- let bq = (fraction(bn, l, i) + fraction(bp, bc, i))
252- let br = fraction(bo, l, bq)
253- let bs = fraction(br, bc, l)
254- let bt = ((bc - bd) - bs)
255-[bt, bn, ba, bb, bc, bd, bg, bh, bi, L, bj, bk, bl, bm, bo, bp, bq, br, bs]
245+let bc = 0
246+
247+let bd = 1
248+
249+let be = 2
250+
251+let bf = 3
252+
253+let bg = 4
254+
255+let bh = 5
256+
257+let bi = 6
258+
259+func bj (bk,bl,L,bm,bn) = {
260+ let bo = 271828100
261+ let bp = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
262+ let bq = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
263+ let br = M(bk, L)
264+ let bs = fraction(br, l, bl)
265+ let bt = (bp * (bs - (1 * l)))
266+ let bu = pow(bo, m, bt, m, m, DOWN)
267+ let bv = fraction(bq, bu, i)
268+[bp, bq, br, bs, bt, bu, bv]
256269 }
257270
258271
259-func bu (bv,bw) = (((((((((((((((((((((((((((((((((((((((bv + "[nsbtAmountRaw=") + toString(bw[0])) + " usdnPayment=") + toString(bw[1])) + " wRaw=") + toString(bw[2])) + " uRaw=") + toString(bw[3])) + " mRaw=") + toString(bw[4])) + " sRaw=") + toString(bw[5])) + " nsbtCurveParam_a=") + toString(bw[6])) + " nsbtCurveParam_b=") + toString(bw[7])) + " wReservesInUsdn=") + toString(bw[8])) + " price=") + toString(bw[9])) + " multBR=") + toString(bw[10])) + " multPower=") + toString(bw[11])) + " multExpInPower=") + toString(bw[12])) + " multK=") + toString(bw[13])) + " multStepM1=") + toString(bw[14])) + " multStep2=") + toString(bw[15])) + " multStepM3=") + toString(bw[16])) + " multStep4=") + toString(bw[17])) + " stepM5=") + toString(bw[18])) + "]")
272+func bw (bk,bl,L,bm,bn,bx) = {
273+ let by = bj(bk, bl, L, bm, bn)
274+ let bv = by[bi]
275+ let bz = M(bx, L)
276+ let bA = fraction(bv, bm, i)
277+ let bB = fraction(bA, i, (bm - bn))
278+ let bC = (fraction(bz, l, i) + fraction(bB, bm, i))
279+ let bD = fraction(bA, l, bC)
280+ let bE = fraction(bD, bm, l)
281+ let bF = ((bm - bn) - bE)
282+[bF, bz, bk, bl, bm, bn, by[bc], by[bd], by[be], L, by[bf], by[bg], by[bh], bv, bA, bB, bC, bD, bE]
283+ }
260284
261285
262-func bx (by) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
286+func bG (bH,bI) = (((((((((((((((((((((((((((((((((((((((bH + "[nsbtAmountRaw=") + toString(bI[0])) + " usdnPayment=") + toString(bI[1])) + " wRaw=") + toString(bI[2])) + " uRaw=") + toString(bI[3])) + " mRaw=") + toString(bI[4])) + " sRaw=") + toString(bI[5])) + " nsbtCurveParam_a=") + toString(bI[6])) + " nsbtCurveParam_b=") + toString(bI[7])) + " wReservesInUsdn=") + toString(bI[8])) + " price=") + toString(bI[9])) + " multBR=") + toString(bI[10])) + " multPower=") + toString(bI[11])) + " multExpInPower=") + toString(bI[12])) + " multK=") + toString(bI[13])) + " multStepM1=") + toString(bI[14])) + " multStep2=") + toString(bI[15])) + " multStepM3=") + toString(bI[16])) + " multStep4=") + toString(bI[17])) + " stepM5=") + toString(bI[18])) + "]")
287+
288+
289+func bJ (bK) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
263290 then !(isDefined(transferTransactionById(fromBase58String("adLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
264291 else false)
265292 then !(isDefined(transferTransactionById(fromBase58String("sdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
266293 else false)
267294 then !(isDefined(transferTransactionById(fromBase58String("ddLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
268295 else false)
269296 then !(isDefined(transferTransactionById(fromBase58String("fdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
270297 else false)
271298 then !(isDefined(transferTransactionById(fromBase58String("gdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
272299 else false)
273300 then !(isDefined(transferTransactionById(fromBase58String("hdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
274301 else false)
275302 then !(isDefined(transferTransactionById(fromBase58String("jdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
276303 else false)
277304 then !(isDefined(transferTransactionById(fromBase58String("kdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
278305 else false)
279306 then !(isDefined(transferTransactionById(fromBase58String("rdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
280307 else false)
281308 then !(isDefined(transferTransactionById(fromBase58String("tdLq5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
282309 else false)
283310 then !(isDefined(transferTransactionById(fromBase58String("tdLy5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
284311 else false)
285312 then !(isDefined(transferTransactionById(fromBase58String("tdLu5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
286313 else false)
287314 then !(isDefined(transferTransactionById(fromBase58String("tdLh5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
288315 else false)
289316 then !(isDefined(transferTransactionById(fromBase58String("1dL4JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
290317 else false)
291318 then !(isDefined(transferTransactionById(fromBase58String("2dL25JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
292319 else false)
293320 then !(isDefined(transferTransactionById(fromBase58String("3dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
294321 else false)
295322 then !(isDefined(transferTransactionById(fromBase58String("4dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
296323 else false)
297324 then !(isDefined(transferTransactionById(fromBase58String("5dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
298325 else false)
299326 then !(isDefined(transferTransactionById(fromBase58String("6dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
300327 else false)
301328 then !(isDefined(transferTransactionById(fromBase58String("7dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
302329 else false)
303330 then !(isDefined(transferTransactionById(fromBase58String("8dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
304331 else false)
305332 then !(isDefined(transferTransactionById(fromBase58String("91L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
306333 else false)
307334 then !(isDefined(transferTransactionById(fromBase58String("92L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
308335 else false)
309336 then !(isDefined(transferTransactionById(fromBase58String("93L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
310337 else false)
311338 then !(isDefined(transferTransactionById(fromBase58String("94L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
312339 else false
313340
314341
315-@Callable(by)
342+func bL () = {
343+ let by = bj(X, Z, V, af, ag)
344+ let bv = by[bi]
345+ let bM = fraction(af, l, (af - ag))
346+ let bB = fraction(bM, bM, l)
347+ let bN = fraction(bv, bB, l)
348+ let bO = fraction(bN, i, l)
349+ let bP = fraction(bO, i, V)
350+ $Tuple2(IntegerEntry("nsbt2usdnPrice", bO), IntegerEntry("nsbt2wavesPrice", bP))
351+ }
352+
353+
354+@Callable(bK)
355+func nsbtPriceREST () = {
356+ let bQ = bL()
357+ let bO = bQ._1.value
358+ let bP = bQ._2.value
359+ let bR = makeString(["startNsbtPriceREST", toString(bO), toString(bP), "endNsbtPriceREST"], "__")
360+ throw(bR)
361+ }
362+
363+
364+
365+@Callable(bK)
316366 func buyNsbt () = {
317- let aR = value(by.payments[0])
318- let bz = aR.amount
319- let bA = bz
320- let bB = by.caller
367+ let aU = value(bK.payments[0])
368+ let bS = aU.amount
369+ let bT = bS
370+ let bU = bK.caller
321371 if (U)
322372 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
323- else if (isDefined(aR.assetId))
373+ else if (isDefined(aU.assetId))
324374 then throw("can use waves only")
325- else if (((10 * h) > bz))
375+ else if (((10 * h) > bS))
326376 then throw("min 10 waves expected")
327377 else {
328- let bC = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
329- let bD = ((2850 * 1000) * i)
330- let bE = (((1850 * 1000) * i) + bC)
331- let bw = aZ(X, Z, V, bD, bE, bA)
332- let bF = bw[0]
333- let bG = ap(bA, bF)
334- let ax = (fraction(ao(bG), 100, V) - 100)
335- (as(toBase58String(by.transactionId), bz, bz, toString(bB), r, ax, bG) ++ [ScriptTransfer(bB, bF, T), ScriptTransfer(P, bA, unit), StringEntry("debug_curveResult", bu("curveResult", bw)), IntegerEntry("tmp_issuedNsbt_2", (bC + bF))])
378+ let bI = bw(X, Z, V, af, ag, bT)
379+ let bV = bI[0]
380+ let bW = as(bT, bV)
381+ let aA = (fraction(ar(bW), 100, V) - 100)
382+ (av(toBase58String(bK.transactionId), bS, bS, toString(bU), r, aA, bW) ++ [ScriptTransfer(bU, bV, T), ScriptTransfer(P, bT, unit), StringEntry("debug_curveResult", bG("curveResult", bI)), IntegerEntry("tmp_issuedNsbt_2", (ae + bV))])
336383 }
337384 }
338385
339386
340387
341-@Callable(by)
342-func instantBuyNsbtOrFail (bH) = {
343- let aR = value(by.payments[0])
344- let ax = ab
345- if ((bH > ax))
346- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bH)))
388+@Callable(bK)
389+func instantBuyNsbtOrFail (bX) = {
390+ let aU = value(bK.payments[0])
391+ let aA = ab
392+ if ((bX > aA))
393+ then throw(((("Current maxRoi=" + toString(aA)) + " is less then passed parameter noLessThenRoi=") + toString(bX)))
347394 else {
348- let aH = am(ax)
349- aO(ax, ao(aH), "", by, true)
395+ let aK = ap(aA)
396+ aR(aA, ar(aK), "", bK, true)
350397 }
351398 }
352399
353400
354401
355-@Callable(by)
356-func addBuyBondOrder (L,aP) = {
357- let aR = value(by.payments[0])
358- let aH = ao(L)
402+@Callable(bK)
403+func addBuyBondOrder (L,aS) = {
404+ let aU = value(bK.payments[0])
405+ let aK = ar(L)
359406 if ((0 >= L))
360407 then throw("price less zero")
361- else aO(fraction((aH - V), 100, V), L, aP, by, false)
408+ else aR(fraction((aK - V), 100, V), L, aS, bK, false)
362409 }
363410
364411
365412
366-@Callable(by)
413+@Callable(bK)
367414 func cancelOrder (A) = {
368- let av = ah(A)
369- let K = (ag(A) - aj(A))
370- let bI = toString(by.caller)
371- let aU = al(A)
372- let aP = ak(A)
415+ let ay = ak(A)
416+ let K = (aj(A) - am(A))
417+ let bY = toString(bK.caller)
418+ let aX = ao(A)
419+ let aS = an(A)
373420 if (U)
374421 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
375- else if ((av != bI))
422+ else if ((ay != bY))
376423 then throw("permission denied")
377- else if ((ai(A) != q))
424+ else if ((al(A) != q))
378425 then throw("invalid order status")
379426 else [StringEntry(y, if ((ad == A))
380- then aU
381- else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(by.caller, K, unit)]
427+ then aX
428+ else ad), StringEntry(I(aS), aX), StringEntry(H(aX), aS), StringEntry(F(A), p), ScriptTransfer(bK.caller, K, unit)]
382429 }
383430
384431
385432
386-@Callable(by)
433+@Callable(bK)
387434 func sellBond () = if (U)
388435 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
389436 else if ((ad == ""))
390437 then throw("empty orderbook")
391438 else {
392- let aU = al(ad)
393- let bJ = aj(ad)
394- let bK = ae(ad)
395- let ax = a(z(ad))
396- let bL = ag(ad)
397- let aF = Address(fromBase58String(ah(ad)))
398- ay(ad, aU, bJ, ax, bK, bL, aF, false)
439+ let aX = ao(ad)
440+ let bZ = am(ad)
441+ let ca = ah(ad)
442+ let aA = a(z(ad))
443+ let cb = aj(ad)
444+ let aI = Address(fromBase58String(ak(ad)))
445+ aB(ad, aX, bZ, aA, ca, cb, aI, false)
399446 }
400447
401448
402-@Verifier(bM)
403-func bN () = {
404- let bO = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405- let bP = ((((if (sigVerify(bM.bodyBytes, bM.proofs[0], fromBase58String(bO[0])))
449+@Verifier(cc)
450+func cd () = {
451+ let ce = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
452+ let cf = ((((if (sigVerify(cc.bodyBytes, cc.proofs[0], fromBase58String(ce[0])))
406453 then 1
407- else 0) + (if (sigVerify(bM.bodyBytes, bM.proofs[1], fromBase58String(bO[1])))
454+ else 0) + (if (sigVerify(cc.bodyBytes, cc.proofs[1], fromBase58String(ce[1])))
408455 then 1
409- else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[2], fromBase58String(bO[2])))
456+ else 0)) + (if (sigVerify(cc.bodyBytes, cc.proofs[2], fromBase58String(ce[2])))
410457 then 1
411- else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[3], fromBase58String(bO[3])))
458+ else 0)) + (if (sigVerify(cc.bodyBytes, cc.proofs[3], fromBase58String(ce[3])))
412459 then 2
413460 else 0))
414- (bP >= 3)
461+ (cf >= 3)
415462 }
416463

github/deemru/w8io/169f3d6 
119.27 ms