tx · 3ww64sog5WcSzoY2zHafsLscWmm4SFrv6WoCgKQ25EAM

3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt:  -0.03100000 Waves

2022.12.20 12:50 [2368450] smart account 3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt > SELF 0.00000000 Waves

{ "type": 13, "id": "3ww64sog5WcSzoY2zHafsLscWmm4SFrv6WoCgKQ25EAM", "fee": 3100000, "feeAssetId": null, "timestamp": 1671529739445, "version": 1, "sender": "3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt", "senderPublicKey": "Aig94J3pRT3J41eXw33rJrs67gTCECiMVRZrbtuoARit", "proofs": [ "4uiudDHJNoEnamAXcCxTsT5FfDT5fZmotjeu8ShLUkciFTNN8fzyHwrQBDYJnPHtacNWFjBKgpiL3RvrFR1dv6bQ" ], "script": "base64:BgK3JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzYwMTc3NjciDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIg1vcmRlckFtdEFzc2V0IhBvcmRlckFtdEFzc2V0U3RyIg9vcmRlclByaWNlQXNzZXQiEm9yZGVyUHJpY2VBc3NldFN0ciIKb3JkZXJQcmljZSIIcHJpY2VEY20iEGNhc3RlZE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiA2ZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDIyNjY0MjI5NTciEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjI5NjEyMzExMCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMzI0MjIzMzA2Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNDc4MzI0OTUwIgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjY1MzAyNjU4NiILdG90YWxBbW91bnQiDSR0MDI2NTkwMjY4MTYiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMxNzIzMzE4NTMiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzI1ODIzMjcxNyINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzM1MjIzMzY1NyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNDI5MjM0NDMwIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNTI1NTM1Mzg4IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hiAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQBAmFjAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFkAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZQECYWYJAKwCAgkArAICAgglcyVzJXNfXwUCYWYCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWsBAmFsAAIMJXNfX3NodXRkb3duAQJhbQECYW4JAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhbgECYW8AAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcQMCYXICYXMCYXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFyAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFzAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdAECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkBAmF6CQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmF6BQNuaWwCASAAAmFBCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQR0aGlzCQEBUAAAAmFCCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQJhQQUCYXAAAmFDCgACYUQJAPwHBAUCYUECEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIDSW50BQJhRAkAAgEJAKwCAgkAAwEFAmFEAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFFCgACYUQJAPwHBAUCYUECEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCA0ludAUCYUQJAAIBCQCsAgIJAAMBBQJhRAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhRgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUEJAQJhbAAHAQJhRwAJANkEAQkBAmF1AgUCYUEJAQJhZAABAmFIAAQCYUkJAQJhdQIFBHRoaXMJAQJhYQAEAmFKCQECYXUCBQR0aGlzCQECYWIABAJhaQkBAmF4AgUCYUEJAQJhagEFAmFKBAJhaAkBAmF4AgUCYUEJAQJhagEFAmFJCQC1CQIJAQJhdQIFAmFBCQECYWcCCQCkAwEFAmFoCQCkAwEFAmFpBQFqAQJhSwECYUwDCQAAAgUCYUwFAWkFBHVuaXQJANkEAQUCYUwBAmFNAQJhTAMJAAACBQJhTAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhTAECYU4BAmFPCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU8FAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBcAkA2QQBCQCRAwIFAmFPBQFxCQECYUsBCQCRAwIFAmFPBQFyCQECYUsBCQCRAwIFAmFPBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdQACYVAJAQJhTgEJAQJhSAAAAmFRBQJhUAACYVIIBQJhUQJfMQACYVMIBQJhUQJfMgACYVQIBQJhUQJfMwACYVUIBQJhUQJfNAACYVYIBQJhUQJfNQACYVcIBQJhUQJfNgACYVgIBQJhUQJfNwECYVkACQC1CQIJAQJhdQIFAmFBCQECYWMABQFqAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJiCgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagJiawJibAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwFA25pbAUBagECYm0GAmJuAmJvAmJwAmJmAmJpAmJqCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqBQNuaWwFAWoBAmJxAQJicgMJAAACBQJicgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnIBAmJzAgJidAJidQkAvAIDBQJidAUBZAUCYnUBAmJ2BAJidwJieAJieQJiegQCYkEJAQFEAgUCYnkFAmJ3BAJiQgkBAUQCBQJiegUCYngJAQJicwIFAmJCBQJiQQECYkMDAmJ5AmJ6AmJEBAJiRQkBAmFIAAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYkgJAQJidgQFAmJGBQJiRwUCYnkFAmJ6BAJidQkBAUQCBQJieQUCYkYEAmJ0CQEBRAIFAmJ6BQJiRwQCYkkJAQFEAgUCYkQFAWIEAmJKCQECYnMCBQJidQUCYkkEAmJLCQECYnMCBQJidAUCYkkJAMwIAgUCYkgJAMwIAgUCYkoJAMwIAgUCYksFA25pbAECYkwDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAzAgCCQEBRwIJAJEDAgUCYk0AAAUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAQUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAgUBYgUDbmlsAQJiTgQCYk8CYlACYlEBWAQCYkUJAQJhSAAEAmJSCQCRAwIFAmJFBQFxBAJiUwkAkQMCBQJiRQUBcgQCYlQJAJEDAgUCYkUFAXMEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiUgUCYlAJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJXCQECYnEBBQJiUwQCYlgJAQFEAgUCYlcFAmJ3BAJiWQkBAmJxAQUCYlQEAmJaCQEBRAIFAmJZBQJieAQCY2EJAQJicwIFAmJaBQJiWAQCY2IJAQFHAgUCY2EFAWIEAmNjCQEBRAIFAmJRBQFiBAJjZAkBAUQCBQJiVgUBYgQCY2UJALwCAwUCYlgFAmNjBQJjZAQCY2YJALwCAwUCYloFAmNjBQJjZAQCY2cJAQFHAgUCY2UFAmJ3BAJjaAkBAUcCBQJjZgUCYngEAmNpAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2gDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiTwkBAmJtBgUCY2cFAmNoBQJiUQUCY2IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IFA25pbAkAnAoKBQJjZwUCY2gFAmJTBQJiVAUCYlcFAmJZBQJiVgUCY2EFAmJVBQJjaQECY2oJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCY3MJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY20JANkEAQIFV0FWRVMEAmN3CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNvCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNyBQJjdgYJAQIhPQIFAmNzBQJjdwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmJXAwUCY3AJAQJicQEFAmNyCQBlAgkBAmJxAQUCY3IFAmNsBAJiWQMFAmNwCQECYnEBBQJjcwkAZQIJAQJicQEFAmNzBQJjbgQCY3gJAQFEAgUCY2wFAmJGBAJjeQkBAUQCBQJjbgUCYkcEAmN6CQECYnMCBQJjeQUCY3gEAmJYCQEBRAIFAmJXBQJiRgQCYloJAQFEAgUCYlkFAmJHBAJjQQMJAAACBQJiVgAABAJjYQUBZQQCY0IFAWUEAmJJCQB2BgkAuQICBQJjeAUCY3kAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY3gFAmJGCQEBRwIFAmN5BQJiRwkBAmJzAgkAtwICBQJiWgUCY3kJALcCAgUCYlgFAmN4BQJjQgQCY2EJAQJicwIFAmJaBQJiWAQCY0IJALwCAwkBAU8BCQC4AgIFAmNhBQJjegUBZAUCY2EEAmNDCQEBRAIFAmNrBQFiAwMJAQIhPQIFAmNhBQFlCQC/AgIFAmNCBQJjQwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0ICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjQwQCY2QJAQFEAgUCYlYFAWIEAmNECQC8AgMFAmN4BQJjYQUBZAQCY0UJALwCAwUCY3kFAWQFAmNhBAJjRgMJAL8CAgUCY0QFAmN5CQCUCgIFAmNFBQJjeQkAlAoCBQJjeAUCY0QEAmNHCAUCY0YCXzEEAmNICAUCY0YCXzIEAmJJCQC8AgMFAmNkBQJjSAUCYloJAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjRwUCYkYJAQFHAgUCY0gFAmJHBQJjYQUCY0IEAmNJCAUCY0ECXzEEAmNKCAUCY0ECXzIEAmNLCAUCY0ECXzMEAmNiCQEBRwIIBQJjQQJfNAUBYgQCY0wJAQFHAggFAmNBAl81BQFiAwkAZwIAAAUCY0kJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNNAwkBASEBBQJjcQAABQJjSQQCY04JAGUCBQJjbAUCY0oEAmNPCQBlAgUCY24FAmNLBAJjUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJPCQECYmIKBQJjSgUCY0sFAmNNBQJjYgUCY2sFAmNMBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgUCY08FA25pbAkAnwoNBQJjSQUCY00FAmNiBQJiVwUCYlkFAmJWBQJiUgUCYlUFAmNQBQJjTgUCY08FAmNtBQJjbwECY1EBAmNSBAJiRQkBAmFIAAQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQFwBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCY2EDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQECYnYEBQJiRgUCYkcJAGQCBQJjVQgFAmNSBmFtb3VudAUCY1YJAQJidgQFAmJGBQJiRwkAZQIFAmNVCAUCY1IGYW1vdW50BQJjVgQCY2IJAQFHAgUCY2EFAWIDAwMJAQJhRgAGCQAAAgUCYlUFAW0GCQAAAgUCYlUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJjVwgIBQJjUglhc3NldFBhaXILYW1vdW50QXNzZXQEAmNYAwkAAAIFAmNXBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjVwQCY1kICAUCY1IJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmNaAwkAAAIFAmNZBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjWQMDCQECIT0CBQJjWAUCY1MGCQECIT0CBQJjWgUCY1QJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkYQgFAmNSBXByaWNlBAJkYgkAawMFAWIFAmJHBQJiRgQCZGMJAQFKAwUCZGEFAWIFAmRiBAJkZAMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAGcCBQJjYgUCZGMJAGcCBQJkYwUCY2IGAQJkZQECZGYDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRnCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRnB2Fzc2V0SWQEAmRoCAUCZGcGYW1vdW50BAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCZGgIBQJkZgZjYWxsZXIEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTADAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUJAJcKBQUCY2cFAmNoBQJkaAUCYlAFAmNpAQJkaQMCZGYCY2sCY3EDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmRrCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwABBAJkbAkBAmNqCQkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAUCY2sIBQJkagZhbW91bnQIBQJkagdhc3NldElkCAUCZGsGYW1vdW50CAUCZGsHYXNzZXRJZAkApQgBCAUCZGYGY2FsbGVyBwUCY3EEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJkbAJfOAMDAwkBAmFGAAYJAAACBQJiVQUBbAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUFAmRsAQJkbQECZG4EAmRvCQD8BwQFAmFBAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMCAmRuAmR0BAJkdQMJAAACBQJkdAAAAAAJAGsDBQJkbgUCZHQFAWIJAJQKAgkAZQIFAmRuBQJkdQUCZHUBAmR2BAJkdwJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZHoJAQJicQEJAQJhTQEFAmFVBAJkQQkBAmJxAQkBAmFNAQUCYVYEAmRCAwkAAAIFAmR4BQJhVQYDCQAAAgUCZHgFAmFWBwkBAmF5AQINaW52YWxpZCBhc3NldAQCZEMDBQJkeQkAlAoCBQJkegUCZEEDBQJkQgkAlAoCCQBlAgUCZHoFAmR3BQJkQQkAlAoCBQJkegkAZQIFAmRBBQJkdwQCZEQIBQJkQwJfMQQCZEUIBQJkQwJfMgQCZEYDBQJkQgkAlAoCBQJkdwAACQCUCgIAAAUCZHcEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCAkBAmRzAgUCZEcFAmFDAl8xBAJkSggJAQJkcwIFAmRIBQJhQwJfMQQCZEsJAQJkcwIFAmR3BQJhQwQCZEwIBQJkSwJfMQQCZHUIBQJkSwJfMgQCZE0JAGQCBQJkRAUCZEkEAmROCQBkAgUCZEUFAmRKBAJkTwkBAmJzAgkBAUQCBQJkTgUCYVgJAQFEAgUCZE0FAmFXBAJkUAkBAUcCBQJkTwUBYgQCZFEDBQJkQgUCZEQFAmRFBAJkUgkAtgIBBQJkUQQCZFMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRUAwkAvwICBQJkUwUBZgYJAQJheQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFQFAmRUBAJkVQkAtgIBBQJkTAQCZFYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFMJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkVQUBZAUCZFIAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNQAwUCZHkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmIKBQJkRwUCZEgFAmRWBQJkUAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmRXCQECYnMCCQEBRAIFAmRFBQJhWAkBAUQCBQJkRAUCYVcEAmRYCQEBRwIFAmRXBQFiBAJkWQQCZFoDBQJkQgkAlAoCBQJkRwUCZEQJAJQKAgUCZEgFAmRFBAJkbggFAmRaAl8xBAJlYQgFAmRaAl8yBAJlYgkAoAMBCQC8AgMFAmRTCQC2AgEJAGkCBQJkbgACCQC2AgEFAmVhCQBrAwkAZQIFAmRWBQJlYgUBYgUCZWIJAJYKBAUCZFYFAmNQBQJkdQUCZFkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVjBQJlZAJkTAJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZWUJAMwIAgMJAAACBQJkeAUCYVQGCQECYXkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZWUFAmVlBAJlZgMJAAACBQJlZAUCYVUGAwkAAAIFAmVkBQJhVgcJAQJheQECDWludmFsaWQgYXNzZXQEAmVnAwUCZWYJALYCAQkBAmJxAQkBAmFNAQUCYVUJALYCAQkBAmJxAQkBAmFNAQUCYVYEAmVoCQECYnEBCQECYU0BBQJhVQQCZWkJAQJicQEJAQJhTQEFAmFWBAJlagMFAmVmBQJlaAUCZWkEAmVrCQC2AgEFAmVqBAJkUwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFUCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFUAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWwJALYCAQUCZEwEAmVtCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVnCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlbAUBZAUCZFMAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZW4JAQJkcwIFAmVtBQJhRQQCZW8IBQJlbgJfMQQCZHUIBQJlbgJfMgQCZXADBQJlZgkAlgoEBQJlbwAACQBlAgUCZWgFAmVtBQJlaQkAlgoEAAAFAmVvBQJlaAkAZQIFAmVpBQJlbQQCZXEIBQJlcAJfMQQCZXIIBQJlcAJfMgQCZXMIBQJlcAJfMwQCZXQIBQJlcAJfNAQCZE8JAQJicwIJAQFEAgUCZXQFAmFYCQEBRAIFAmVzBQJhVwQCZFAJAQFHAgUCZE8FAWIEAmNQAwUCZHkFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcQUCZXIFAmRMBQJkUAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAUDbmlsBAJkVwkBAmJzAgkBAUQCBQJlaQUCYVgJAQFEAgUCZWgFAmFXBAJkWAkBAUcCBQJkVwUBYgQCZFkEAmV1CQBoAgkAoAMBCQC8AgMFAmVnBQJlbAUCZFMAAgkAawMJAGUCBQJlbwUCZXUFAWIFAmV1CQCWCgQFAmVvBQJjUAUCZHUFAmRZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldgAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldwUCZHEJANkEAQUCZXcDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXgABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXcFAmRxCQDZBAEFAmV3AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV5AQJkZgQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV6AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlQQECZGYEAmVCCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXYAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJlegUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXoGBQJlQgMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUIJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVDBAJlRAkBAmVBAQUCZGYDCQAAAgUCZUQFAmVEBAJlRQkA2QQBBQJlQwMJAAACBQJlRQUCZUUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVGCQECZXgABAJlRwMJAQlpc0RlZmluZWQBBQJlRgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHBAJlSAMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUgFAmVICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRgkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSQMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVKCAUCZGwDXzEyBAJlSwgFAmRsA18xMwQCZG8JAPwHBAUCYUECBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVMAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSgUCY04FA25pbAUDbmlsAwkAAAIFAmVMBQJlTAQCZU0DCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVLBQJjTwUDbmlsBQNuaWwDCQAAAgUCZU0FAmVNBAJlTgMFAmVJBAJlTwkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU8FAmVPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlUAMJAGYCAAAFAmVQCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZVAHCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVECZVIEAmVTCgACYUQJAPwHBAUCYUECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIHQm9vbGVhbgUCYUQJAAIBCQCsAgIJAAMBBQJhRAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmVUBgkBAmV5AQUCZGYGCQECYXkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHgIBQJlVQdhc3NldElkBAJkdwgFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHYEBQJkdwUCZHgFAVgFAVkDCQAAAgUCZVYFAmVWBAJlVwgFAmVWAl80BAJkdQgFAmVWAl8zBAJjUAgFAmVWAl8yBAJlWAgFAmVWAl8xBAJlWQMDCQBmAgUCZVEAAAkAZgIFAmVRBQJlWAcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJlWAQCZG8JAQJkbQEFAmVZAwkAAAIFAmRvBQJkbwQCZU4DBQJlUgQCZVoJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJlWQUDbmlsAwkAAAIFAmVaBQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmVZBQJhVAUDbmlsBAJmYQMJAGYCBQJkdQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFCBQJkdQUCZHgFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZU4FAmZhBQJlWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgERcHV0T25lVGtuUkVBRE9OTFkCAmR4AmR3BAJmYgkBAmR2BAUCZHcJAQJhSwEFAmR4BQR1bml0BQR1bml0BAJlWAgFAmZiAl8xBAJjUAgFAmZiAl8yBAJkdQgFAmZiAl8zBAJlVwgFAmZiAl80CQCUCgIFA25pbAkAlQoDBQJlWAUCZHUFAmVXAmRmAQlnZXRPbmVUa24CAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAmVVCQCRAwIIBQJkZghwYXltZW50cwAABAJkeAgFAmVVB2Fzc2V0SWQEAmRMCAUCZVUGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmUJAQJlYwUFAmVkBQJkTAUCZHgFAVgFAVkDCQAAAgUCZmUFAmZlBAJlVwgFAmZlAl80BAJkdQgFAmZlAl8zBAJjUAgFAmZlAl8yBAJmZggFAmZlAl8xBAJkbgMDCQBmAgUCZVEAAAkAZgIFAmVRBQJmZgcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJmZgQCZmcJAPwHBAUCYUECBGJ1cm4JAMwIAgUCZEwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHgFAmRMBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZWQFA25pbAQCZmEDCQBmAgUCZHUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQgUCZHUFAmVkBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJlZAJkTAQCZmkJAQJlYwUJAQJhSwEFAmVkBQJkTAUCYVQFBHVuaXQFBHVuaXQEAmZmCAUCZmkCXzEEAmNQCAUCZmkCXzIEAmR1CAUCZmkCXzMEAmVXCAUCZmkCXzQJAJQKAgUDbmlsCQCVCgMFAmZmBQJkdQUCZVcCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZqAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmF5AQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmZsCQECZWMFBQJlZAUCZmoFAmFUBQFYBQFZAwkAAAIFAmZsBQJmbAQCZVcIBQJmbAJfNAQCZHUIBQJmbAJfMwQCY1AIBQJmbAJfMgQCZmYIBQJmbAJfMQQCZG4DAwkAZgIFAmVRAAAJAGYCBQJlUQUCZmYHCQECYXkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVRBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFBAgRidXJuCQDMCAIFAmZqBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmagUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmVkBQNuaWwEAmZhAwkAZgIFAmR1AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUIFAmR1BQJlZAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZtCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZm8CZnAEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZm8DCQBmAgUCZnAFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmcAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZnEFAmZxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZyAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmcgUCZnIEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZqAmZzAmZwBAJmZAMJAQJhRgAGCQAAAgUCYVMFAW4EAmVlCQDMCAIDCQEBIQEFAmZkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmFUBQJmaggFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCY2kIBQJjQQNfMTAEAmZ0CQDMCAIDCQBnAgUCY2cFAmZzBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAkAzAgCAwkAZwIFAmNoBQJmcAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUDbmlsAwkAAAIFAmZ0BQJmdAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEIYWN0aXZhdGUCAmZ1AmZ2AwkBAiE9AgkApQgBCAUCZGYGY2FsbGVyCQClCAEFAmFBCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZnYFA25pbAIHc3VjY2VzcwJkZgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmRmARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicgkAlAoCBQNuaWwJAQJicQEFAmJyAmRmARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiTQAACQDMCAIJAKYDAQkAkQMCBQJiTQABCQDMCAIJAKYDAQkAkQMCBQJiTQACBQNuaWwCZGYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkZgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGYBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnQCYnUJAJQKAgUDbmlsCQCmAwEJAQJicwIJAKcDAQUCYnQJAKcDAQUCYnUCZGYBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxCQCUCgIFA25pbAkBAmNqCQUCYk8FAmNrBQJjbAUCY20FAmNuBQJjbwUBWAUCY3AFAmNxAmRmASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CYlACYlEBWAQCY0EJAQJiTgQFAmJPBQJiUAUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjQQJfMQgFAmNBAl8yCAUCY0ECXzMIBQJjQQJfNAgFAmNBAl81CAUCY0ECXzYIBQJjQQJfNwkApgMBCAUCY0ECXzgIBQJjQQJfOQgFAmNBA18xMAJkZgENc3RhdHNSRUFET05MWQAEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCZngDCQAAAgUCZncAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkMDBQJjVQUCY1YFAmZ3BAJjYgAABAJmeQkBAUcCCQCRAwIFAmZ4AAEFAWIEAmZ6CQEBRwIJAJEDAgUCZngAAgUBYgQCZkEJAQV2YWx1ZQEJAJoIAgUCYUEJAQJhbQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmNiCQDMCAIJAKQDAQUCZnkJAMwIAgkApAMBBQJmegkAzAgCCQCkAwEFAmZBBQNuaWwFAWoCZGYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjbAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY3IEAmNWCQECYnEBBQJjcwQCYkEJAQFEAgUCY1UFAmJGBAJiQgkBAUQCBQJjVgUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmJCBQJiQQQCY3gJAQFEAgUCY2wFAmJGBAJjeQkAvAIDBQJjeAUCY2EFAWQEAmNuCQEBRwIFAmN5BQJiRwQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjbgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQwkBAmJxAQUCY3IEAmZECQECYnEBBQJjcwQCZkUJAQFEAgUCZkMFAmJGBAJmRgkBAUQCBQJmRAUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmZGBQJmRQQCY3kJAQFEAgUCY24FAmJHBAJjeAkAvAIDBQJjeQUBZAUCY2EEAmNsCQEBRwIFAmN4BQJiRgQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmARNldmFsdWF0ZUdldFJFQURPTkxZAgJmRwJmSAQCY0EJAQJiTgQCAAUCZkcFAmZIBQR0aGlzBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVwgFAmNBAl81BAJiWQgFAmNBAl82BAJiVggFAmNBAl83BAJjYggFAmNBAl84BAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIJAKYDAQUCY2IJAMwIAgkApAMBBQJiVQUDbmlsBQFqAQJmSQECZkoABAJmSwQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQUCZXoDCQABAgUCZHECBFVuaXQIBQJmSQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHEFAmZJAwkAAQIFAmRxAgVPcmRlcgQCY1IFAmRxBAJmTAkBAmFHAAQCYXIJAQJjUQEFAmNSBAJhcwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAAgFAmNSD3NlbmRlclB1YmxpY0tleQQCYXQJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAEFAmZMAwMDBQJhcgUCYXMHBQJhdAcGCQECYXEDBQJhcgUCYXMFAmF0AwkAAQIFAmRxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXcFAmRxBAJmTQkA9gMBCQEFdmFsdWUBCAUCZXcGc2NyaXB0BAJmTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFBCQECYW8ABAJmTwkA8QcBBQR0aGlzAwMJAAACBQJmTgUCZk0JAQIhPQIFAmZPBQJmTQcGCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmSwkA9AMDCAUCZkkJYm9keUJ5dGVzCQCRAwIIBQJmSQZwcm9vZnMAAAUCZkvBwFdz", "chainId": 84, "height": 2368450, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8zDvhHdCfpwWdFw344bPp7H6MJpTL7LPSDe4Vm4jvoUi Next: 297i3FmTXpgUZt5hk73R1LrH6XyC4jdsoASWMMSxn7tm Diff:
OldNewDifferences
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
68+func J (K,L,M) = fraction(K, L, M)
6969
7070
71-func L (M,N,O) = fraction(M, N, O)
72-
73-
74-func P (H) = if ((0 > H))
71+func N (H) = if ((0 > H))
7572 then -(H)
7673 else H
7774
7875
79-func Q (H) = if ((e > H))
76+func O (H) = if ((e > H))
8077 then -(H)
8178 else H
8279
8380
84-func R () = "%s__factoryContract"
81+func P () = "%s__factoryContract"
8582
8683
87-func S () = "%s__managerPublicKey"
84+func Q () = "%s__managerPublicKey"
8885
8986
90-func T () = "%s__pendingManagerPublicKey"
87+func R () = "%s__pendingManagerPublicKey"
9188
9289
93-func U () = "%s%s__price__last"
90+func S () = "%s%s__price__last"
9491
9592
96-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9794
9895
99-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
10097
10198
102-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
103100
104101
105-func ac () = "%s__amountAsset"
102+func aa () = "%s__amountAsset"
106103
107104
108-func ad () = "%s__priceAsset"
105+func ab () = "%s__priceAsset"
109106
110107
111-let ae = "%s__fee"
112-
113-let af = fraction(10, b, 10000)
114-
115-let ag = valueOrElse(getInteger(this, ae), af)
116-
117-let ah = makeString(["%s", "kLp"], j)
118-
119-let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120-
121-let aj = makeString(["%s", "refreshKLpDelay"], j)
122-
123-let ak = 30
124-
125-let al = valueOrElse(getInteger(this, aj), ak)
126-
127-func am () = "%s__factoryConfig"
108+func ac () = "%s__factoryConfig"
128109
129110
130-func an () = "%s%s__matcher__publicKey"
111+func ad () = "%s%s__matcher__publicKey"
131112
132113
133-func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
134115
135116
136-func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
137118
138119
139-func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
140121
141122
142-func av () = "%s__shutdown"
123+func al () = "%s__shutdown"
143124
144125
145-func aw (ax) = ("%s%s__poolWeight__" + ax)
126+func am (an) = ("%s%s__poolWeight__" + an)
146127
147128
148-func ay () = "%s__allowedLpScriptHash"
129+func ao () = "%s__allowedLpScriptHash"
149130
150131
151-let az = "%s__feeCollectorAddress"
132+let ap = "%s__feeCollectorAddress"
152133
153-func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
154135
155136
156-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
157138
158139
159-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
160141
161142
162-func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
163144
164145
165-func aK (aJ) = makeString(["lp.ride:", aJ], " ")
146+let aA = addressFromStringValue(au(this, P()))
147+
148+let aB = addressFromStringValue(au(aA, ap))
149+
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
166165
167166
168-let aL = addressFromStringValue(aE(this, R()))
169-
170-let aM = addressFromStringValue(aE(aL, az))
171-
172-func aN () = valueOrElse(getBoolean(aL, av()), false)
167+func aG () = fromBase58String(au(aA, ad()))
173168
174169
175-func aO () = fromBase58String(aE(aL, an()))
176-
177-
178-func aP () = {
179- let aQ = aE(this, ac())
180- let aR = aE(this, ad())
181- let as = aH(aL, at(aR))
182- let ar = aH(aL, at(aQ))
183- split(aE(aL, aq(toString(ar), toString(as))), j)
170+func aH () = {
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
184176 }
185177
186178
187-func aS (aT) = if ((aT == i))
179+func aK (aL) = if ((aL == i))
188180 then unit
189- else fromBase58String(aT)
181+ else fromBase58String(aL)
190182
191183
192-func aU (aT) = if ((aT == unit))
184+func aM (aL) = if ((aL == unit))
193185 then i
194- else toBase58String(value(aT))
186+ else toBase58String(value(aL))
195187
196188
197-func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
189+func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
198190
199191
200-let aX = aV(aP())
192+let aP = aN(aH())
201193
202-let aY = aX
194+let aQ = aP
203195
204-let aZ = aY._1
196+let aR = aQ._1
205197
206-let ba = aY._2
198+let aS = aQ._2
207199
208-let bb = aY._3
200+let aT = aQ._3
209201
210-let bc = aY._4
202+let aU = aQ._4
211203
212-let bd = aY._5
204+let aV = aQ._5
213205
214-let be = aY._6
206+let aW = aQ._6
215207
216-let bf = aY._7
208+let aX = aQ._7
217209
218-func bg () = split(aE(aL, am()), j)
210+func aY () = split(au(aA, ac()), j)
219211
220212
221-let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
213+let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
222214
223-let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
215+let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
224216
225-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
217+func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
226218
227219
228-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
220+func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
229221
230222
231-func by (bz) = if ((bz == "WAVES"))
223+func bq (br) = if ((br == "WAVES"))
232224 then wavesBalance(this).available
233- else assetBalance(this, fromBase58String(bz))
225+ else assetBalance(this, fromBase58String(br))
234226
235227
236-func bA (bB,bC) = fraction(bB, d, bC)
228+func bs (bt,bu) = fraction(bt, d, bu)
237229
238230
239-func bD (bB,bC,K) = fraction(bB, d, bC, K)
240-
241-
242-func bE (bF,bG,bH,bI) = {
243- let bJ = D(bH, bF)
244- let bK = D(bI, bG)
245- bA(bK, bJ)
231+func bv (bw,bx,by,bz) = {
232+ let bA = D(by, bw)
233+ let bB = D(bz, bx)
234+ bs(bB, bA)
246235 }
247236
248237
249-func bL (bH,bI,bM) = {
250- let bN = aP()
251- let bO = parseIntValue(bN[t])
252- let bP = parseIntValue(bN[u])
253- let bQ = bE(bO, bP, bH, bI)
254- let bC = D(bH, bO)
255- let bB = D(bI, bP)
256- let bR = D(bM, b)
257- let bS = bA(bC, bR)
258- let bT = bA(bB, bR)
259-[bQ, bS, bT]
238+func bC (by,bz,bD) = {
239+ let bE = aH()
240+ let bF = parseIntValue(bE[t])
241+ let bG = parseIntValue(bE[u])
242+ let bH = bv(bF, bG, by, bz)
243+ let bu = D(by, bF)
244+ let bt = D(bz, bG)
245+ let bI = D(bD, b)
246+ let bJ = bs(bu, bI)
247+ let bK = bs(bt, bI)
248+[bH, bJ, bK]
260249 }
261250
262251
263-func bU (bH,bI,bM) = {
264- let bV = bL(bH, bI, bM)
265-[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
252+func bL (by,bz,bD) = {
253+ let bM = bC(by, bz, bD)
254+[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
266255 }
267256
268257
269-func bW (bX,bY,bZ,Z) = {
270- let bN = aP()
271- let ca = bN[q]
272- let cb = bN[r]
273- let cc = bN[s]
274- let bF = parseIntValue(bN[t])
275- let bG = parseIntValue(bN[u])
276- let cd = bN[p]
277- let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278- if ((ca != bY))
258+func bN (bO,bP,bQ,X) = {
259+ let bE = aH()
260+ let bR = bE[q]
261+ let bS = bE[r]
262+ let bT = bE[s]
263+ let bw = parseIntValue(bE[t])
264+ let bx = parseIntValue(bE[u])
265+ let bU = bE[p]
266+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267+ if ((bR != bP))
279268 then throw("Invalid asset passed.")
280269 else {
281- let cf = by(cb)
282- let cg = D(cf, bF)
283- let ch = by(cc)
284- let ci = D(ch, bG)
285- let cj = bA(ci, cg)
286- let ck = G(cj, b)
287- let cl = D(bZ, b)
288- let cm = D(ce, b)
289- let cn = fraction(cg, cl, cm)
290- let co = fraction(ci, cl, cm)
291- let cp = J(cn, bF, FLOOR)
292- let cq = J(co, bG, FLOOR)
293- let cr = if ((bX == ""))
270+ let bW = bq(bS)
271+ let bX = D(bW, bw)
272+ let bY = bq(bT)
273+ let bZ = D(bY, bx)
274+ let ca = bs(bZ, bX)
275+ let cb = G(ca, b)
276+ let cc = D(bQ, b)
277+ let cd = D(bV, b)
278+ let ce = fraction(bX, cc, cd)
279+ let cf = fraction(bZ, cc, cd)
280+ let cg = G(ce, bw)
281+ let ch = G(cf, bx)
282+ let ci = if ((bO == ""))
294283 then nil
295- else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
284+ else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
296285 then unit
297- else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
286+ else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
298287 then unit
299- else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300- $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
288+ else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289+ $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
301290 }
302291 }
303292
304293
305-func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306- let bN = aP()
307- let ca = fromBase58String(bN[q])
308- let cA = bN[r]
309- let cB = bN[s]
310- let cC = bN[v]
311- let cD = bN[w]
312- let bO = parseIntValue(bN[t])
313- let bP = parseIntValue(bN[u])
314- let cd = bN[p]
315- let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316- let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317- let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318- if (if ((cA != cE))
294+func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295+ let bE = aH()
296+ let bR = fromBase58String(bE[q])
297+ let cr = bE[r]
298+ let cs = bE[s]
299+ let ct = bE[v]
300+ let cu = bE[w]
301+ let bF = parseIntValue(bE[t])
302+ let bG = parseIntValue(bE[u])
303+ let bU = bE[p]
304+ let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305+ let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306+ let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307+ if (if ((cr != cv))
319308 then true
320- else (cB != cF))
309+ else (cs != cw))
321310 then throw("Invalid amt or price asset passed.")
322311 else {
323- let cf = if (cy)
324- then by(cA)
325- else (by(cA) - cu)
326- let ch = if (cy)
327- then by(cB)
328- else (by(cB) - cw)
329- let cG = D(cu, bO)
330- let cH = D(cw, bP)
331- let cI = bA(cH, cG)
332- let cg = D(cf, bO)
333- let ci = D(ch, bP)
334- let cJ = if ((ce == 0))
312+ let bW = if (cp)
313+ then bq(cr)
314+ else (bq(cr) - cl)
315+ let bY = if (cp)
316+ then bq(cs)
317+ else (bq(cs) - cn)
318+ let cx = D(cl, bF)
319+ let cy = D(cn, bG)
320+ let cz = bs(cy, cx)
321+ let bX = D(bW, bF)
322+ let bZ = D(bY, bG)
323+ let cA = if ((bV == 0))
335324 then {
336- let cj = e
337- let cK = e
338- let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339- $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
325+ let ca = e
326+ let cB = e
327+ let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328+ $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
340329 }
341330 else {
342- let cj = bA(ci, cg)
343- let cK = fraction(Q((cj - cI)), d, cj)
344- let cL = D(ct, b)
345- if (if ((cj != e))
346- then (cK > cL)
331+ let ca = bs(bZ, bX)
332+ let cB = fraction(O((ca - cz)), d, ca)
333+ let cC = D(ck, b)
334+ if (if ((ca != e))
335+ then (cB > cC)
347336 else false)
348- then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
337+ then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
349338 else {
350- let cm = D(ce, b)
351- let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352- let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353- let cO = if ((cM > cH))
354- then $Tuple2(cN, cH)
355- else $Tuple2(cG, cM)
356- let cP = cO._1
357- let cQ = cO._2
358- let bR = fraction(cm, cQ, ci, FLOOR)
359- $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
339+ let cd = D(bV, b)
340+ let cD = fraction(cx, ca, d)
341+ let cE = fraction(cy, d, ca)
342+ let cF = if ((cD > cy))
343+ then $Tuple2(cE, cy)
344+ else $Tuple2(cx, cD)
345+ let cG = cF._1
346+ let cH = cF._2
347+ let bI = fraction(cd, cH, bZ)
348+ $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
360349 }
361350 }
362- let cR = cJ._1
363- let cS = cJ._2
364- let cT = cJ._3
365- let ck = G(cJ._4, b)
366- let cU = G(cJ._5, b)
367- if ((0 >= cR))
351+ let cI = cA._1
352+ let cJ = cA._2
353+ let cK = cA._3
354+ let cb = G(cA._4, b)
355+ let cL = G(cA._5, b)
356+ if ((0 >= cI))
368357 then throw("Invalid calculations. LP calculated is less than zero.")
369358 else {
370- let cV = if (!(cz))
359+ let cM = if (!(cq))
371360 then 0
372- else cR
373- let cW = (cu - cS)
374- let cX = (cw - cT)
375- let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376- $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
361+ else cI
362+ let cN = (cl - cJ)
363+ let cO = (cn - cK)
364+ let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365+ $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
377366 }
378367 }
379368 }
380369
381370
382-func cZ (da,db,ce) = {
383- let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384- if ((ce == f))
385- then f
386- else dc
371+func cQ (cR) = {
372+ let bE = aH()
373+ let cS = bE[r]
374+ let cT = bE[s]
375+ let bU = parseIntValue(bE[p])
376+ let bF = parseIntValue(bE[t])
377+ let bG = parseIntValue(bE[u])
378+ let cU = bq(cS)
379+ let cV = bq(cT)
380+ let ca = if ((cR.orderType == Buy))
381+ then bv(bF, bG, (cU + cR.amount), cV)
382+ else bv(bF, bG, (cU - cR.amount), cV)
383+ let cb = G(ca, b)
384+ if (if (if (aF())
385+ then true
386+ else (bU == m))
387+ then true
388+ else (bU == n))
389+ then throw("Exchange operations disabled")
390+ else {
391+ let cW = cR.assetPair.amountAsset
392+ let cX = if ((cW == unit))
393+ then "WAVES"
394+ else toBase58String(value(cW))
395+ let cY = cR.assetPair.priceAsset
396+ let cZ = if ((cY == unit))
397+ then "WAVES"
398+ else toBase58String(value(cY))
399+ if (if ((cX != cS))
400+ then true
401+ else (cZ != cT))
402+ then throw("Wrong order assets.")
403+ else {
404+ let da = cR.price
405+ let db = fraction(b, bG, bF)
406+ let dc = J(da, b, db)
407+ let dd = if ((cR.orderType == Buy))
408+ then (cb >= dc)
409+ else (dc >= cb)
410+ true
411+ }
412+ }
387413 }
388414
389415
390-func dd (de,df,dg) = {
391- let dh = (toBigInt(by(aU(bc))) - de)
392- let di = (toBigInt(by(aU(bd))) - df)
393- let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394- let dk = cZ(dh, di, dj)
395- dk
396- }
397-
398-
399-func dl (dm,dn,dg) = {
400- let dh = (by(aU(bc)) + dm)
401- let di = (by(aU(bd)) + dn)
402- let dj = (value(assetInfo(bb)).quantity + dg)
403- let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404- let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405- $Tuple2(do, dc)
406- }
407-
408-
409-func dp (dq,dc) = if ((dc >= dq))
410- then true
411- else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412-
413-
414-func dr (ds) = {
415- let dt = ds.amount
416- let du = fraction(ds.amount, ds.price, b, FLOOR)
417- let dv = if ((ds.orderType == Buy))
418- then $Tuple2(dt, -(du))
419- else $Tuple2(-(dt), du)
420- let dm = dv._1
421- let dn = dv._2
422- if (if (if (aN())
423- then true
424- else (ba == m))
425- then true
426- else (ba == n))
427- then throw("Exchange operations disabled")
428- else if (if ((ds.assetPair.amountAsset != bc))
429- then true
430- else (ds.assetPair.priceAsset != bd))
431- then throw("Wrong order assets.")
432- else {
433- let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434- let dx = dl(dm, dn, 0)
435- let dy = dx._1
436- let dz = dx._2
437- let dA = (dz >= dw)
438- dA
439- }
440- }
441-
442-
443-func dB (dC) = if ((size(dC.payments) != 1))
416+func de (df) = if ((size(df.payments) != 1))
444417 then throw("exactly 1 payment is expected")
445418 else {
446- let dD = value(dC.payments[0])
447- let bY = value(dD.assetId)
448- let dE = dD.amount
449- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450- let cp = cJ._1
451- let cq = cJ._2
452- let cd = parseIntValue(cJ._9)
453- let cr = cJ._10
454- if (if (aN())
419+ let dg = value(df.payments[0])
420+ let bP = value(dg.assetId)
421+ let dh = dg.amount
422+ let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423+ let cg = cA._1
424+ let ch = cA._2
425+ let bU = parseIntValue(cA._9)
426+ let ci = cA._10
427+ if (if (aF())
455428 then true
456- else (cd == n))
457- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458- else $Tuple5(cp, cq, dE, bY, cr)
429+ else (bU == n))
430+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431+ else $Tuple5(cg, ch, dh, bP, ci)
459432 }
460433
461434
462-func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
435+func di (df,ck,cq) = if ((size(df.payments) != 2))
463436 then throw("exactly 2 payments are expected")
464437 else {
465- let dG = value(dC.payments[0])
466- let dH = value(dC.payments[1])
467- let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468- let cd = parseIntValue(dI._8)
469- if (if (if (aN())
438+ let dj = value(df.payments[0])
439+ let dk = value(df.payments[1])
440+ let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441+ let bU = parseIntValue(dl._8)
442+ if (if (if (aF())
470443 then true
471- else (cd == l))
444+ else (bU == l))
472445 then true
473- else (cd == n))
474- then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475- else dI
446+ else (bU == n))
447+ then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448+ else dl
476449 }
477450
478451
479-func dJ (dK) = {
480- let dL = invoke(aL, "emit", [dK], nil)
481- if ((dL == dL))
452+func dm (dn) = {
453+ let do = invoke(aA, "emit", [dn], nil)
454+ if ((do == do))
482455 then {
483- let dM = {
484- let dN = dL
485- if ($isInstanceOf(dN, "Address"))
456+ let dp = {
457+ let dq = do
458+ if ($isInstanceOf(dq, "Address"))
486459 then {
487- let dO = dN
488- invoke(dO, "emit", [dK], nil)
460+ let dr = dq
461+ invoke(dr, "emit", [dn], nil)
489462 }
490463 else unit
491464 }
492- if ((dM == dM))
493- then dK
465+ if ((dp == dp))
466+ then dn
494467 else throw("Strict value is not equal to itself.")
495468 }
496469 else throw("Strict value is not equal to itself.")
497470 }
498471
499472
500-func dP (dK) = {
501- let dQ = fraction(dK, ag, b)
502- $Tuple2((dK - dQ), dQ)
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
475+ then 0
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
503478 }
504479
505480
506-func dR (dS,dT,Z,aa) = {
507- let dU = (aa == unit)
508- let dV = by(aU(bc))
509- let dW = by(aU(bd))
510- let dX = if ((dT == bc))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
511486 then true
512- else if ((dT == bd))
487+ else if ((dx == aV))
513488 then false
514- else aI("invalid asset")
515- let dY = if (dU)
516- then $Tuple2(dV, dW)
517- else if (dX)
518- then $Tuple2((dV - dS), dW)
519- else $Tuple2(dV, (dW - dS))
520- let dZ = dY._1
521- let ea = dY._2
522- let eb = if (dX)
523- then $Tuple2(dS, 0)
524- else $Tuple2(0, dS)
525- let ec = eb._1
526- let ed = eb._2
527- let dt = dP(ec)._1
528- let du = dP(ed)._1
529- let ee = dP(dS)
530- let ef = ee._1
531- let dQ = ee._2
532- let eg = (dZ + dt)
533- let eh = (ea + du)
534- let ei = bA(D(eh, bf), D(eg, be))
535- let ej = G(ei, b)
536- let ek = if (dX)
537- then dZ
538- else ea
539- let el = toBigInt(ek)
540- let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541- let en = if ((em > f))
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
507+ let dM = (dD + dI)
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
542517 then true
543- else aI("initial deposit requires all coins")
544- if ((en == en))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
545520 then {
546- let eo = toBigInt(ef)
547- let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548- let cY = if (dU)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
549524 then nil
550- else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551- let eq = bA(D(ea, bf), D(dZ, be))
552- let er = G(eq, b)
553- let es = {
554- let et = if (dX)
555- then $Tuple2(ec, dZ)
556- else $Tuple2(ed, ea)
557- let dK = et._1
558- let eu = et._2
559- let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560- fraction((ep - ev), b, ev)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
561536 }
562- $Tuple5(ep, cY, dQ, es, dX)
537+ $Tuple4(dV, cP, du, dY)
563538 }
564539 else throw("Strict value is not equal to itself.")
565540 }
566541
567542
568-func ew (ex,ef,dT,Z,aa) = {
569- let dU = (aa == unit)
570- let bN = aP()
571- let bO = parseIntValue(bN[t])
572- let bP = parseIntValue(bN[u])
573- let ey = [if ((dT == bb))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
574546 then true
575- else aI("invalid lp asset")]
576- if ((ey == ey))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
577549 then {
578- let ez = if ((ex == bc))
550+ let ef = if ((ed == aU))
579551 then true
580- else if ((ex == bd))
552+ else if ((ed == aV))
581553 then false
582- else aI("invalid asset")
583- let eA = if (ez)
584- then toBigInt(by(aU(bc)))
585- else toBigInt(by(aU(bd)))
586- let eB = if (ez)
587- then bO
588- else bP
589- let eC = by(aU(bc))
590- let eD = by(aU(bd))
591- let eE = if (ez)
592- then eC
593- else eD
594- let eF = toBigInt(eE)
595- let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596- let eG = toBigInt(ef)
597- let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598- let eI = dP(eH)
599- let eJ = eI._1
600- let dQ = eI._2
601- let eK = if (ez)
602- then $Tuple4(eJ, 0, (eC - eH), eD)
603- else $Tuple4(0, eJ, eC, (eD - eH))
604- let eL = eK._1
605- let eM = eK._2
606- let eN = eK._3
607- let eO = eK._4
608- let ei = bA(D(eO, bf), D(eN, be))
609- let ej = G(ei, b)
610- let cY = if (dU)
554+ else ay("invalid asset")
555+ let eg = if (ef)
556+ then toBigInt(bq(aM(aU)))
557+ else toBigInt(bq(aM(aV)))
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
611580 then nil
612- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613- let eq = bA(D(eD, bf), D(eC, be))
614- let er = G(eq, b)
615- let es = {
616- let eP = (toInt(fraction(eA, eG, em)) * 2)
617- fraction((eJ - eP), b, eP)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
618587 }
619- $Tuple5(eJ, cY, dQ, es, ez)
588+ $Tuple4(eo, cP, du, dY)
620589 }
621590 else throw("Strict value is not equal to itself.")
622591 }
623592
624593
625-func eQ () = {
626- let dN = getString(S())
627- if ($isInstanceOf(dN, "String"))
594+func ev () = {
595+ let dq = getString(Q())
596+ if ($isInstanceOf(dq, "String"))
628597 then {
629- let eR = dN
630- fromBase58String(eR)
598+ let ew = dq
599+ fromBase58String(ew)
631600 }
632- else if ($isInstanceOf(dN, "Unit"))
601+ else if ($isInstanceOf(dq, "Unit"))
633602 then unit
634603 else throw("Match error")
635604 }
636605
637606
638-func eS () = {
639- let dN = getString(T())
640- if ($isInstanceOf(dN, "String"))
607+func ex () = {
608+ let dq = getString(R())
609+ if ($isInstanceOf(dq, "String"))
641610 then {
642- let eR = dN
643- fromBase58String(eR)
611+ let ew = dq
612+ fromBase58String(ew)
644613 }
645- else if ($isInstanceOf(dN, "Unit"))
614+ else if ($isInstanceOf(dq, "Unit"))
646615 then unit
647616 else throw("Match error")
648617 }
649618
650619
651-func eT (dC) = {
652- let dN = eQ()
653- if ($isInstanceOf(dN, "ByteVector"))
620+func ey (df) = {
621+ let dq = ev()
622+ if ($isInstanceOf(dq, "ByteVector"))
654623 then {
655- let eU = dN
656- (dC.callerPublicKey == eU)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
657626 }
658- else if ($isInstanceOf(dN, "Unit"))
659- then (dC.caller == this)
627+ else if ($isInstanceOf(dq, "Unit"))
628+ then (df.caller == this)
660629 else throw("Match error")
661630 }
662631
663632
664-func eV (dC) = {
665- let eW = throw("Permission denied")
666- let dN = eQ()
667- if ($isInstanceOf(dN, "ByteVector"))
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
636+ if ($isInstanceOf(dq, "ByteVector"))
668637 then {
669- let eU = dN
670- if ((dC.callerPublicKey == eU))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
671640 then true
672- else eW
641+ else eB
673642 }
674- else if ($isInstanceOf(dN, "Unit"))
675- then if ((dC.caller == this))
643+ else if ($isInstanceOf(dq, "Unit"))
644+ then if ((df.caller == this))
676645 then true
677- else eW
646+ else eB
678647 else throw("Match error")
679648 }
680649
681650
682-@Callable(dC)
683-func setManager (eX) = {
684- let eY = eV(dC)
685- if ((eY == eY))
651+@Callable(df)
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
686655 then {
687- let eZ = fromBase58String(eX)
688- if ((eZ == eZ))
689- then [StringEntry(T(), eX)]
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
690659 else throw("Strict value is not equal to itself.")
691660 }
692661 else throw("Strict value is not equal to itself.")
694663
695664
696665
697-@Callable(dC)
666+@Callable(df)
698667 func confirmManager () = {
699- let fa = eS()
700- let fb = if (isDefined(fa))
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
701670 then true
702671 else throw("No pending manager")
703- if ((fb == fb))
672+ if ((eG == eG))
704673 then {
705- let fc = if ((dC.callerPublicKey == value(fa)))
674+ let eH = if ((df.callerPublicKey == value(eF)))
706675 then true
707676 else throw("You are not pending manager")
708- if ((fc == fc))
709- then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
710679 else throw("Strict value is not equal to itself.")
711680 }
712681 else throw("Strict value is not equal to itself.")
714683
715684
716685
717-@Callable(dC)
718-func put (ct,fd) = if ((0 > ct))
686+@Callable(df)
687+func put (ck,eI) = if ((0 > ck))
719688 then throw("Invalid slippageTolerance passed")
720689 else {
721- let dI = dF(dC, ct, true)
722- let cV = dI._2
723- let ca = dI._7
724- let cr = dI._9
725- let cW = dI._10
726- let cX = dI._11
727- let fe = dI._12
728- let ff = dI._13
729- let dG = toBigInt(value(dC.payments[0]).amount)
730- let dH = toBigInt(value(dC.payments[1]).amount)
731- let dk = dd(dG, dH, toBigInt(0))
732- if ((dk == dk))
690+ let dl = di(df, ck, true)
691+ let cM = dl._2
692+ let bR = dl._7
693+ let ci = dl._9
694+ let cN = dl._10
695+ let cO = dl._11
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
699+ if ((do == do))
733700 then {
734- let dL = invoke(aL, "emit", [cV], nil)
735- if ((dL == dL))
701+ let dp = {
702+ let dq = do
703+ if ($isInstanceOf(dq, "Address"))
704+ then {
705+ let dr = dq
706+ invoke(dr, "emit", [cM], nil)
707+ }
708+ else unit
709+ }
710+ if ((dp == dp))
736711 then {
737- let dM = {
738- let dN = dL
739- if ($isInstanceOf(dN, "Address"))
740- then {
741- let dO = dN
742- invoke(dO, "emit", [cV], nil)
743- }
744- else unit
745- }
746- if ((dM == dM))
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714+ else nil
715+ if ((eL == eL))
747716 then {
748- let fg = if ((cW > 0))
749- then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
750719 else nil
751- if ((fg == fg))
720+ if ((eM == eM))
752721 then {
753- let fh = if ((cX > 0))
754- then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755- else nil
756- if ((fh == fh))
722+ let eN = if (eI)
757723 then {
758- let fi = if (fd)
759- then {
760- let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761- if ((fj == fj))
762- then nil
763- else throw("Strict value is not equal to itself.")
764- }
765- else [ScriptTransfer(dC.caller, cV, ca)]
766- let fk = dl(0, 0, 0)
767- if ((fk == fk))
768- then {
769- let dc = fk._2
770- let fl = fk._1
771- let fm = dp(dk, dc)
772- if ((fm == fm))
773- then ((cr ++ fi) ++ fl)
774- else throw("Strict value is not equal to itself.")
775- }
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
726+ then nil
776727 else throw("Strict value is not equal to itself.")
777728 }
778- else throw("Strict value is not equal to itself.")
729+ else [ScriptTransfer(df.caller, cM, bR)]
730+ (ci ++ eN)
779731 }
780732 else throw("Strict value is not equal to itself.")
781733 }
788740
789741
790742
791-@Callable(dC)
792-func putForFree (fn) = if ((0 > fn))
743+@Callable(df)
744+func putForFree (eP) = if ((0 > eP))
793745 then throw("Invalid value passed")
794746 else {
795- let dI = dF(dC, fn, false)
796- let cr = dI._9
797- let dG = toBigInt(value(dC.payments[0]).amount)
798- let dH = toBigInt(value(dC.payments[1]).amount)
799- let dk = dd(dG, dH, toBigInt(0))
800- if ((dk == dk))
801- then {
802- let fo = dl(0, 0, 0)
803- let fl = fo._1
804- let dc = fo._2
805- let fm = dp(dk, dc)
806- if ((fm == fm))
807- then (cr ++ fl)
808- else throw("Strict value is not equal to itself.")
809- }
810- else throw("Strict value is not equal to itself.")
747+ let dl = di(df, eP, false)
748+ dl._9
811749 }
812750
813751
814752
815-@Callable(dC)
816-func putOneTkn (fp,fq) = {
817- let fr = {
818- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819- if ($isInstanceOf(fs, "Boolean"))
820- then fs
821- else throw(($getType(fs) + " couldn't be cast to Boolean"))
753+@Callable(df)
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
822760 }
823- let ft = if (if (if (aN())
761+ let eT = if (if (if (aF())
824762 then true
825- else (ba == l))
763+ else (aS == l))
826764 then true
827- else (ba == n))
765+ else (aS == n))
828766 then true
829- else fr
830- let ey = [if (if (!(ft))
767+ else eS
768+ let ee = [if (if (!(eT))
831769 then true
832- else eT(dC))
770+ else ey(df))
833771 then true
834- else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
835773 then true
836- else aI("exactly 1 payment are expected")]
837- if ((ey == ey))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
838776 then {
839- let fu = dC.payments[0]
840- let dT = fu.assetId
841- let dS = fu.amount
842- let dk = if ((dT == bc))
843- then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844- else if ((dT == bd))
845- then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846- else aI("payment asset is not supported")
847- if ((dk == dk))
777+ let eU = df.payments[0]
778+ let dx = eU.assetId
779+ let dw = eU.amount
780+ let X = df.caller
781+ let Y = df.transactionId
782+ let eV = dv(dw, dx, X, Y)
783+ if ((eV == eV))
848784 then {
849- let Z = dC.caller
850- let aa = dC.transactionId
851- let fv = dR(dS, dT, Z, aa)
852- if ((fv == fv))
785+ let eW = eV._4
786+ let du = eV._3
787+ let cP = eV._2
788+ let eX = eV._1
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
791+ else false)
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793+ else eX
794+ let do = dm(eY)
795+ if ((do == do))
853796 then {
854- let dX = fv._5
855- let fw = fv._4
856- let dQ = fv._3
857- let cY = fv._2
858- let fx = fv._1
859- let fy = if (if ((fp > 0))
860- then (fp > fx)
797+ let eN = if (eR)
798+ then {
799+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800+ if ((eZ == eZ))
801+ then nil
802+ else throw("Strict value is not equal to itself.")
803+ }
804+ else [ScriptTransfer(df.caller, eY, aT)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
807+ else nil
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+
817+
818+
819+@Callable(df)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
822+ let eX = fb._1
823+ let cP = fb._2
824+ let du = fb._3
825+ let eW = fb._4
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
827+ }
828+
829+
830+
831+@Callable(df)
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
838+ }
839+ let fd = if (if (aF())
840+ then true
841+ else (aS == n))
842+ then true
843+ else eS
844+ let ee = [if (if (!(fd))
845+ then true
846+ else ey(df))
847+ then true
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849+ then true
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
852+ then {
853+ let ed = aK(fc)
854+ let eU = df.payments[0]
855+ let dx = eU.assetId
856+ let dL = eU.amount
857+ let X = df.caller
858+ let Y = df.transactionId
859+ let fe = ec(ed, dL, dx, X, Y)
860+ if ((fe == fe))
861+ then {
862+ let eW = fe._4
863+ let du = fe._3
864+ let cP = fe._2
865+ let ff = fe._1
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
868+ else false)
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870+ else ff
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872+ if ((fg == fg))
873+ then {
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
877+ else nil
878+ $Tuple2(((cP ++ fh) ++ fa), dn)
879+ }
880+ else throw("Strict value is not equal to itself.")
881+ }
882+ else throw("Strict value is not equal to itself.")
883+ }
884+ else throw("Strict value is not equal to itself.")
885+ }
886+
887+
888+
889+@Callable(df)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
892+ let ff = fi._1
893+ let cP = fi._2
894+ let du = fi._3
895+ let eW = fi._4
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
897+ }
898+
899+
900+
901+@Callable(df)
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
908+ }
909+ let fd = if (if (aF())
910+ then true
911+ else (aS == n))
912+ then true
913+ else eS
914+ let ee = [if (if (!(fd))
915+ then true
916+ else ey(df))
917+ then true
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919+ then true
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
922+ then {
923+ let ed = aK(fc)
924+ let X = df.caller
925+ let Y = df.transactionId
926+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927+ if ((fk == fk))
928+ then {
929+ let fl = ec(ed, fj, aT, X, Y)
930+ if ((fl == fl))
931+ then {
932+ let eW = fl._4
933+ let du = fl._3
934+ let cP = fl._2
935+ let ff = fl._1
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
861938 else false)
862- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
863- else fx
864- let dL = dJ(fy)
865- if ((dL == dL))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940+ else ff
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942+ if ((fg == fg))
866943 then {
867- let fi = if (fq)
868- then {
869- let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
870- if ((fz == fz))
871- then nil
872- else throw("Strict value is not equal to itself.")
873- }
874- else [ScriptTransfer(dC.caller, fy, bb)]
875- let fA = if ((dQ > 0))
876- then [ScriptTransfer(aM, dQ, dT)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
877947 else nil
878- let fB = if ((this == aM))
879- then $Tuple2(0, 0)
880- else if (dX)
881- then $Tuple2(-(dQ), 0)
882- else $Tuple2(0, -(dQ))
883- let dm = fB._1
884- let dn = fB._2
885- let fC = dl(dm, dn, 0)
886- let fl = fC._1
887- let dc = fC._2
888- let dw = value(getString(ah))
889- let fm = dp(dk, dc)
890- if ((fm == fm))
891- then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
892- else throw("Strict value is not equal to itself.")
948+ $Tuple2(((cP ++ fh) ++ fa), dn)
893949 }
894950 else throw("Strict value is not equal to itself.")
895951 }
902958
903959
904960
905-@Callable(dC)
906-func putOneTknREADONLY (dT,dS) = {
907- let fD = dR(dS, aS(dT), unit, unit)
908- let fx = fD._1
909- let cY = fD._2
910- let dQ = fD._3
911- let fw = fD._4
912- let dX = fD._5
913- $Tuple2(nil, $Tuple3(fx, dQ, fw))
961+@Callable(df)
962+func get () = {
963+ let cA = de(df)
964+ let fm = cA._1
965+ let ch = cA._2
966+ let dh = cA._3
967+ let bP = cA._4
968+ let ci = cA._5
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970+ if ((fn == fn))
971+ then ci
972+ else throw("Strict value is not equal to itself.")
914973 }
915974
916975
917976
918-@Callable(dC)
919-func getOneTkn (fE,fp) = {
920- let fr = {
921- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922- if ($isInstanceOf(fs, "Boolean"))
923- then fs
924- else throw(($getType(fs) + " couldn't be cast to Boolean"))
925- }
926- let fF = if (if (aN())
927- then true
928- else (ba == n))
929- then true
930- else fr
931- let ey = [if (if (!(fF))
932- then true
933- else eT(dC))
934- then true
935- else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
936- then true
937- else aI("exactly 1 payment are expected")]
938- if ((ey == ey))
977+@Callable(df)
978+func getNoLess (fo,fp) = {
979+ let cA = de(df)
980+ let cg = cA._1
981+ let ch = cA._2
982+ let dh = cA._3
983+ let bP = cA._4
984+ let ci = cA._5
985+ if ((fo > cg))
986+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987+ else if ((fp > ch))
988+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989+ else {
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991+ if ((fn == fn))
992+ then ci
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ }
996+
997+
998+
999+@Callable(df)
1000+func unstakeAndGet (dn) = {
1001+ let fq = if ((size(df.payments) != 0))
1002+ then throw("No payments are expected")
1003+ else true
1004+ if ((fq == fq))
9391005 then {
940- let ex = aS(fE)
941- let fu = dC.payments[0]
942- let dT = fu.assetId
943- let ef = fu.amount
944- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
945- if ((dk == dk))
1006+ let bE = aH()
1007+ let bR = fromBase58String(bE[q])
1008+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009+ if ((fk == fk))
9461010 then {
947- let Z = dC.caller
948- let aa = dC.transactionId
949- let fG = ew(ex, ef, dT, Z, aa)
950- if ((fG == fG))
1011+ let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012+ let bU = parseIntValue(cA._9)
1013+ let ci = cA._10
1014+ let fr = if (if (aF())
1015+ then true
1016+ else (bU == n))
1017+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018+ else true
1019+ if ((fr == fr))
9511020 then {
952- let ez = fG._5
953- let fw = fG._4
954- let dQ = fG._3
955- let cY = fG._2
956- let fH = fG._1
957- let dK = if (if ((fp > 0))
958- then (fp > fH)
959- else false)
960- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
961- else fH
962- let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
963- if ((fI == fI))
964- then {
965- let fJ = [ScriptTransfer(Z, dK, ex)]
966- let fA = if ((dQ > 0))
967- then [ScriptTransfer(aM, dQ, ex)]
968- else nil
969- let fK = {
970- let fL = if ((this == aM))
971- then 0
972- else dQ
973- if (ez)
974- then $Tuple2(-((dK + fL)), 0)
975- else $Tuple2(0, -((dK + fL)))
976- }
977- let dm = fK._1
978- let dn = fK._2
979- let fM = dl(dm, dn, 0)
980- let fl = fM._1
981- let dc = fM._2
982- let fm = dp(dk, dc)
983- if ((fm == fm))
984- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
985- else throw("Strict value is not equal to itself.")
986- }
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022+ if ((fn == fn))
1023+ then ci
9871024 else throw("Strict value is not equal to itself.")
9881025 }
9891026 else throw("Strict value is not equal to itself.")
9951032
9961033
9971034
998-@Callable(dC)
999-func getOneTknREADONLY (ex,ef) = {
1000- let fN = ew(aS(ex), ef, bb, unit, unit)
1001- let fH = fN._1
1002- let cY = fN._2
1003- let dQ = fN._3
1004- let fw = fN._4
1005- let ez = fN._5
1006- $Tuple2(nil, $Tuple3(fH, dQ, fw))
1007- }
1008-
1009-
1010-
1011-@Callable(dC)
1012-func unstakeAndGetOneTkn (fO,fE,fp) = {
1013- let fr = {
1014- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1015- if ($isInstanceOf(fs, "Boolean"))
1016- then fs
1017- else throw(($getType(fs) + " couldn't be cast to Boolean"))
1018- }
1019- let fF = if (if (aN())
1035+@Callable(df)
1036+func unstakeAndGetNoLess (fj,fs,fp) = {
1037+ let fd = if (aF())
10201038 then true
1021- else (ba == n))
1039+ else (aS == n)
1040+ let ee = [if (!(fd))
10221041 then true
1023- else fr
1024- let ey = [if (if (!(fF))
1042+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10251043 then true
1026- else eT(dC))
1027- then true
1028- else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
1029- then true
1030- else aI("no payments are expected")]
1031- if ((ey == ey))
1044+ else throw("no payments are expected")]
1045+ if ((ee == ee))
10321046 then {
1033- let ex = aS(fE)
1034- let Z = dC.caller
1035- let aa = dC.transactionId
1036- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1037- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1038- if ((fP == fP))
1047+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048+ if ((fk == fk))
10391049 then {
1040- let fQ = ew(ex, fO, bb, Z, aa)
1041- if ((fQ == fQ))
1050+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051+ let cg = cA._1
1052+ let ch = cA._2
1053+ let ci = cA._10
1054+ let ft = [if ((cg >= fs))
1055+ then true
1056+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057+ then true
1058+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059+ if ((ft == ft))
10421060 then {
1043- let ez = fQ._5
1044- let fw = fQ._4
1045- let dQ = fQ._3
1046- let cY = fQ._2
1047- let fH = fQ._1
1048- let dK = if (if ((fp > 0))
1049- then (fp > fH)
1050- else false)
1051- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1052- else fH
1053- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1054- if ((fI == fI))
1055- then {
1056- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1057- let fA = if ((dQ > 0))
1058- then [ScriptTransfer(aM, dQ, ex)]
1059- else nil
1060- let fR = {
1061- let fL = if ((this == aM))
1062- then 0
1063- else dQ
1064- if (ez)
1065- then $Tuple2(-((dK + fL)), 0)
1066- else $Tuple2(0, -((dK + fL)))
1067- }
1068- let dm = fR._1
1069- let dn = fR._2
1070- let fS = dl(dm, dn, 0)
1071- let fl = fS._1
1072- let dc = fS._2
1073- let fm = dp(dk, dc)
1074- if ((fm == fm))
1075- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1076- else throw("Strict value is not equal to itself.")
1077- }
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062+ if ((fn == fn))
1063+ then ci
10781064 else throw("Strict value is not equal to itself.")
10791065 }
10801066 else throw("Strict value is not equal to itself.")
10861072
10871073
10881074
1089-@Callable(dC)
1090-func get () = {
1091- let cJ = dB(dC)
1092- let fT = cJ._1
1093- let cq = cJ._2
1094- let dE = cJ._3
1095- let bY = cJ._4
1096- let cr = cJ._5
1097- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1098- if ((dk == dk))
1099- then {
1100- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1101- if ((fU == fU))
1102- then {
1103- let fV = dl(-(fT), -(cq), 0)
1104- let fl = fV._1
1105- let dc = fV._2
1106- let fm = dp(dk, dc)
1107- if ((fm == fm))
1108- then (cr ++ fl)
1109- else throw("Strict value is not equal to itself.")
1110- }
1111- else throw("Strict value is not equal to itself.")
1112- }
1113- else throw("Strict value is not equal to itself.")
1075+@Callable(df)
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077+ then throw("permissions denied")
1078+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079+
1080+
1081+
1082+@Callable(df)
1083+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084+
1085+
1086+
1087+@Callable(df)
1088+func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089+
1090+
1091+
1092+@Callable(df)
1093+func calcPricesWrapperREADONLY (by,bz,bD) = {
1094+ let bM = bC(by, bz, bD)
1095+ $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
11141096 }
11151097
11161098
11171099
1118-@Callable(dC)
1119-func getNoLess (fW,fX) = {
1120- let cJ = dB(dC)
1121- let cp = cJ._1
1122- let cq = cJ._2
1123- let dE = cJ._3
1124- let bY = cJ._4
1125- let cr = cJ._5
1126- if ((fW > cp))
1127- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1128- else if ((fX > cq))
1129- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
1130- else {
1131- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1132- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1133- if ((fU == fU))
1134- then {
1135- let fY = dl(-(cp), -(cq), 0)
1136- let fl = fY._1
1137- let dc = fY._2
1138- let fm = dp(dk, dc)
1139- if ((fm == fm))
1140- then (cr ++ fl)
1141- else throw("Strict value is not equal to itself.")
1142- }
1143- else throw("Strict value is not equal to itself.")
1144- }
1100+@Callable(df)
1101+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1102+
1103+
1104+
1105+@Callable(df)
1106+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1107+
1108+
1109+
1110+@Callable(df)
1111+func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1112+
1113+
1114+
1115+@Callable(df)
1116+func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1117+
1118+
1119+
1120+@Callable(df)
1121+func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122+ let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123+ $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
11451124 }
11461125
11471126
11481127
1149-@Callable(dC)
1150-func unstakeAndGet (dK) = {
1151- let fZ = if ((size(dC.payments) != 0))
1152- then throw("No payments are expected")
1153- else true
1154- if ((fZ == fZ))
1155- then {
1156- let bN = aP()
1157- let ca = fromBase58String(bN[q])
1158- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1159- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1160- if ((fP == fP))
1161- then {
1162- let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1163- let cp = cJ._1
1164- let cq = cJ._2
1165- let cd = parseIntValue(cJ._9)
1166- let cr = cJ._10
1167- let ga = if (if (aN())
1168- then true
1169- else (cd == n))
1170- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1171- else true
1172- if ((ga == ga))
1173- then {
1174- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1175- if ((fU == fU))
1176- then {
1177- let gb = dl(-(cp), -(cq), 0)
1178- let fl = gb._1
1179- let dc = gb._2
1180- let fm = dp(dk, dc)
1181- if ((fm == fm))
1182- then (cr ++ fl)
1183- else throw("Strict value is not equal to itself.")
1184- }
1185- else throw("Strict value is not equal to itself.")
1186- }
1187- else throw("Strict value is not equal to itself.")
1188- }
1189- else throw("Strict value is not equal to itself.")
1190- }
1191- else throw("Strict value is not equal to itself.")
1128+@Callable(df)
1129+func statsREADONLY () = {
1130+ let bE = aH()
1131+ let bR = fromBase58String(bE[q])
1132+ let cS = bE[r]
1133+ let cT = bE[s]
1134+ let ct = bE[v]
1135+ let cu = bE[w]
1136+ let bF = parseIntValue(bE[t])
1137+ let bG = parseIntValue(bE[u])
1138+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139+ let cU = bq(cS)
1140+ let cV = bq(cT)
1141+ let fx = if ((fw == 0))
1142+ then [e, e, e]
1143+ else bC(cU, cV, fw)
1144+ let cb = 0
1145+ let fy = G(fx[1], b)
1146+ let fz = G(fx[2], b)
1147+ let fA = value(getInteger(aA, am(toString(this))))
1148+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11921149 }
11931150
11941151
11951152
1196-@Callable(dC)
1197-func unstakeAndGetNoLess (fO,gc,fX) = {
1198- let fF = if (aN())
1199- then true
1200- else (ba == n)
1201- let ey = [if (!(fF))
1202- then true
1203- else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
1204- then true
1205- else throw("no payments are expected")]
1206- if ((ey == ey))
1207- then {
1208- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1209- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1210- if ((fP == fP))
1211- then {
1212- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1213- let cp = cJ._1
1214- let cq = cJ._2
1215- let cr = cJ._10
1216- let gd = [if ((cp >= gc))
1217- then true
1218- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1219- then true
1220- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1221- if ((gd == gd))
1222- then {
1223- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1224- if ((fU == fU))
1225- then {
1226- let ge = dl(-(cp), -(cq), 0)
1227- let fl = ge._1
1228- let dc = ge._2
1229- let fm = dp(dk, dc)
1230- if ((fm == fm))
1231- then (cr ++ fl)
1232- else throw("Strict value is not equal to itself.")
1233- }
1234- else throw("Strict value is not equal to itself.")
1235- }
1236- else throw("Strict value is not equal to itself.")
1237- }
1238- else throw("Strict value is not equal to itself.")
1239- }
1240- else throw("Strict value is not equal to itself.")
1153+@Callable(df)
1154+func evaluatePutByAmountAssetREADONLY (cl) = {
1155+ let bE = aH()
1156+ let bR = fromBase58String(bE[q])
1157+ let cr = bE[r]
1158+ let bS = fromBase58String(cr)
1159+ let cs = bE[s]
1160+ let bT = fromBase58String(cs)
1161+ let bF = parseIntValue(bE[t])
1162+ let bG = parseIntValue(bE[u])
1163+ let bU = bE[p]
1164+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165+ let cU = bq(cr)
1166+ let cV = bq(cs)
1167+ let bA = D(cU, bF)
1168+ let bB = D(cV, bG)
1169+ let ca = if ((fw == 0))
1170+ then e
1171+ else bs(bB, bA)
1172+ let cx = D(cl, bF)
1173+ let cy = fraction(cx, ca, d)
1174+ let cn = G(cy, bG)
1175+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176+ let cI = dl._1
1177+ let fB = dl._3
1178+ let bW = dl._4
1179+ let bY = dl._5
1180+ let bV = dl._6
1181+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12411182 }
12421183
12431184
12441185
1245-@Callable(dC)
1246-func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
1247- then throw("permissions denied")
1248- else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
1249-
1250-
1251-
1252-@Callable(dC)
1253-func refreshKLp () = {
1254- let gh = valueOrElse(getInteger(ai), 0)
1255- let gi = if (((height - gh) >= al))
1256- then unit
1257- else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1258- if ((gi == gi))
1259- then {
1260- let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1261- let gj = dl(0, 0, 0)
1262- let gk = gj._1
1263- let dc = gj._2
1264- let do = if ((dw != dc))
1265- then gk
1266- else aI("nothing to refresh")
1267- $Tuple2(do, toString(dc))
1268- }
1269- else throw("Strict value is not equal to itself.")
1186+@Callable(df)
1187+func evaluatePutByPriceAssetREADONLY (cn) = {
1188+ let bE = aH()
1189+ let bR = fromBase58String(bE[q])
1190+ let cr = bE[r]
1191+ let bS = fromBase58String(cr)
1192+ let cs = bE[s]
1193+ let bT = fromBase58String(cs)
1194+ let bF = parseIntValue(bE[t])
1195+ let bG = parseIntValue(bE[u])
1196+ let bU = bE[p]
1197+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198+ let fC = bq(cr)
1199+ let fD = bq(cs)
1200+ let fE = D(fC, bF)
1201+ let fF = D(fD, bG)
1202+ let ca = if ((fw == 0))
1203+ then e
1204+ else bs(fF, fE)
1205+ let cy = D(cn, bG)
1206+ let cx = fraction(cy, d, ca)
1207+ let cl = G(cx, bF)
1208+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209+ let cI = dl._1
1210+ let fB = dl._3
1211+ let bW = dl._4
1212+ let bY = dl._5
1213+ let bV = dl._6
1214+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12701215 }
12711216
12721217
12731218
1274-@Callable(dC)
1275-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
1276-
1277-
1278-
1279-@Callable(dC)
1280-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1281-
1282-
1283-
1284-@Callable(dC)
1285-func calcPricesWrapperREADONLY (bH,bI,bM) = {
1286- let bV = bL(bH, bI, bM)
1287- $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
1219+@Callable(df)
1220+func evaluateGetREADONLY (fG,fH) = {
1221+ let cA = bN("", fG, fH, this)
1222+ let cg = cA._1
1223+ let ch = cA._2
1224+ let bW = cA._5
1225+ let bY = cA._6
1226+ let bV = cA._7
1227+ let cb = cA._8
1228+ let bU = parseIntValue(cA._9)
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
12881230 }
12891231
12901232
1291-
1292-@Callable(dC)
1293-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1294-
1295-
1296-
1297-@Callable(dC)
1298-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1299-
1300-
1301-
1302-@Callable(dC)
1303-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1304-
1305-
1306-
1307-@Callable(dC)
1308-func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
1309-
1310-
1311-
1312-@Callable(dC)
1313-func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1314- let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1315- $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
1316- }
1317-
1318-
1319-
1320-@Callable(dC)
1321-func statsREADONLY () = {
1322- let bN = aP()
1323- let ca = fromBase58String(bN[q])
1324- let gl = bN[r]
1325- let gm = bN[s]
1326- let cC = bN[v]
1327- let cD = bN[w]
1328- let bO = parseIntValue(bN[t])
1329- let bP = parseIntValue(bN[u])
1330- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1331- let go = by(gl)
1332- let gp = by(gm)
1333- let gq = if ((gn == 0))
1334- then [e, e, e]
1335- else bL(go, gp, gn)
1336- let ck = 0
1337- let gr = G(gq[1], b)
1338- let gs = G(gq[2], b)
1339- let gt = value(getInteger(aL, aw(toString(this))))
1340- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
1341- }
1342-
1343-
1344-
1345-@Callable(dC)
1346-func evaluatePutByAmountAssetREADONLY (cu) = {
1347- let bN = aP()
1348- let ca = fromBase58String(bN[q])
1349- let cA = bN[r]
1350- let cb = fromBase58String(cA)
1351- let cB = bN[s]
1352- let cc = fromBase58String(cB)
1353- let bO = parseIntValue(bN[t])
1354- let bP = parseIntValue(bN[u])
1355- let cd = bN[p]
1356- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1357- let go = by(cA)
1358- let gp = by(cB)
1359- let bJ = D(go, bO)
1360- let bK = D(gp, bP)
1361- let cj = if ((gn == 0))
1362- then e
1363- else bA(bK, bJ)
1364- let cG = D(cu, bO)
1365- let cH = fraction(cG, cj, d)
1366- let cw = G(cH, bP)
1367- let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1368- let cR = dI._1
1369- let gu = dI._3
1370- let cf = dI._4
1371- let ch = dI._5
1372- let ce = dI._6
1373- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
1374- }
1375-
1376-
1377-
1378-@Callable(dC)
1379-func evaluatePutByPriceAssetREADONLY (cw) = {
1380- let bN = aP()
1381- let ca = fromBase58String(bN[q])
1382- let cA = bN[r]
1383- let cb = fromBase58String(cA)
1384- let cB = bN[s]
1385- let cc = fromBase58String(cB)
1386- let bO = parseIntValue(bN[t])
1387- let bP = parseIntValue(bN[u])
1388- let cd = bN[p]
1389- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1390- let gv = by(cA)
1391- let gw = by(cB)
1392- let gx = D(gv, bO)
1393- let gy = D(gw, bP)
1394- let cj = if ((gn == 0))
1395- then e
1396- else bA(gy, gx)
1397- let cH = D(cw, bP)
1398- let cG = fraction(cH, d, cj)
1399- let cu = G(cG, bO)
1400- let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1401- let cR = dI._1
1402- let gu = dI._3
1403- let cf = dI._4
1404- let ch = dI._5
1405- let ce = dI._6
1406- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
1407- }
1408-
1409-
1410-
1411-@Callable(dC)
1412-func evaluateGetREADONLY (gz,gA) = {
1413- let cJ = bW("", gz, gA, this)
1414- let cp = cJ._1
1415- let cq = cJ._2
1416- let cf = cJ._5
1417- let ch = cJ._6
1418- let ce = cJ._7
1419- let ck = cJ._8
1420- let cd = parseIntValue(cJ._9)
1421- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
1422- }
1423-
1424-
1425-@Verifier(gB)
1426-func gC () = {
1427- let gD = {
1428- let dN = eQ()
1429- if ($isInstanceOf(dN, "ByteVector"))
1233+@Verifier(fI)
1234+func fJ () = {
1235+ let fK = {
1236+ let dq = ev()
1237+ if ($isInstanceOf(dq, "ByteVector"))
14301238 then {
1431- let eU = dN
1432- eU
1239+ let ez = dq
1240+ ez
14331241 }
1434- else if ($isInstanceOf(dN, "Unit"))
1435- then gB.senderPublicKey
1242+ else if ($isInstanceOf(dq, "Unit"))
1243+ then fI.senderPublicKey
14361244 else throw("Match error")
14371245 }
1438- let dN = gB
1439- if ($isInstanceOf(dN, "Order"))
1246+ let dq = fI
1247+ if ($isInstanceOf(dq, "Order"))
14401248 then {
1441- let ds = dN
1442- let gE = aO()
1443- let aB = dr(ds)
1444- let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1445- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1446- if (if (if (aB)
1447- then aC
1249+ let cR = dq
1250+ let fL = aG()
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
14481256 else false)
1449- then aD
1257+ then at
14501258 else false)
14511259 then true
1452- else aA(aB, aC, aD)
1260+ else aq(ar, as, at)
14531261 }
1454- else if ($isInstanceOf(dN, "SetScriptTransaction"))
1262+ else if ($isInstanceOf(dq, "SetScriptTransaction"))
14551263 then {
1456- let eR = dN
1457- let gF = blake2b256(value(eR.script))
1458- let gG = fromBase64String(value(getString(aL, ay())))
1459- let gH = scriptHash(this)
1460- if (if ((gG == gF))
1461- then (gH != gF)
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
1267+ let fO = scriptHash(this)
1268+ if (if ((fN == fM))
1269+ then (fO != fM)
14621270 else false)
14631271 then true
1464- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1272+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
14651273 }
1466- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1274+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
14671275 }
14681276
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
68+func J (K,L,M) = fraction(K, L, M)
6969
7070
71-func L (M,N,O) = fraction(M, N, O)
72-
73-
74-func P (H) = if ((0 > H))
71+func N (H) = if ((0 > H))
7572 then -(H)
7673 else H
7774
7875
79-func Q (H) = if ((e > H))
76+func O (H) = if ((e > H))
8077 then -(H)
8178 else H
8279
8380
84-func R () = "%s__factoryContract"
81+func P () = "%s__factoryContract"
8582
8683
87-func S () = "%s__managerPublicKey"
84+func Q () = "%s__managerPublicKey"
8885
8986
90-func T () = "%s__pendingManagerPublicKey"
87+func R () = "%s__pendingManagerPublicKey"
9188
9289
93-func U () = "%s%s__price__last"
90+func S () = "%s%s__price__last"
9491
9592
96-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9794
9895
99-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
10097
10198
102-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
103100
104101
105-func ac () = "%s__amountAsset"
102+func aa () = "%s__amountAsset"
106103
107104
108-func ad () = "%s__priceAsset"
105+func ab () = "%s__priceAsset"
109106
110107
111-let ae = "%s__fee"
112-
113-let af = fraction(10, b, 10000)
114-
115-let ag = valueOrElse(getInteger(this, ae), af)
116-
117-let ah = makeString(["%s", "kLp"], j)
118-
119-let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120-
121-let aj = makeString(["%s", "refreshKLpDelay"], j)
122-
123-let ak = 30
124-
125-let al = valueOrElse(getInteger(this, aj), ak)
126-
127-func am () = "%s__factoryConfig"
108+func ac () = "%s__factoryConfig"
128109
129110
130-func an () = "%s%s__matcher__publicKey"
111+func ad () = "%s%s__matcher__publicKey"
131112
132113
133-func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
134115
135116
136-func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
137118
138119
139-func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
140121
141122
142-func av () = "%s__shutdown"
123+func al () = "%s__shutdown"
143124
144125
145-func aw (ax) = ("%s%s__poolWeight__" + ax)
126+func am (an) = ("%s%s__poolWeight__" + an)
146127
147128
148-func ay () = "%s__allowedLpScriptHash"
129+func ao () = "%s__allowedLpScriptHash"
149130
150131
151-let az = "%s__feeCollectorAddress"
132+let ap = "%s__feeCollectorAddress"
152133
153-func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
154135
155136
156-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
157138
158139
159-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
160141
161142
162-func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
163144
164145
165-func aK (aJ) = makeString(["lp.ride:", aJ], " ")
146+let aA = addressFromStringValue(au(this, P()))
147+
148+let aB = addressFromStringValue(au(aA, ap))
149+
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
166165
167166
168-let aL = addressFromStringValue(aE(this, R()))
169-
170-let aM = addressFromStringValue(aE(aL, az))
171-
172-func aN () = valueOrElse(getBoolean(aL, av()), false)
167+func aG () = fromBase58String(au(aA, ad()))
173168
174169
175-func aO () = fromBase58String(aE(aL, an()))
176-
177-
178-func aP () = {
179- let aQ = aE(this, ac())
180- let aR = aE(this, ad())
181- let as = aH(aL, at(aR))
182- let ar = aH(aL, at(aQ))
183- split(aE(aL, aq(toString(ar), toString(as))), j)
170+func aH () = {
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
184176 }
185177
186178
187-func aS (aT) = if ((aT == i))
179+func aK (aL) = if ((aL == i))
188180 then unit
189- else fromBase58String(aT)
181+ else fromBase58String(aL)
190182
191183
192-func aU (aT) = if ((aT == unit))
184+func aM (aL) = if ((aL == unit))
193185 then i
194- else toBase58String(value(aT))
186+ else toBase58String(value(aL))
195187
196188
197-func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
189+func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
198190
199191
200-let aX = aV(aP())
192+let aP = aN(aH())
201193
202-let aY = aX
194+let aQ = aP
203195
204-let aZ = aY._1
196+let aR = aQ._1
205197
206-let ba = aY._2
198+let aS = aQ._2
207199
208-let bb = aY._3
200+let aT = aQ._3
209201
210-let bc = aY._4
202+let aU = aQ._4
211203
212-let bd = aY._5
204+let aV = aQ._5
213205
214-let be = aY._6
206+let aW = aQ._6
215207
216-let bf = aY._7
208+let aX = aQ._7
217209
218-func bg () = split(aE(aL, am()), j)
210+func aY () = split(au(aA, ac()), j)
219211
220212
221-let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
213+let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
222214
223-let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
215+let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
224216
225-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
217+func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
226218
227219
228-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
220+func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
229221
230222
231-func by (bz) = if ((bz == "WAVES"))
223+func bq (br) = if ((br == "WAVES"))
232224 then wavesBalance(this).available
233- else assetBalance(this, fromBase58String(bz))
225+ else assetBalance(this, fromBase58String(br))
234226
235227
236-func bA (bB,bC) = fraction(bB, d, bC)
228+func bs (bt,bu) = fraction(bt, d, bu)
237229
238230
239-func bD (bB,bC,K) = fraction(bB, d, bC, K)
240-
241-
242-func bE (bF,bG,bH,bI) = {
243- let bJ = D(bH, bF)
244- let bK = D(bI, bG)
245- bA(bK, bJ)
231+func bv (bw,bx,by,bz) = {
232+ let bA = D(by, bw)
233+ let bB = D(bz, bx)
234+ bs(bB, bA)
246235 }
247236
248237
249-func bL (bH,bI,bM) = {
250- let bN = aP()
251- let bO = parseIntValue(bN[t])
252- let bP = parseIntValue(bN[u])
253- let bQ = bE(bO, bP, bH, bI)
254- let bC = D(bH, bO)
255- let bB = D(bI, bP)
256- let bR = D(bM, b)
257- let bS = bA(bC, bR)
258- let bT = bA(bB, bR)
259-[bQ, bS, bT]
238+func bC (by,bz,bD) = {
239+ let bE = aH()
240+ let bF = parseIntValue(bE[t])
241+ let bG = parseIntValue(bE[u])
242+ let bH = bv(bF, bG, by, bz)
243+ let bu = D(by, bF)
244+ let bt = D(bz, bG)
245+ let bI = D(bD, b)
246+ let bJ = bs(bu, bI)
247+ let bK = bs(bt, bI)
248+[bH, bJ, bK]
260249 }
261250
262251
263-func bU (bH,bI,bM) = {
264- let bV = bL(bH, bI, bM)
265-[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
252+func bL (by,bz,bD) = {
253+ let bM = bC(by, bz, bD)
254+[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
266255 }
267256
268257
269-func bW (bX,bY,bZ,Z) = {
270- let bN = aP()
271- let ca = bN[q]
272- let cb = bN[r]
273- let cc = bN[s]
274- let bF = parseIntValue(bN[t])
275- let bG = parseIntValue(bN[u])
276- let cd = bN[p]
277- let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278- if ((ca != bY))
258+func bN (bO,bP,bQ,X) = {
259+ let bE = aH()
260+ let bR = bE[q]
261+ let bS = bE[r]
262+ let bT = bE[s]
263+ let bw = parseIntValue(bE[t])
264+ let bx = parseIntValue(bE[u])
265+ let bU = bE[p]
266+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267+ if ((bR != bP))
279268 then throw("Invalid asset passed.")
280269 else {
281- let cf = by(cb)
282- let cg = D(cf, bF)
283- let ch = by(cc)
284- let ci = D(ch, bG)
285- let cj = bA(ci, cg)
286- let ck = G(cj, b)
287- let cl = D(bZ, b)
288- let cm = D(ce, b)
289- let cn = fraction(cg, cl, cm)
290- let co = fraction(ci, cl, cm)
291- let cp = J(cn, bF, FLOOR)
292- let cq = J(co, bG, FLOOR)
293- let cr = if ((bX == ""))
270+ let bW = bq(bS)
271+ let bX = D(bW, bw)
272+ let bY = bq(bT)
273+ let bZ = D(bY, bx)
274+ let ca = bs(bZ, bX)
275+ let cb = G(ca, b)
276+ let cc = D(bQ, b)
277+ let cd = D(bV, b)
278+ let ce = fraction(bX, cc, cd)
279+ let cf = fraction(bZ, cc, cd)
280+ let cg = G(ce, bw)
281+ let ch = G(cf, bx)
282+ let ci = if ((bO == ""))
294283 then nil
295- else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
284+ else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
296285 then unit
297- else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
286+ else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
298287 then unit
299- else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300- $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
288+ else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289+ $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
301290 }
302291 }
303292
304293
305-func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306- let bN = aP()
307- let ca = fromBase58String(bN[q])
308- let cA = bN[r]
309- let cB = bN[s]
310- let cC = bN[v]
311- let cD = bN[w]
312- let bO = parseIntValue(bN[t])
313- let bP = parseIntValue(bN[u])
314- let cd = bN[p]
315- let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316- let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317- let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318- if (if ((cA != cE))
294+func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295+ let bE = aH()
296+ let bR = fromBase58String(bE[q])
297+ let cr = bE[r]
298+ let cs = bE[s]
299+ let ct = bE[v]
300+ let cu = bE[w]
301+ let bF = parseIntValue(bE[t])
302+ let bG = parseIntValue(bE[u])
303+ let bU = bE[p]
304+ let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305+ let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306+ let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307+ if (if ((cr != cv))
319308 then true
320- else (cB != cF))
309+ else (cs != cw))
321310 then throw("Invalid amt or price asset passed.")
322311 else {
323- let cf = if (cy)
324- then by(cA)
325- else (by(cA) - cu)
326- let ch = if (cy)
327- then by(cB)
328- else (by(cB) - cw)
329- let cG = D(cu, bO)
330- let cH = D(cw, bP)
331- let cI = bA(cH, cG)
332- let cg = D(cf, bO)
333- let ci = D(ch, bP)
334- let cJ = if ((ce == 0))
312+ let bW = if (cp)
313+ then bq(cr)
314+ else (bq(cr) - cl)
315+ let bY = if (cp)
316+ then bq(cs)
317+ else (bq(cs) - cn)
318+ let cx = D(cl, bF)
319+ let cy = D(cn, bG)
320+ let cz = bs(cy, cx)
321+ let bX = D(bW, bF)
322+ let bZ = D(bY, bG)
323+ let cA = if ((bV == 0))
335324 then {
336- let cj = e
337- let cK = e
338- let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339- $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
325+ let ca = e
326+ let cB = e
327+ let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328+ $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
340329 }
341330 else {
342- let cj = bA(ci, cg)
343- let cK = fraction(Q((cj - cI)), d, cj)
344- let cL = D(ct, b)
345- if (if ((cj != e))
346- then (cK > cL)
331+ let ca = bs(bZ, bX)
332+ let cB = fraction(O((ca - cz)), d, ca)
333+ let cC = D(ck, b)
334+ if (if ((ca != e))
335+ then (cB > cC)
347336 else false)
348- then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
337+ then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
349338 else {
350- let cm = D(ce, b)
351- let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352- let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353- let cO = if ((cM > cH))
354- then $Tuple2(cN, cH)
355- else $Tuple2(cG, cM)
356- let cP = cO._1
357- let cQ = cO._2
358- let bR = fraction(cm, cQ, ci, FLOOR)
359- $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
339+ let cd = D(bV, b)
340+ let cD = fraction(cx, ca, d)
341+ let cE = fraction(cy, d, ca)
342+ let cF = if ((cD > cy))
343+ then $Tuple2(cE, cy)
344+ else $Tuple2(cx, cD)
345+ let cG = cF._1
346+ let cH = cF._2
347+ let bI = fraction(cd, cH, bZ)
348+ $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
360349 }
361350 }
362- let cR = cJ._1
363- let cS = cJ._2
364- let cT = cJ._3
365- let ck = G(cJ._4, b)
366- let cU = G(cJ._5, b)
367- if ((0 >= cR))
351+ let cI = cA._1
352+ let cJ = cA._2
353+ let cK = cA._3
354+ let cb = G(cA._4, b)
355+ let cL = G(cA._5, b)
356+ if ((0 >= cI))
368357 then throw("Invalid calculations. LP calculated is less than zero.")
369358 else {
370- let cV = if (!(cz))
359+ let cM = if (!(cq))
371360 then 0
372- else cR
373- let cW = (cu - cS)
374- let cX = (cw - cT)
375- let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376- $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
361+ else cI
362+ let cN = (cl - cJ)
363+ let cO = (cn - cK)
364+ let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365+ $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
377366 }
378367 }
379368 }
380369
381370
382-func cZ (da,db,ce) = {
383- let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384- if ((ce == f))
385- then f
386- else dc
371+func cQ (cR) = {
372+ let bE = aH()
373+ let cS = bE[r]
374+ let cT = bE[s]
375+ let bU = parseIntValue(bE[p])
376+ let bF = parseIntValue(bE[t])
377+ let bG = parseIntValue(bE[u])
378+ let cU = bq(cS)
379+ let cV = bq(cT)
380+ let ca = if ((cR.orderType == Buy))
381+ then bv(bF, bG, (cU + cR.amount), cV)
382+ else bv(bF, bG, (cU - cR.amount), cV)
383+ let cb = G(ca, b)
384+ if (if (if (aF())
385+ then true
386+ else (bU == m))
387+ then true
388+ else (bU == n))
389+ then throw("Exchange operations disabled")
390+ else {
391+ let cW = cR.assetPair.amountAsset
392+ let cX = if ((cW == unit))
393+ then "WAVES"
394+ else toBase58String(value(cW))
395+ let cY = cR.assetPair.priceAsset
396+ let cZ = if ((cY == unit))
397+ then "WAVES"
398+ else toBase58String(value(cY))
399+ if (if ((cX != cS))
400+ then true
401+ else (cZ != cT))
402+ then throw("Wrong order assets.")
403+ else {
404+ let da = cR.price
405+ let db = fraction(b, bG, bF)
406+ let dc = J(da, b, db)
407+ let dd = if ((cR.orderType == Buy))
408+ then (cb >= dc)
409+ else (dc >= cb)
410+ true
411+ }
412+ }
387413 }
388414
389415
390-func dd (de,df,dg) = {
391- let dh = (toBigInt(by(aU(bc))) - de)
392- let di = (toBigInt(by(aU(bd))) - df)
393- let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394- let dk = cZ(dh, di, dj)
395- dk
396- }
397-
398-
399-func dl (dm,dn,dg) = {
400- let dh = (by(aU(bc)) + dm)
401- let di = (by(aU(bd)) + dn)
402- let dj = (value(assetInfo(bb)).quantity + dg)
403- let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404- let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405- $Tuple2(do, dc)
406- }
407-
408-
409-func dp (dq,dc) = if ((dc >= dq))
410- then true
411- else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412-
413-
414-func dr (ds) = {
415- let dt = ds.amount
416- let du = fraction(ds.amount, ds.price, b, FLOOR)
417- let dv = if ((ds.orderType == Buy))
418- then $Tuple2(dt, -(du))
419- else $Tuple2(-(dt), du)
420- let dm = dv._1
421- let dn = dv._2
422- if (if (if (aN())
423- then true
424- else (ba == m))
425- then true
426- else (ba == n))
427- then throw("Exchange operations disabled")
428- else if (if ((ds.assetPair.amountAsset != bc))
429- then true
430- else (ds.assetPair.priceAsset != bd))
431- then throw("Wrong order assets.")
432- else {
433- let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434- let dx = dl(dm, dn, 0)
435- let dy = dx._1
436- let dz = dx._2
437- let dA = (dz >= dw)
438- dA
439- }
440- }
441-
442-
443-func dB (dC) = if ((size(dC.payments) != 1))
416+func de (df) = if ((size(df.payments) != 1))
444417 then throw("exactly 1 payment is expected")
445418 else {
446- let dD = value(dC.payments[0])
447- let bY = value(dD.assetId)
448- let dE = dD.amount
449- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450- let cp = cJ._1
451- let cq = cJ._2
452- let cd = parseIntValue(cJ._9)
453- let cr = cJ._10
454- if (if (aN())
419+ let dg = value(df.payments[0])
420+ let bP = value(dg.assetId)
421+ let dh = dg.amount
422+ let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423+ let cg = cA._1
424+ let ch = cA._2
425+ let bU = parseIntValue(cA._9)
426+ let ci = cA._10
427+ if (if (aF())
455428 then true
456- else (cd == n))
457- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458- else $Tuple5(cp, cq, dE, bY, cr)
429+ else (bU == n))
430+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431+ else $Tuple5(cg, ch, dh, bP, ci)
459432 }
460433
461434
462-func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
435+func di (df,ck,cq) = if ((size(df.payments) != 2))
463436 then throw("exactly 2 payments are expected")
464437 else {
465- let dG = value(dC.payments[0])
466- let dH = value(dC.payments[1])
467- let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468- let cd = parseIntValue(dI._8)
469- if (if (if (aN())
438+ let dj = value(df.payments[0])
439+ let dk = value(df.payments[1])
440+ let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441+ let bU = parseIntValue(dl._8)
442+ if (if (if (aF())
470443 then true
471- else (cd == l))
444+ else (bU == l))
472445 then true
473- else (cd == n))
474- then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475- else dI
446+ else (bU == n))
447+ then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448+ else dl
476449 }
477450
478451
479-func dJ (dK) = {
480- let dL = invoke(aL, "emit", [dK], nil)
481- if ((dL == dL))
452+func dm (dn) = {
453+ let do = invoke(aA, "emit", [dn], nil)
454+ if ((do == do))
482455 then {
483- let dM = {
484- let dN = dL
485- if ($isInstanceOf(dN, "Address"))
456+ let dp = {
457+ let dq = do
458+ if ($isInstanceOf(dq, "Address"))
486459 then {
487- let dO = dN
488- invoke(dO, "emit", [dK], nil)
460+ let dr = dq
461+ invoke(dr, "emit", [dn], nil)
489462 }
490463 else unit
491464 }
492- if ((dM == dM))
493- then dK
465+ if ((dp == dp))
466+ then dn
494467 else throw("Strict value is not equal to itself.")
495468 }
496469 else throw("Strict value is not equal to itself.")
497470 }
498471
499472
500-func dP (dK) = {
501- let dQ = fraction(dK, ag, b)
502- $Tuple2((dK - dQ), dQ)
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
475+ then 0
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
503478 }
504479
505480
506-func dR (dS,dT,Z,aa) = {
507- let dU = (aa == unit)
508- let dV = by(aU(bc))
509- let dW = by(aU(bd))
510- let dX = if ((dT == bc))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
511486 then true
512- else if ((dT == bd))
487+ else if ((dx == aV))
513488 then false
514- else aI("invalid asset")
515- let dY = if (dU)
516- then $Tuple2(dV, dW)
517- else if (dX)
518- then $Tuple2((dV - dS), dW)
519- else $Tuple2(dV, (dW - dS))
520- let dZ = dY._1
521- let ea = dY._2
522- let eb = if (dX)
523- then $Tuple2(dS, 0)
524- else $Tuple2(0, dS)
525- let ec = eb._1
526- let ed = eb._2
527- let dt = dP(ec)._1
528- let du = dP(ed)._1
529- let ee = dP(dS)
530- let ef = ee._1
531- let dQ = ee._2
532- let eg = (dZ + dt)
533- let eh = (ea + du)
534- let ei = bA(D(eh, bf), D(eg, be))
535- let ej = G(ei, b)
536- let ek = if (dX)
537- then dZ
538- else ea
539- let el = toBigInt(ek)
540- let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541- let en = if ((em > f))
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
507+ let dM = (dD + dI)
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
542517 then true
543- else aI("initial deposit requires all coins")
544- if ((en == en))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
545520 then {
546- let eo = toBigInt(ef)
547- let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548- let cY = if (dU)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
549524 then nil
550- else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551- let eq = bA(D(ea, bf), D(dZ, be))
552- let er = G(eq, b)
553- let es = {
554- let et = if (dX)
555- then $Tuple2(ec, dZ)
556- else $Tuple2(ed, ea)
557- let dK = et._1
558- let eu = et._2
559- let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560- fraction((ep - ev), b, ev)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
561536 }
562- $Tuple5(ep, cY, dQ, es, dX)
537+ $Tuple4(dV, cP, du, dY)
563538 }
564539 else throw("Strict value is not equal to itself.")
565540 }
566541
567542
568-func ew (ex,ef,dT,Z,aa) = {
569- let dU = (aa == unit)
570- let bN = aP()
571- let bO = parseIntValue(bN[t])
572- let bP = parseIntValue(bN[u])
573- let ey = [if ((dT == bb))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
574546 then true
575- else aI("invalid lp asset")]
576- if ((ey == ey))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
577549 then {
578- let ez = if ((ex == bc))
550+ let ef = if ((ed == aU))
579551 then true
580- else if ((ex == bd))
552+ else if ((ed == aV))
581553 then false
582- else aI("invalid asset")
583- let eA = if (ez)
584- then toBigInt(by(aU(bc)))
585- else toBigInt(by(aU(bd)))
586- let eB = if (ez)
587- then bO
588- else bP
589- let eC = by(aU(bc))
590- let eD = by(aU(bd))
591- let eE = if (ez)
592- then eC
593- else eD
594- let eF = toBigInt(eE)
595- let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596- let eG = toBigInt(ef)
597- let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598- let eI = dP(eH)
599- let eJ = eI._1
600- let dQ = eI._2
601- let eK = if (ez)
602- then $Tuple4(eJ, 0, (eC - eH), eD)
603- else $Tuple4(0, eJ, eC, (eD - eH))
604- let eL = eK._1
605- let eM = eK._2
606- let eN = eK._3
607- let eO = eK._4
608- let ei = bA(D(eO, bf), D(eN, be))
609- let ej = G(ei, b)
610- let cY = if (dU)
554+ else ay("invalid asset")
555+ let eg = if (ef)
556+ then toBigInt(bq(aM(aU)))
557+ else toBigInt(bq(aM(aV)))
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
611580 then nil
612- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613- let eq = bA(D(eD, bf), D(eC, be))
614- let er = G(eq, b)
615- let es = {
616- let eP = (toInt(fraction(eA, eG, em)) * 2)
617- fraction((eJ - eP), b, eP)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
618587 }
619- $Tuple5(eJ, cY, dQ, es, ez)
588+ $Tuple4(eo, cP, du, dY)
620589 }
621590 else throw("Strict value is not equal to itself.")
622591 }
623592
624593
625-func eQ () = {
626- let dN = getString(S())
627- if ($isInstanceOf(dN, "String"))
594+func ev () = {
595+ let dq = getString(Q())
596+ if ($isInstanceOf(dq, "String"))
628597 then {
629- let eR = dN
630- fromBase58String(eR)
598+ let ew = dq
599+ fromBase58String(ew)
631600 }
632- else if ($isInstanceOf(dN, "Unit"))
601+ else if ($isInstanceOf(dq, "Unit"))
633602 then unit
634603 else throw("Match error")
635604 }
636605
637606
638-func eS () = {
639- let dN = getString(T())
640- if ($isInstanceOf(dN, "String"))
607+func ex () = {
608+ let dq = getString(R())
609+ if ($isInstanceOf(dq, "String"))
641610 then {
642- let eR = dN
643- fromBase58String(eR)
611+ let ew = dq
612+ fromBase58String(ew)
644613 }
645- else if ($isInstanceOf(dN, "Unit"))
614+ else if ($isInstanceOf(dq, "Unit"))
646615 then unit
647616 else throw("Match error")
648617 }
649618
650619
651-func eT (dC) = {
652- let dN = eQ()
653- if ($isInstanceOf(dN, "ByteVector"))
620+func ey (df) = {
621+ let dq = ev()
622+ if ($isInstanceOf(dq, "ByteVector"))
654623 then {
655- let eU = dN
656- (dC.callerPublicKey == eU)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
657626 }
658- else if ($isInstanceOf(dN, "Unit"))
659- then (dC.caller == this)
627+ else if ($isInstanceOf(dq, "Unit"))
628+ then (df.caller == this)
660629 else throw("Match error")
661630 }
662631
663632
664-func eV (dC) = {
665- let eW = throw("Permission denied")
666- let dN = eQ()
667- if ($isInstanceOf(dN, "ByteVector"))
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
636+ if ($isInstanceOf(dq, "ByteVector"))
668637 then {
669- let eU = dN
670- if ((dC.callerPublicKey == eU))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
671640 then true
672- else eW
641+ else eB
673642 }
674- else if ($isInstanceOf(dN, "Unit"))
675- then if ((dC.caller == this))
643+ else if ($isInstanceOf(dq, "Unit"))
644+ then if ((df.caller == this))
676645 then true
677- else eW
646+ else eB
678647 else throw("Match error")
679648 }
680649
681650
682-@Callable(dC)
683-func setManager (eX) = {
684- let eY = eV(dC)
685- if ((eY == eY))
651+@Callable(df)
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
686655 then {
687- let eZ = fromBase58String(eX)
688- if ((eZ == eZ))
689- then [StringEntry(T(), eX)]
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
690659 else throw("Strict value is not equal to itself.")
691660 }
692661 else throw("Strict value is not equal to itself.")
693662 }
694663
695664
696665
697-@Callable(dC)
666+@Callable(df)
698667 func confirmManager () = {
699- let fa = eS()
700- let fb = if (isDefined(fa))
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
701670 then true
702671 else throw("No pending manager")
703- if ((fb == fb))
672+ if ((eG == eG))
704673 then {
705- let fc = if ((dC.callerPublicKey == value(fa)))
674+ let eH = if ((df.callerPublicKey == value(eF)))
706675 then true
707676 else throw("You are not pending manager")
708- if ((fc == fc))
709- then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
710679 else throw("Strict value is not equal to itself.")
711680 }
712681 else throw("Strict value is not equal to itself.")
713682 }
714683
715684
716685
717-@Callable(dC)
718-func put (ct,fd) = if ((0 > ct))
686+@Callable(df)
687+func put (ck,eI) = if ((0 > ck))
719688 then throw("Invalid slippageTolerance passed")
720689 else {
721- let dI = dF(dC, ct, true)
722- let cV = dI._2
723- let ca = dI._7
724- let cr = dI._9
725- let cW = dI._10
726- let cX = dI._11
727- let fe = dI._12
728- let ff = dI._13
729- let dG = toBigInt(value(dC.payments[0]).amount)
730- let dH = toBigInt(value(dC.payments[1]).amount)
731- let dk = dd(dG, dH, toBigInt(0))
732- if ((dk == dk))
690+ let dl = di(df, ck, true)
691+ let cM = dl._2
692+ let bR = dl._7
693+ let ci = dl._9
694+ let cN = dl._10
695+ let cO = dl._11
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
699+ if ((do == do))
733700 then {
734- let dL = invoke(aL, "emit", [cV], nil)
735- if ((dL == dL))
701+ let dp = {
702+ let dq = do
703+ if ($isInstanceOf(dq, "Address"))
704+ then {
705+ let dr = dq
706+ invoke(dr, "emit", [cM], nil)
707+ }
708+ else unit
709+ }
710+ if ((dp == dp))
736711 then {
737- let dM = {
738- let dN = dL
739- if ($isInstanceOf(dN, "Address"))
740- then {
741- let dO = dN
742- invoke(dO, "emit", [cV], nil)
743- }
744- else unit
745- }
746- if ((dM == dM))
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714+ else nil
715+ if ((eL == eL))
747716 then {
748- let fg = if ((cW > 0))
749- then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
750719 else nil
751- if ((fg == fg))
720+ if ((eM == eM))
752721 then {
753- let fh = if ((cX > 0))
754- then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755- else nil
756- if ((fh == fh))
722+ let eN = if (eI)
757723 then {
758- let fi = if (fd)
759- then {
760- let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761- if ((fj == fj))
762- then nil
763- else throw("Strict value is not equal to itself.")
764- }
765- else [ScriptTransfer(dC.caller, cV, ca)]
766- let fk = dl(0, 0, 0)
767- if ((fk == fk))
768- then {
769- let dc = fk._2
770- let fl = fk._1
771- let fm = dp(dk, dc)
772- if ((fm == fm))
773- then ((cr ++ fi) ++ fl)
774- else throw("Strict value is not equal to itself.")
775- }
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
726+ then nil
776727 else throw("Strict value is not equal to itself.")
777728 }
778- else throw("Strict value is not equal to itself.")
729+ else [ScriptTransfer(df.caller, cM, bR)]
730+ (ci ++ eN)
779731 }
780732 else throw("Strict value is not equal to itself.")
781733 }
782734 else throw("Strict value is not equal to itself.")
783735 }
784736 else throw("Strict value is not equal to itself.")
785737 }
786738 else throw("Strict value is not equal to itself.")
787739 }
788740
789741
790742
791-@Callable(dC)
792-func putForFree (fn) = if ((0 > fn))
743+@Callable(df)
744+func putForFree (eP) = if ((0 > eP))
793745 then throw("Invalid value passed")
794746 else {
795- let dI = dF(dC, fn, false)
796- let cr = dI._9
797- let dG = toBigInt(value(dC.payments[0]).amount)
798- let dH = toBigInt(value(dC.payments[1]).amount)
799- let dk = dd(dG, dH, toBigInt(0))
800- if ((dk == dk))
801- then {
802- let fo = dl(0, 0, 0)
803- let fl = fo._1
804- let dc = fo._2
805- let fm = dp(dk, dc)
806- if ((fm == fm))
807- then (cr ++ fl)
808- else throw("Strict value is not equal to itself.")
809- }
810- else throw("Strict value is not equal to itself.")
747+ let dl = di(df, eP, false)
748+ dl._9
811749 }
812750
813751
814752
815-@Callable(dC)
816-func putOneTkn (fp,fq) = {
817- let fr = {
818- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819- if ($isInstanceOf(fs, "Boolean"))
820- then fs
821- else throw(($getType(fs) + " couldn't be cast to Boolean"))
753+@Callable(df)
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
822760 }
823- let ft = if (if (if (aN())
761+ let eT = if (if (if (aF())
824762 then true
825- else (ba == l))
763+ else (aS == l))
826764 then true
827- else (ba == n))
765+ else (aS == n))
828766 then true
829- else fr
830- let ey = [if (if (!(ft))
767+ else eS
768+ let ee = [if (if (!(eT))
831769 then true
832- else eT(dC))
770+ else ey(df))
833771 then true
834- else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
835773 then true
836- else aI("exactly 1 payment are expected")]
837- if ((ey == ey))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
838776 then {
839- let fu = dC.payments[0]
840- let dT = fu.assetId
841- let dS = fu.amount
842- let dk = if ((dT == bc))
843- then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844- else if ((dT == bd))
845- then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846- else aI("payment asset is not supported")
847- if ((dk == dk))
777+ let eU = df.payments[0]
778+ let dx = eU.assetId
779+ let dw = eU.amount
780+ let X = df.caller
781+ let Y = df.transactionId
782+ let eV = dv(dw, dx, X, Y)
783+ if ((eV == eV))
848784 then {
849- let Z = dC.caller
850- let aa = dC.transactionId
851- let fv = dR(dS, dT, Z, aa)
852- if ((fv == fv))
785+ let eW = eV._4
786+ let du = eV._3
787+ let cP = eV._2
788+ let eX = eV._1
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
791+ else false)
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793+ else eX
794+ let do = dm(eY)
795+ if ((do == do))
853796 then {
854- let dX = fv._5
855- let fw = fv._4
856- let dQ = fv._3
857- let cY = fv._2
858- let fx = fv._1
859- let fy = if (if ((fp > 0))
860- then (fp > fx)
797+ let eN = if (eR)
798+ then {
799+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800+ if ((eZ == eZ))
801+ then nil
802+ else throw("Strict value is not equal to itself.")
803+ }
804+ else [ScriptTransfer(df.caller, eY, aT)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
807+ else nil
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+
817+
818+
819+@Callable(df)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
822+ let eX = fb._1
823+ let cP = fb._2
824+ let du = fb._3
825+ let eW = fb._4
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
827+ }
828+
829+
830+
831+@Callable(df)
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
838+ }
839+ let fd = if (if (aF())
840+ then true
841+ else (aS == n))
842+ then true
843+ else eS
844+ let ee = [if (if (!(fd))
845+ then true
846+ else ey(df))
847+ then true
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849+ then true
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
852+ then {
853+ let ed = aK(fc)
854+ let eU = df.payments[0]
855+ let dx = eU.assetId
856+ let dL = eU.amount
857+ let X = df.caller
858+ let Y = df.transactionId
859+ let fe = ec(ed, dL, dx, X, Y)
860+ if ((fe == fe))
861+ then {
862+ let eW = fe._4
863+ let du = fe._3
864+ let cP = fe._2
865+ let ff = fe._1
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
868+ else false)
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870+ else ff
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872+ if ((fg == fg))
873+ then {
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
877+ else nil
878+ $Tuple2(((cP ++ fh) ++ fa), dn)
879+ }
880+ else throw("Strict value is not equal to itself.")
881+ }
882+ else throw("Strict value is not equal to itself.")
883+ }
884+ else throw("Strict value is not equal to itself.")
885+ }
886+
887+
888+
889+@Callable(df)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
892+ let ff = fi._1
893+ let cP = fi._2
894+ let du = fi._3
895+ let eW = fi._4
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
897+ }
898+
899+
900+
901+@Callable(df)
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
908+ }
909+ let fd = if (if (aF())
910+ then true
911+ else (aS == n))
912+ then true
913+ else eS
914+ let ee = [if (if (!(fd))
915+ then true
916+ else ey(df))
917+ then true
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919+ then true
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
922+ then {
923+ let ed = aK(fc)
924+ let X = df.caller
925+ let Y = df.transactionId
926+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927+ if ((fk == fk))
928+ then {
929+ let fl = ec(ed, fj, aT, X, Y)
930+ if ((fl == fl))
931+ then {
932+ let eW = fl._4
933+ let du = fl._3
934+ let cP = fl._2
935+ let ff = fl._1
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
861938 else false)
862- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
863- else fx
864- let dL = dJ(fy)
865- if ((dL == dL))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940+ else ff
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942+ if ((fg == fg))
866943 then {
867- let fi = if (fq)
868- then {
869- let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
870- if ((fz == fz))
871- then nil
872- else throw("Strict value is not equal to itself.")
873- }
874- else [ScriptTransfer(dC.caller, fy, bb)]
875- let fA = if ((dQ > 0))
876- then [ScriptTransfer(aM, dQ, dT)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
877947 else nil
878- let fB = if ((this == aM))
879- then $Tuple2(0, 0)
880- else if (dX)
881- then $Tuple2(-(dQ), 0)
882- else $Tuple2(0, -(dQ))
883- let dm = fB._1
884- let dn = fB._2
885- let fC = dl(dm, dn, 0)
886- let fl = fC._1
887- let dc = fC._2
888- let dw = value(getString(ah))
889- let fm = dp(dk, dc)
890- if ((fm == fm))
891- then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
892- else throw("Strict value is not equal to itself.")
948+ $Tuple2(((cP ++ fh) ++ fa), dn)
893949 }
894950 else throw("Strict value is not equal to itself.")
895951 }
896952 else throw("Strict value is not equal to itself.")
897953 }
898954 else throw("Strict value is not equal to itself.")
899955 }
900956 else throw("Strict value is not equal to itself.")
901957 }
902958
903959
904960
905-@Callable(dC)
906-func putOneTknREADONLY (dT,dS) = {
907- let fD = dR(dS, aS(dT), unit, unit)
908- let fx = fD._1
909- let cY = fD._2
910- let dQ = fD._3
911- let fw = fD._4
912- let dX = fD._5
913- $Tuple2(nil, $Tuple3(fx, dQ, fw))
961+@Callable(df)
962+func get () = {
963+ let cA = de(df)
964+ let fm = cA._1
965+ let ch = cA._2
966+ let dh = cA._3
967+ let bP = cA._4
968+ let ci = cA._5
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970+ if ((fn == fn))
971+ then ci
972+ else throw("Strict value is not equal to itself.")
914973 }
915974
916975
917976
918-@Callable(dC)
919-func getOneTkn (fE,fp) = {
920- let fr = {
921- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922- if ($isInstanceOf(fs, "Boolean"))
923- then fs
924- else throw(($getType(fs) + " couldn't be cast to Boolean"))
925- }
926- let fF = if (if (aN())
927- then true
928- else (ba == n))
929- then true
930- else fr
931- let ey = [if (if (!(fF))
932- then true
933- else eT(dC))
934- then true
935- else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
936- then true
937- else aI("exactly 1 payment are expected")]
938- if ((ey == ey))
977+@Callable(df)
978+func getNoLess (fo,fp) = {
979+ let cA = de(df)
980+ let cg = cA._1
981+ let ch = cA._2
982+ let dh = cA._3
983+ let bP = cA._4
984+ let ci = cA._5
985+ if ((fo > cg))
986+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987+ else if ((fp > ch))
988+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989+ else {
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991+ if ((fn == fn))
992+ then ci
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ }
996+
997+
998+
999+@Callable(df)
1000+func unstakeAndGet (dn) = {
1001+ let fq = if ((size(df.payments) != 0))
1002+ then throw("No payments are expected")
1003+ else true
1004+ if ((fq == fq))
9391005 then {
940- let ex = aS(fE)
941- let fu = dC.payments[0]
942- let dT = fu.assetId
943- let ef = fu.amount
944- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
945- if ((dk == dk))
1006+ let bE = aH()
1007+ let bR = fromBase58String(bE[q])
1008+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009+ if ((fk == fk))
9461010 then {
947- let Z = dC.caller
948- let aa = dC.transactionId
949- let fG = ew(ex, ef, dT, Z, aa)
950- if ((fG == fG))
1011+ let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012+ let bU = parseIntValue(cA._9)
1013+ let ci = cA._10
1014+ let fr = if (if (aF())
1015+ then true
1016+ else (bU == n))
1017+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018+ else true
1019+ if ((fr == fr))
9511020 then {
952- let ez = fG._5
953- let fw = fG._4
954- let dQ = fG._3
955- let cY = fG._2
956- let fH = fG._1
957- let dK = if (if ((fp > 0))
958- then (fp > fH)
959- else false)
960- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
961- else fH
962- let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
963- if ((fI == fI))
964- then {
965- let fJ = [ScriptTransfer(Z, dK, ex)]
966- let fA = if ((dQ > 0))
967- then [ScriptTransfer(aM, dQ, ex)]
968- else nil
969- let fK = {
970- let fL = if ((this == aM))
971- then 0
972- else dQ
973- if (ez)
974- then $Tuple2(-((dK + fL)), 0)
975- else $Tuple2(0, -((dK + fL)))
976- }
977- let dm = fK._1
978- let dn = fK._2
979- let fM = dl(dm, dn, 0)
980- let fl = fM._1
981- let dc = fM._2
982- let fm = dp(dk, dc)
983- if ((fm == fm))
984- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
985- else throw("Strict value is not equal to itself.")
986- }
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022+ if ((fn == fn))
1023+ then ci
9871024 else throw("Strict value is not equal to itself.")
9881025 }
9891026 else throw("Strict value is not equal to itself.")
9901027 }
9911028 else throw("Strict value is not equal to itself.")
9921029 }
9931030 else throw("Strict value is not equal to itself.")
9941031 }
9951032
9961033
9971034
998-@Callable(dC)
999-func getOneTknREADONLY (ex,ef) = {
1000- let fN = ew(aS(ex), ef, bb, unit, unit)
1001- let fH = fN._1
1002- let cY = fN._2
1003- let dQ = fN._3
1004- let fw = fN._4
1005- let ez = fN._5
1006- $Tuple2(nil, $Tuple3(fH, dQ, fw))
1007- }
1008-
1009-
1010-
1011-@Callable(dC)
1012-func unstakeAndGetOneTkn (fO,fE,fp) = {
1013- let fr = {
1014- let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1015- if ($isInstanceOf(fs, "Boolean"))
1016- then fs
1017- else throw(($getType(fs) + " couldn't be cast to Boolean"))
1018- }
1019- let fF = if (if (aN())
1035+@Callable(df)
1036+func unstakeAndGetNoLess (fj,fs,fp) = {
1037+ let fd = if (aF())
10201038 then true
1021- else (ba == n))
1039+ else (aS == n)
1040+ let ee = [if (!(fd))
10221041 then true
1023- else fr
1024- let ey = [if (if (!(fF))
1042+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10251043 then true
1026- else eT(dC))
1027- then true
1028- else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
1029- then true
1030- else aI("no payments are expected")]
1031- if ((ey == ey))
1044+ else throw("no payments are expected")]
1045+ if ((ee == ee))
10321046 then {
1033- let ex = aS(fE)
1034- let Z = dC.caller
1035- let aa = dC.transactionId
1036- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1037- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1038- if ((fP == fP))
1047+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048+ if ((fk == fk))
10391049 then {
1040- let fQ = ew(ex, fO, bb, Z, aa)
1041- if ((fQ == fQ))
1050+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051+ let cg = cA._1
1052+ let ch = cA._2
1053+ let ci = cA._10
1054+ let ft = [if ((cg >= fs))
1055+ then true
1056+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057+ then true
1058+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059+ if ((ft == ft))
10421060 then {
1043- let ez = fQ._5
1044- let fw = fQ._4
1045- let dQ = fQ._3
1046- let cY = fQ._2
1047- let fH = fQ._1
1048- let dK = if (if ((fp > 0))
1049- then (fp > fH)
1050- else false)
1051- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1052- else fH
1053- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1054- if ((fI == fI))
1055- then {
1056- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1057- let fA = if ((dQ > 0))
1058- then [ScriptTransfer(aM, dQ, ex)]
1059- else nil
1060- let fR = {
1061- let fL = if ((this == aM))
1062- then 0
1063- else dQ
1064- if (ez)
1065- then $Tuple2(-((dK + fL)), 0)
1066- else $Tuple2(0, -((dK + fL)))
1067- }
1068- let dm = fR._1
1069- let dn = fR._2
1070- let fS = dl(dm, dn, 0)
1071- let fl = fS._1
1072- let dc = fS._2
1073- let fm = dp(dk, dc)
1074- if ((fm == fm))
1075- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1076- else throw("Strict value is not equal to itself.")
1077- }
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062+ if ((fn == fn))
1063+ then ci
10781064 else throw("Strict value is not equal to itself.")
10791065 }
10801066 else throw("Strict value is not equal to itself.")
10811067 }
10821068 else throw("Strict value is not equal to itself.")
10831069 }
10841070 else throw("Strict value is not equal to itself.")
10851071 }
10861072
10871073
10881074
1089-@Callable(dC)
1090-func get () = {
1091- let cJ = dB(dC)
1092- let fT = cJ._1
1093- let cq = cJ._2
1094- let dE = cJ._3
1095- let bY = cJ._4
1096- let cr = cJ._5
1097- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1098- if ((dk == dk))
1099- then {
1100- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1101- if ((fU == fU))
1102- then {
1103- let fV = dl(-(fT), -(cq), 0)
1104- let fl = fV._1
1105- let dc = fV._2
1106- let fm = dp(dk, dc)
1107- if ((fm == fm))
1108- then (cr ++ fl)
1109- else throw("Strict value is not equal to itself.")
1110- }
1111- else throw("Strict value is not equal to itself.")
1112- }
1113- else throw("Strict value is not equal to itself.")
1075+@Callable(df)
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077+ then throw("permissions denied")
1078+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079+
1080+
1081+
1082+@Callable(df)
1083+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084+
1085+
1086+
1087+@Callable(df)
1088+func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089+
1090+
1091+
1092+@Callable(df)
1093+func calcPricesWrapperREADONLY (by,bz,bD) = {
1094+ let bM = bC(by, bz, bD)
1095+ $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
11141096 }
11151097
11161098
11171099
1118-@Callable(dC)
1119-func getNoLess (fW,fX) = {
1120- let cJ = dB(dC)
1121- let cp = cJ._1
1122- let cq = cJ._2
1123- let dE = cJ._3
1124- let bY = cJ._4
1125- let cr = cJ._5
1126- if ((fW > cp))
1127- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1128- else if ((fX > cq))
1129- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
1130- else {
1131- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1132- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1133- if ((fU == fU))
1134- then {
1135- let fY = dl(-(cp), -(cq), 0)
1136- let fl = fY._1
1137- let dc = fY._2
1138- let fm = dp(dk, dc)
1139- if ((fm == fm))
1140- then (cr ++ fl)
1141- else throw("Strict value is not equal to itself.")
1142- }
1143- else throw("Strict value is not equal to itself.")
1144- }
1100+@Callable(df)
1101+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1102+
1103+
1104+
1105+@Callable(df)
1106+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1107+
1108+
1109+
1110+@Callable(df)
1111+func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1112+
1113+
1114+
1115+@Callable(df)
1116+func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1117+
1118+
1119+
1120+@Callable(df)
1121+func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122+ let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123+ $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
11451124 }
11461125
11471126
11481127
1149-@Callable(dC)
1150-func unstakeAndGet (dK) = {
1151- let fZ = if ((size(dC.payments) != 0))
1152- then throw("No payments are expected")
1153- else true
1154- if ((fZ == fZ))
1155- then {
1156- let bN = aP()
1157- let ca = fromBase58String(bN[q])
1158- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1159- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1160- if ((fP == fP))
1161- then {
1162- let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1163- let cp = cJ._1
1164- let cq = cJ._2
1165- let cd = parseIntValue(cJ._9)
1166- let cr = cJ._10
1167- let ga = if (if (aN())
1168- then true
1169- else (cd == n))
1170- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1171- else true
1172- if ((ga == ga))
1173- then {
1174- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1175- if ((fU == fU))
1176- then {
1177- let gb = dl(-(cp), -(cq), 0)
1178- let fl = gb._1
1179- let dc = gb._2
1180- let fm = dp(dk, dc)
1181- if ((fm == fm))
1182- then (cr ++ fl)
1183- else throw("Strict value is not equal to itself.")
1184- }
1185- else throw("Strict value is not equal to itself.")
1186- }
1187- else throw("Strict value is not equal to itself.")
1188- }
1189- else throw("Strict value is not equal to itself.")
1190- }
1191- else throw("Strict value is not equal to itself.")
1128+@Callable(df)
1129+func statsREADONLY () = {
1130+ let bE = aH()
1131+ let bR = fromBase58String(bE[q])
1132+ let cS = bE[r]
1133+ let cT = bE[s]
1134+ let ct = bE[v]
1135+ let cu = bE[w]
1136+ let bF = parseIntValue(bE[t])
1137+ let bG = parseIntValue(bE[u])
1138+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139+ let cU = bq(cS)
1140+ let cV = bq(cT)
1141+ let fx = if ((fw == 0))
1142+ then [e, e, e]
1143+ else bC(cU, cV, fw)
1144+ let cb = 0
1145+ let fy = G(fx[1], b)
1146+ let fz = G(fx[2], b)
1147+ let fA = value(getInteger(aA, am(toString(this))))
1148+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11921149 }
11931150
11941151
11951152
1196-@Callable(dC)
1197-func unstakeAndGetNoLess (fO,gc,fX) = {
1198- let fF = if (aN())
1199- then true
1200- else (ba == n)
1201- let ey = [if (!(fF))
1202- then true
1203- else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
1204- then true
1205- else throw("no payments are expected")]
1206- if ((ey == ey))
1207- then {
1208- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1209- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1210- if ((fP == fP))
1211- then {
1212- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1213- let cp = cJ._1
1214- let cq = cJ._2
1215- let cr = cJ._10
1216- let gd = [if ((cp >= gc))
1217- then true
1218- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1219- then true
1220- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1221- if ((gd == gd))
1222- then {
1223- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1224- if ((fU == fU))
1225- then {
1226- let ge = dl(-(cp), -(cq), 0)
1227- let fl = ge._1
1228- let dc = ge._2
1229- let fm = dp(dk, dc)
1230- if ((fm == fm))
1231- then (cr ++ fl)
1232- else throw("Strict value is not equal to itself.")
1233- }
1234- else throw("Strict value is not equal to itself.")
1235- }
1236- else throw("Strict value is not equal to itself.")
1237- }
1238- else throw("Strict value is not equal to itself.")
1239- }
1240- else throw("Strict value is not equal to itself.")
1153+@Callable(df)
1154+func evaluatePutByAmountAssetREADONLY (cl) = {
1155+ let bE = aH()
1156+ let bR = fromBase58String(bE[q])
1157+ let cr = bE[r]
1158+ let bS = fromBase58String(cr)
1159+ let cs = bE[s]
1160+ let bT = fromBase58String(cs)
1161+ let bF = parseIntValue(bE[t])
1162+ let bG = parseIntValue(bE[u])
1163+ let bU = bE[p]
1164+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165+ let cU = bq(cr)
1166+ let cV = bq(cs)
1167+ let bA = D(cU, bF)
1168+ let bB = D(cV, bG)
1169+ let ca = if ((fw == 0))
1170+ then e
1171+ else bs(bB, bA)
1172+ let cx = D(cl, bF)
1173+ let cy = fraction(cx, ca, d)
1174+ let cn = G(cy, bG)
1175+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176+ let cI = dl._1
1177+ let fB = dl._3
1178+ let bW = dl._4
1179+ let bY = dl._5
1180+ let bV = dl._6
1181+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12411182 }
12421183
12431184
12441185
1245-@Callable(dC)
1246-func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
1247- then throw("permissions denied")
1248- else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
1249-
1250-
1251-
1252-@Callable(dC)
1253-func refreshKLp () = {
1254- let gh = valueOrElse(getInteger(ai), 0)
1255- let gi = if (((height - gh) >= al))
1256- then unit
1257- else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1258- if ((gi == gi))
1259- then {
1260- let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1261- let gj = dl(0, 0, 0)
1262- let gk = gj._1
1263- let dc = gj._2
1264- let do = if ((dw != dc))
1265- then gk
1266- else aI("nothing to refresh")
1267- $Tuple2(do, toString(dc))
1268- }
1269- else throw("Strict value is not equal to itself.")
1186+@Callable(df)
1187+func evaluatePutByPriceAssetREADONLY (cn) = {
1188+ let bE = aH()
1189+ let bR = fromBase58String(bE[q])
1190+ let cr = bE[r]
1191+ let bS = fromBase58String(cr)
1192+ let cs = bE[s]
1193+ let bT = fromBase58String(cs)
1194+ let bF = parseIntValue(bE[t])
1195+ let bG = parseIntValue(bE[u])
1196+ let bU = bE[p]
1197+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198+ let fC = bq(cr)
1199+ let fD = bq(cs)
1200+ let fE = D(fC, bF)
1201+ let fF = D(fD, bG)
1202+ let ca = if ((fw == 0))
1203+ then e
1204+ else bs(fF, fE)
1205+ let cy = D(cn, bG)
1206+ let cx = fraction(cy, d, ca)
1207+ let cl = G(cx, bF)
1208+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209+ let cI = dl._1
1210+ let fB = dl._3
1211+ let bW = dl._4
1212+ let bY = dl._5
1213+ let bV = dl._6
1214+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12701215 }
12711216
12721217
12731218
1274-@Callable(dC)
1275-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
1276-
1277-
1278-
1279-@Callable(dC)
1280-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1281-
1282-
1283-
1284-@Callable(dC)
1285-func calcPricesWrapperREADONLY (bH,bI,bM) = {
1286- let bV = bL(bH, bI, bM)
1287- $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
1219+@Callable(df)
1220+func evaluateGetREADONLY (fG,fH) = {
1221+ let cA = bN("", fG, fH, this)
1222+ let cg = cA._1
1223+ let ch = cA._2
1224+ let bW = cA._5
1225+ let bY = cA._6
1226+ let bV = cA._7
1227+ let cb = cA._8
1228+ let bU = parseIntValue(cA._9)
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
12881230 }
12891231
12901232
1291-
1292-@Callable(dC)
1293-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1294-
1295-
1296-
1297-@Callable(dC)
1298-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1299-
1300-
1301-
1302-@Callable(dC)
1303-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1304-
1305-
1306-
1307-@Callable(dC)
1308-func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
1309-
1310-
1311-
1312-@Callable(dC)
1313-func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1314- let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1315- $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
1316- }
1317-
1318-
1319-
1320-@Callable(dC)
1321-func statsREADONLY () = {
1322- let bN = aP()
1323- let ca = fromBase58String(bN[q])
1324- let gl = bN[r]
1325- let gm = bN[s]
1326- let cC = bN[v]
1327- let cD = bN[w]
1328- let bO = parseIntValue(bN[t])
1329- let bP = parseIntValue(bN[u])
1330- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1331- let go = by(gl)
1332- let gp = by(gm)
1333- let gq = if ((gn == 0))
1334- then [e, e, e]
1335- else bL(go, gp, gn)
1336- let ck = 0
1337- let gr = G(gq[1], b)
1338- let gs = G(gq[2], b)
1339- let gt = value(getInteger(aL, aw(toString(this))))
1340- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
1341- }
1342-
1343-
1344-
1345-@Callable(dC)
1346-func evaluatePutByAmountAssetREADONLY (cu) = {
1347- let bN = aP()
1348- let ca = fromBase58String(bN[q])
1349- let cA = bN[r]
1350- let cb = fromBase58String(cA)
1351- let cB = bN[s]
1352- let cc = fromBase58String(cB)
1353- let bO = parseIntValue(bN[t])
1354- let bP = parseIntValue(bN[u])
1355- let cd = bN[p]
1356- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1357- let go = by(cA)
1358- let gp = by(cB)
1359- let bJ = D(go, bO)
1360- let bK = D(gp, bP)
1361- let cj = if ((gn == 0))
1362- then e
1363- else bA(bK, bJ)
1364- let cG = D(cu, bO)
1365- let cH = fraction(cG, cj, d)
1366- let cw = G(cH, bP)
1367- let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1368- let cR = dI._1
1369- let gu = dI._3
1370- let cf = dI._4
1371- let ch = dI._5
1372- let ce = dI._6
1373- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
1374- }
1375-
1376-
1377-
1378-@Callable(dC)
1379-func evaluatePutByPriceAssetREADONLY (cw) = {
1380- let bN = aP()
1381- let ca = fromBase58String(bN[q])
1382- let cA = bN[r]
1383- let cb = fromBase58String(cA)
1384- let cB = bN[s]
1385- let cc = fromBase58String(cB)
1386- let bO = parseIntValue(bN[t])
1387- let bP = parseIntValue(bN[u])
1388- let cd = bN[p]
1389- let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1390- let gv = by(cA)
1391- let gw = by(cB)
1392- let gx = D(gv, bO)
1393- let gy = D(gw, bP)
1394- let cj = if ((gn == 0))
1395- then e
1396- else bA(gy, gx)
1397- let cH = D(cw, bP)
1398- let cG = fraction(cH, d, cj)
1399- let cu = G(cG, bO)
1400- let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1401- let cR = dI._1
1402- let gu = dI._3
1403- let cf = dI._4
1404- let ch = dI._5
1405- let ce = dI._6
1406- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
1407- }
1408-
1409-
1410-
1411-@Callable(dC)
1412-func evaluateGetREADONLY (gz,gA) = {
1413- let cJ = bW("", gz, gA, this)
1414- let cp = cJ._1
1415- let cq = cJ._2
1416- let cf = cJ._5
1417- let ch = cJ._6
1418- let ce = cJ._7
1419- let ck = cJ._8
1420- let cd = parseIntValue(cJ._9)
1421- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
1422- }
1423-
1424-
1425-@Verifier(gB)
1426-func gC () = {
1427- let gD = {
1428- let dN = eQ()
1429- if ($isInstanceOf(dN, "ByteVector"))
1233+@Verifier(fI)
1234+func fJ () = {
1235+ let fK = {
1236+ let dq = ev()
1237+ if ($isInstanceOf(dq, "ByteVector"))
14301238 then {
1431- let eU = dN
1432- eU
1239+ let ez = dq
1240+ ez
14331241 }
1434- else if ($isInstanceOf(dN, "Unit"))
1435- then gB.senderPublicKey
1242+ else if ($isInstanceOf(dq, "Unit"))
1243+ then fI.senderPublicKey
14361244 else throw("Match error")
14371245 }
1438- let dN = gB
1439- if ($isInstanceOf(dN, "Order"))
1246+ let dq = fI
1247+ if ($isInstanceOf(dq, "Order"))
14401248 then {
1441- let ds = dN
1442- let gE = aO()
1443- let aB = dr(ds)
1444- let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1445- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1446- if (if (if (aB)
1447- then aC
1249+ let cR = dq
1250+ let fL = aG()
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
14481256 else false)
1449- then aD
1257+ then at
14501258 else false)
14511259 then true
1452- else aA(aB, aC, aD)
1260+ else aq(ar, as, at)
14531261 }
1454- else if ($isInstanceOf(dN, "SetScriptTransaction"))
1262+ else if ($isInstanceOf(dq, "SetScriptTransaction"))
14551263 then {
1456- let eR = dN
1457- let gF = blake2b256(value(eR.script))
1458- let gG = fromBase64String(value(getString(aL, ay())))
1459- let gH = scriptHash(this)
1460- if (if ((gG == gF))
1461- then (gH != gF)
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
1267+ let fO = scriptHash(this)
1268+ if (if ((fN == fM))
1269+ then (fO != fM)
14621270 else false)
14631271 then true
1464- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1272+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
14651273 }
1466- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1274+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
14671275 }
14681276

github/deemru/w8io/026f985 
312.27 ms