tx · C24uVMYefwR9q7c1M1kKeH13Pk6eb9KHHMyEdkNAfBtC

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.02.19 15:00 [1930487] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "C24uVMYefwR9q7c1M1kKeH13Pk6eb9KHHMyEdkNAfBtC", "fee": 1400000, "feeAssetId": null, "timestamp": 1645272045852, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "4hU4296Z2xGgtknhVQfHErbznAU5mqUytgSC2uh6dQJYC5bxssCzr2kQvv94YyfUW5n9LuLyRYXh77dMQs6kHCak", "txxxicVM8cePAvWnKWqB2wroWScJ46YSbeEymmZbKUQjKQQnkMjeU5F3qM8F4TiHcGWeyUK6uoFHRb2mRj8SVEL", "25BcV9wqZwKAynqpAiaMqNyoygFdYzcamRimcnpag359cYdYQTkXUdniUK8GLDsNBoeyeVi3GmTTGLSnZyiAT4LL" ], "script": "base64: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ABBkQXBwU3Rha2VkVG9rZW5zBQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAQAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAABrAAAAAwUAAAAGYW1vdW50BQAAABBkQXBwU3Rha2VkVG9rZW5zBQAAAA9hc3NldElkUXVhbnRpdHkFAAAAFHRyYW5zZmVyVG9Vc2VyQW1vdW50AQAAAA91c2VyV2l0aGRyYXdLZXkAAAADAAAABHBvb2wAAAALdXNlckFkZHJlc3MAAAANdHJhbnNhY3Rpb25JZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfBQAAAA10cmFuc2FjdGlvbklkAgAAAAlfd2l0aGRyYXcBAAAAGXVzZXJXaXRoZHJhd0J1cm5Ub2tlbnNLZXkAAAADAAAABHBvb2wAAAALdXNlckFkZHJlc3MAAAANdHJhbnNhY3Rpb25JZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfBQAAAA10cmFuc2FjdGlvbklkAgAAABRfd2l0aGRyYXdfYnVybl90b2tlbgEAAAAVZ2V0VXNlclRvdGFsTG9ja2VkS2V5AAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfBQAAAAt1c2VyQWRkcmVzcwUAAAAXc2VydmljZVRva2VuVG90YWxMb2NrZWQBAAAAEmdldFVzZXJUb3RhbExvY2tlZAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAAAAAAAAAAAAAAAAAkAAAABaQEAAAAIYWRkUG9vbHMAAAAEAAAABXBvb2xzAAAAD2xpcXVpZGl0eVRva2VucwAAAA1zZXJ2aWNlVG9rZW5zAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlAAAAAAAAAAAABQAAAAthY2N1bXVsYXRlZAoBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAJcG9vbEluZGV4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABXBvb2xzBQAAAARwb29sBAAAAA5saXF1aWRpdHlUb2tlbgkAAZEAAAACBQAAAA9saXF1aWRpdHlUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAANc2VydmljZVRva2VucwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAWbGlxdWlkaXR5VG9rZW5EZWNpbWFscwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAFl9zZXJ2aWNlX3Rva2VuX2RlY2ltYWwFAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAHX2FjdGl2ZQYFAAAAC2FjY3VtdWxhdGVkBAAAAA9wb29sQmFsYW5jZUtleXMKAAAAAAIkbAUAAAAFcG9vbHMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAANuaWwKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAQAAAAWcG9vbExpcXVpZGl0eVRva2VuS2V5cwoAAAAAAiRsBQAAAAVwb29scwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmMV8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMV8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAABSRmMV8yAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQEAAAAFHBvb2xTZXJ2aWNlVG9rZW5LZXlzCgAAAAACJGwFAAAABXBvb2xzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGYyXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAcZ2VuZXJhdGVQb29sU2VydmljZVRva2VuS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMl8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAABSRmMl8yAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgkBAAAABSRmMl8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQEAAAAHXBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzCgAAAAACJGwFAAAABXBvb2xzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGYzXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAlZ2VuZXJhdGVQb29sTGlxdWlkaXR5VG9rZW5EZWNpbWFsS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmM18yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAABSRmM18yAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgkBAAAABSRmM18xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQEAAAADnBvb2xBY3RpdmVLZXlzCgAAAAACJGwFAAAABXBvb2xzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGY0XzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAWZ2VuZXJhdGVQb29sQWN0aXZlS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmNF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAABSRmNF8yAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgkBAAAABSRmNF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAAROAAAAAgUAAAAPcG9vbEJhbGFuY2VLZXlzBQAAABZwb29sTGlxdWlkaXR5VG9rZW5LZXlzBQAAABRwb29sU2VydmljZVRva2VuS2V5cwUAAAAdcG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMFAAAADnBvb2xBY3RpdmVLZXlzCQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgAAAAFpAQAAABhkZWxldGVEZXBvc2l0TG9ja1JlY29yZHMAAAADAAAAB3JlY29yZHMAAAAQbG9ja2VkQW1vdW50S2V5cwAAABJsb2NrZWRBbW91bnRWYWx1ZXMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABRnZW5lcmF0ZURlbGV0aW5nS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAGcmVjb3JkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAGcmVjb3JkAgAAAAdfbG9ja2VkBQAAAAthY2N1bXVsYXRlZAoBAAAAEmdlbmVyYXRlTG9ja2VkS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAJbG9ja2VkS2V5BAAAAA5sb2NrZWRLZXlJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAABBsb2NrZWRBbW91bnRLZXlzBQAAAAlsb2NrZWRLZXkEAAAADGxvY2tlZEFtb3VudAkAAZEAAAACBQAAABJsb2NrZWRBbW91bnRWYWx1ZXMFAAAADmxvY2tlZEtleUluZGV4BAAAAA1jdXJyZW50TG9ja2VkCQEAAAASZ2V0VXNlclRvdGFsTG9ja2VkAAAAAQkAASwAAAACBQAAAAlsb2NrZWRLZXkFAAAAF3NlcnZpY2VUb2tlblRvdGFsTG9ja2VkBAAAAA5uZXdMb2NrZWRWYWx1ZQkAAGUAAAACBQAAAA1jdXJyZW50TG9ja2VkBQAAAAxsb2NrZWRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAJbG9ja2VkS2V5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YQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyA1MAkBAAAABSRmMV8yAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgkBAAAABSRmMV8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUA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b29sQWN0aXZlAAAAAQUAAAAEcG9vbAQAAAAVbGlxdWlkaXR5VG9rZW5EZWNpbWFsBAAAAAckbWF0Y2gwCQAD7AAAAAEJAAJZAAAAAQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFYXNzZXQFAAAAByRtYXRjaDAIBQAAAAVhc3NldAAAAAhkZWNpbWFscwkAAAIAAAABAgAAABBDYW4ndCBmaW5kIGFzc2V0AwkBAAAAAiE9AAAAAgUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzBQAAAA1hc3NldElkU3RyaW5nCQAAAgAAAAECAAAAL1lvdSBhdHRhY2hlZCB3cm9uZyBsaXF1aWRpdHkgdG9rZW4gZnJvbSBTd29wLmZpBAAAABJ1c2VyVG90YWxMb2NrZWRLZXkJAQAAABVnZXRVc2VyVG90YWxMb2NrZWRLZXkAAAACBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwQAAAAPdXNlclRvdGFsTG9ja2VkCQEAAAASZ2V0VXNlclRvdGFsTG9ja2VkAAAAAQUAAAASdXNlclRvdGFsTG9ja2VkS2V5BAAAABR1c2VyQW1vdW50V2l0aG91dEZlZQkAAGUAAAACCQAAZQAAAAIFAAAABmFtb3VudAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAApkZXBvc2l0RmVlBQAAAAZIQUxGVVAJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAANY29udHJvbGxlckZlZQUAAAAGSEFMRlVQBAAAABR0cmFuc2ZlclRvVXNlckFtb3VudAkBAAAADnRyYW5zZmVyVG9Vc2VyAAAABAUAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAAJZAAAAAQUAAAAQZEFwcEFzc2V0QWRkcmVzcwUAAAAEcG9vbAUAAAALZGVwb3NpdFR5cGUEAAAAA2ZlZQkAAGUAAAACBQAAAAZhbW91bnQFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlBAAAABJuZXdVc2VyVG90YWxMb2NrZWQJAABkAAAAAgUAAAAPdXNlclRvdGFsTG9ja2VkBQAAABR1c2VyQW1vdW50V2l0aG91dEZlZQQAAAANbG9ja1Rva2Vuc0tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQCAAAAB19sb2NrZWQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAAFHRyYW5zZmVyVG9Vc2VyQW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFHRyYW5zZmVyVG9Vc2VyQW1vdW50CQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJtYW5jZUFkZHJlc3MFAAAAA2ZlZQkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWxvY2tUb2tlbnNLZXkFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ1c2VyVG90YWxMb2NrZWRLZXkFAAAAEm5ld1VzZXJUb3RhbExvY2tlZAUAAAADbmlsCQAAAgAAAAECAAAAE1Bvb2wgaXMgbm90IGFjdGl2ZSEAAAABaQEAAAAMaW5pdFdpdGhkcmF3AAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAAB1Ud28gYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAQAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAB2Fzc2V0SWQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAFXdhdmVzQ29tbWlzc2lvbkFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAAVd2F2ZXNDb21taXNzaW9uQW1vdW50BQAAABp3YXZlc0NvbW1pc3Npb25Gb3JXaXRoZHJhdwkAAAIAAAABAgAAABpZb3UgYWRkZWQgd3JvbmcgY29tbWlzc2lvbgQAAAANYXNzZXRJZFN0cmluZwQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAJAAJYAAAAAQUAAAACaWQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IEAAAAEWFzc2V0SWRCeXRlVmVjdG9yBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAUAAAACaWQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IDCQAAZwAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAKVdpdGhyYXcgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAABmFtb3VudAMJAQAAAAxpc1Bvb2xBY3RpdmUAAAABBQAAAARwb29sBAAAAAt1c2VyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAEnVzZXJUb3RhbExvY2tlZEtleQkBAAAAFWdldFVzZXJUb3RhbExvY2tlZEtleQAAAAIFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzBAAAAA91c2VyVG90YWxMb2NrZWQJAQAAABJnZXRVc2VyVG90YWxMb2NrZWQAAAABBQAAABJ1c2VyVG90YWxMb2NrZWRLZXkEAAAAKXVzZXJUb3RhbEJhbGFuY2VXaXRob3V0Q3VycmVudFRyYW5zYWN0aW9uCQAD8AAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAARYXNzZXRJZEJ5dGVWZWN0b3IEAAAAEHVzZXJUb3RhbEJhbGFuY2UJAABkAAAAAgUAAAApdXNlclRvdGFsQmFsYW5jZVdpdGhvdXRDdXJyZW50VHJhbnNhY3Rpb24FAAAABmFtb3VudAQAAAASbWF4VHJhbnNhZmVyVG9Vc2VyCQEAAAAOdHJhbnNmZXJUb1VzZXIAAAAEBQAAABB1c2VyVG90YWxCYWxhbmNlCQACWQAAAAEFAAAADWFzc2V0SWRTdHJpbmcFAAAABHBvb2wFAAAADHdpdGhkcmF3VHlwZQQAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAQAAAA50cmFuc2ZlclRvVXNlcgAAAAQFAAAABmFtb3VudAkAAlkAAAABBQAAAA1hc3NldElkU3RyaW5nBQAAAARwb29sBQAAAAx3aXRoZHJhd1R5cGUEAAAAEG5vbkxvY2tlZEJhbGFuY2UJAABlAAAAAgUAAAASbWF4VHJhbnNhZmVyVG9Vc2VyBQAAAA91c2VyVG90YWxMb2NrZWQDCQEAAAABIQAAAAEJAABnAAAAAgUAAAAQbm9uTG9ja2VkQmFsYW5jZQUAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAAACAAAAAQIAAABJWW91IGhhdmUgYSBsb2NrZWQgdG9rZW5zLiBXYWl0IGEgdGltZSBmb3IgdW5sb2NrIG9yIHRyeSB0byB3aXRoZHJyYXcgbGVzcwQAAAANdXNlclJlY29yZEtleQkBAAAAD3VzZXJXaXRoZHJhd0tleQAAAAMFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAGHVzZXJXaXRoZHJhd0J1cm5Ub2tlbktleQkBAAAAGXVzZXJXaXRoZHJhd0J1cm5Ub2tlbnNLZXkAAAADBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA11c2VyUmVjb3JkS2V5BQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAYdXNlcldpdGhkcmF3QnVyblRva2VuS2V5BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAMYWRtaW5QdWJLZXk0AAAAAAAAB6EgBQAAAAR1bml0BQAAAANuaWwJAAACAAAAAQIAAAATUG9vbCBpcyBub3QgYWN0aXZlIQAAAAFpAQAAAAh3aXRoZHJhdwAAAAMAAAAEcG9vbAAAAAt1c2VyQWRkcmVzcwAAAA10cmFuc2FjdGlvbklkAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA11c2VyUmVjb3JkS2V5CQEAAAAPdXNlcldpdGhkcmF3S2V5AAAAAwUAAAAEcG9vbAUAAAALdXNlckFkZHJlc3MFAAAADXRyYW5zYWN0aW9uSWQEAAAAGHVzZXJXaXRoZHJhd0J1cm5Ub2tlbktleQkBAAAAGXVzZXJXaXRoZHJhd0J1cm5Ub2tlbnNLZXkAAAADBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwUAAAANdHJhbnNhY3Rpb25JZAQAAAAOc2VuZFVzZXJBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXVzZXJSZWNvcmRLZXkEAAAAD2J1cm5Ub2tlbkFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAYdXNlcldpdGhkcmF3QnVyblRva2VuS2V5BAAAABBkQXBwQXNzZXRBZGRyZXNzCQEAAAATZ2V0REFwcEFzc2V0QWRkcmVzcwAAAAEFAAAABHBvb2wEAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwkBAAAAGGdldExpcXVpZHV0eUFzc2V0QWRkcmVzcwAAAAEFAAAABHBvb2wJAARMAAAAAgkBAAAABEJ1cm4AAAACCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAAD2J1cm5Ub2tlbkFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEBAAAACQE8G+KB2EIX4gUAAAAOc2VuZFVzZXJBbW91bnQJAAJZAAAAAQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAADXVzZXJSZWNvcmRLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAYdXNlcldpdGhkcmF3QnVyblRva2VuS2V5BQAAAANuaWwJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAAAAAWkBAAAADnBvb2xBY3RpdmF0aW5nAAAAAgAAAAVwb29scwAAAAhzdGF0dXNlcwMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQoBAAAAFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAGc3RhdHVzCQABkQAAAAIFAAAACHN0YXR1c2VzBQAAAAlwb29sSW5kZXgJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAHX2FjdGl2ZQUAAAAGc3RhdHVzBQAAAAthY2N1bXVsYXRlZAQAAAAOcG9vbEFjdGl2ZUtleXMKAAAAAAIkbAUAAAAFcG9vbHMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAANuaWwKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAAAAAAAB8AAAAAAAAAACAAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACMAAAAAAAAAACQAAAAAAAAAACUAAAAAAAAAACYAAAAAAAAAACcAAAAAAAAAACgAAAAAAAAAACkAAAAAAAAAACoAAAAAAAAAACsAAAAAAAAAACwAAAAAAAAAAC0AAAAAAAAAAC4AAAAAAAAAAC8AAAAAAAAAADAAAAAAAAAAADEAAAAAAAAAADIAAAAAAAAAADMAAAAAAAAAADQAAAAAAAAAADUAAAAAAAAAADYAAAAAAAAAADcAAAAAAAAAADgAAAAAAAAAADkAAAAAAAAAADoAAAAAAAAAADsAAAAAAAAAADwAAAAAAAAAAD0AAAAAAAAAAD4AAAAAAAAAAD8AAAAAAAAAAEAAAAAAAAAAAEEAAAAAAAAAAEIAAAAAAAAAAEMAAAAAAAAAAEQAAAAAAAAAAEUAAAAAAAAAAEYAAAAAAAAAAEcAAAAAAAAAAEgAAAAAAAAAAEkAAAAAAAAAAEoAAAAAAAAAAEsAAAAAAAAAAEwAAAAAAAAAAE0AAAAAAAAAAE4AAAAAAAAAAE8AAAAAAAAAAFAAAAAAAAAAAFEAAAAAAAAAAFIAAAAAAAAAAFMAAAAAAAAAAFQAAAAAAAAAAFUAAAAAAAAAAFYAAAAAAAAAAFcAAAAAAAAAAFgAAAAAAAAAAFkAAAAAAAAAAFoAAAAAAAAAAFsAAAAAAAAAAFwAAAAAAAAAAF0AAAAAAAAAAF4AAAAAAAAAAF8AAAAAAAAAAGAAAAAAAAAAAGEAAAAAAAAAAGIAAAAAAAAAAGMAAAAAAAAAAGQFAAAADnBvb2xBY3RpdmVLZXlzCQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgAAAAFpAQAAAA9kZWxldGVVbnNlZERhdGEAAAAAAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAezNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIXzJpVVZLQ3k0elV2Z0JnZzdBY2N5cUtmQkNZaHBvVkVWN0VDbTlOWExaQlA0X2xvY2tlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAHszUEt5Mm1acW52VDJFdHB3RGltOU1nczZZdkNSZTRzODVuWF8zUDV1WnVHalJYN2tkckNidm0zaXNXTnZTaUhRenB2V0dQSF80blhHVE05WmIzb0gyZm1ab3ozUzRtb1c5THIyWVhhd0Q3OEJTRXZDSENhTl9sb2NrZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAB7M1BLeTJtWnFudlQyRXRwd0RpbTlNZ3M2WXZDUmU0czg1blhfM1A1dVp1R2pSWDdrZHJDYnZtM2lzV052U2lIUXpwdldHUEhfQXQzV0dLQ2lDRG45S2I3OFBLOXRKOUVTdGJjd0dTRkxDUFhCdkZ2b0dib29fbG9ja2VkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAezNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX0NiMW1UTEpBWm1FV2lyQTVGRThVVzdlV2tyTVdHZ2pUR1JkSEEyZjlkMjdVX2xvY2tlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAHszUEt5Mm1acW52VDJFdHB3RGltOU1nczZZdkNSZTRzODVuWF8zUDV1WnVHalJYN2tkckNidm0zaXNXTnZTaUhRenB2V0dQSF9GZURzanRaTHA3NHU2RzZDcHRvaXBkUnRReHp3ak0xV1J1ZllKVXczNHRjRl9sb2NrZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAB7M1BLeTJtWnFudlQyRXRwd0RpbTlNZ3M2WXZDUmU0czg1blhfM1A1dVp1R2pSWDdrZHJDYnZtM2lzV052U2lIUXpwdldHUEhfSEFyZnVRQlpNeW54emRlQmc0d3FzTTcyeXNwUUJoSHE3RGlEcUV1YWtKM2pfbG9ja2VkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAYDNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX1NXT1BfbGFzdF9jbGFpbWVkX2Ftb3VudAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAFUzUEt5Mm1acW52VDJFdHB3RGltOU1nczZZdkNSZTRzODVuWF8zUDV1WnVHalJYN2tkckNidm0zaXNXTnZTaUhRenB2V0dQSF9hc3NldF9iYWxhbmNlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAVjNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX2F2YWlsYWJsZV9TV09QCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAVjNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX2N1cnJlbnRfcmV3YXJkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAVTNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX2xhc3RfaW50ZXJlc3QJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABWM1BLeTJtWnFudlQyRXRwd0RpbTlNZ3M2WXZDUmU0czg1blhfM1BEakpQZTFQeHF3akpLYTd1U2tYMzY3Q0ZCdFZBVnlwV1dfY3VycmVudF9yZXdhcmQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABVM1BLeTJtWnFudlQyRXRwd0RpbTlNZ3M2WXZDUmU0czg1blhfM1BEakpQZTFQeHF3akpLYTd1U2tYMzY3Q0ZCdFZBVnlwV1dfYXNzZXRfYmFsYW5jZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAFYzUEt5Mm1acW52VDJFdHB3RGltOU1nczZZdkNSZTRzODVuWF8zUERqSlBlMVB4cXdqSkthN3VTa1gzNjdDRkJ0VkFWeXBXV19jdXJyZW50X3Jld2FyZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAADEzUEt5Mm1acW52VDJFdHB3RGltOU1nczZZdkNSZTRzODVuWF9sYXN0X2ludGVyZXN0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAODNQS3kybVpxbnZUMkV0cHdEaW05TWdzNll2Q1JlNHM4NW5YX2xhc3RfaW50ZXJlc3RfaGVpZ2h0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAhEVoaWU1eFlwZU44b3AxQ2N0YzZhR1VycXg4anEzanRmMURTalhEYmZtN2FUXzNQNXVadUdqUlg3a2RyQ2J2bTNpc1dOdlNpSFF6cHZXR1BIX0F2Z2pmN0N3UGhuYkFaWEc4ZURtQ3NWYTgzMzlWZlJBTFJKZ3NTYkp0c2tjX2xvY2tlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAABiM1BOVkZXb3B3Q0Q5Q2dHWGtwWVdFWTk0b1E1WENBRVhCbVFfM1BEakpQZTFQeHF3akpLYTd1U2tYMzY3Q0ZCdFZBVnlwV1dfc2VydmljZV90b2tlbl90b3RhbF9sb2NrZWQAAAAAAAAAAAAJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABeRWhpZTV4WXBlTjhvcDFDY3RjNmFHVXJxeDhqcTNqdGYxRFNqWERiZm03YVRfM1A1dVp1R2pSWDdrZHJDYnZtM2lzV052U2lIUXpwdldHUEhfYXNzZXRfYmFsYW5jZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAIRFaGllNXhZcGVOOG9wMUNjdGM2YUdVcnF4OGpxM2p0ZjFEU2pYRGJmbTdhVF8zUERqSlBlMVB4cXdqSkthN3VTa1gzNjdDRkJ0VkFWeXBXV19HOEF4ZGJTUHZLd3N4dndFRlZGeEUxd0FXMkNyR3NBUXd5NWRpeWlTSlFjMV9sb2NrZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABeRWhpZTV4WXBlTjhvcDFDY3RjNmFHVXJxeDhqcTNqdGYxRFNqWERiZm03YVRfM1BEakpQZTFQeHF3akpLYTd1U2tYMzY3Q0ZCdFZBVnlwV1dfYXNzZXRfYmFsYW5jZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAABrRWhpZTV4WXBlTjhvcDFDY3RjNmFHVXJxeDhqcTNqdGYxRFNqWERiZm03YVRfM1BEakpQZTFQeHF3akpLYTd1U2tYMzY3Q0ZCdFZBVnlwV1dfc2VydmljZV90b2tlbl90b3RhbF9sb2NrZWQAAAAAAAAAAAAFAAAAA25pbAkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAA2ludgUAAAAHJG1hdGNoMAQAAAAPbG9ja1NoYXJlVG9rZW5zAwkAAAAAAAACCAUAAAADaW52AAAABGRBcHAFAAAADmZhcm1pbmdBZGRyZXNzAwMJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAPbG9ja1NoYXJlVG9rZW5zBgkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAAVjbGFpbQYJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAATd2l0aGRyYXdTaGFyZVRva2VucwcEAAAABHN3b3ADCQAAAAAAAAIIBQAAAANpbnYAAAAEZEFwcAUAAAAXc3dvcEZpR292ZXJtYW5jZUFkZHJlc3MDAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAAhsb2NrU1dPUAYJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAMd2l0aGRyYXdTV09QBgkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAABFjbGFpbUFuZFN0YWtlU1dPUAcEAAAAC2RBcHBBZGRyZXNzBAAAAAckbWF0Y2gxCAUAAAADaW52AAAABGRBcHADCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAB0FkZHJlc3MEAAAABGRBcHAFAAAAByRtYXRjaDEJAAQlAAAAAQUAAAAEZEFwcAkAAAIAAAABAgAAACJUcmFuc2FjdGlvbiBtdXN0IGhhdmUgb25seSBhZGRyZXNzBAAAAA1wb29sRnVuY3Rpb25zAwkBAAAADGlzUG9vbEFjdGl2ZQAAAAEFAAAAC2RBcHBBZGRyZXNzCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAPc3dvcEZpRnVuY3Rpb25zCAUAAAADaW52AAAACGZ1bmN0aW9uBwQAAAANc2lnbmVkQnlBZG1pbgMDAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MQYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTIGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXk0BgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDAwMFAAAAD2xvY2tTaGFyZVRva2VucwYFAAAADXBvb2xGdW5jdGlvbnMGBQAAAARzd29wBQAAAA1zaWduZWRCeUFkbWluBwQAAAAKYWRtMVNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAACmFkbTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAAAphZG0zU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIFAAAADGFkbWluUHViS2V5MwAAAAAAAAAAAQAAAAAAAAAAAAkAAGcAAAACCQAAZAAAAAIJAABkAAAAAgUAAAAKYWRtMVNpZ25lZAUAAAAKYWRtMlNpZ25lZAUAAAAKYWRtM1NpZ25lZAAAAAAAAAAAAsLdBgc=", "height": 1930487, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9KVeFANAXYa27dKUgiifNrrxGQTusU9TwQuXeh6C3uUU Next: 7y1p2vnMQqd39nr8JYm3FWwCC8zoR2T5KbnBeTRXT6K4 Diff:
OldNewDifferences
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
16-let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
16+let adminPubKey4 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1717
18-let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
18+let govermanceAddress = Address(base58'3PKoJ7GHwmidFPX6NiqKZdq8Zj2auPMNPnE')
1919
2020 let swopFiGovermanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
2121
22-let farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
22+let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw')
2323
2424 let keySWOPid = "SWOP_id"
2525
3333
3434 let serviceTokenTotalLocked = "_service_token_total_locked"
3535
36-let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
37-
38-let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
36+let swopFiFunctions = ["replenishWithTwoTokens", "exchange", "replenishWithOneToken"]
3937
4038 func isPoolActive (pool) = {
4139 let kActive = (pool + "_active")
341339 let assetId = i.payments[0].assetId
342340 let wavesCommissionAmount = i.payments[1].amount
343341 if ((wavesCommissionAmount != wavesCommissionForWithdraw))
344- then throw("You add wrong commission")
342+ then throw("You added wrong commission")
345343 else {
346344 let assetIdString = match assetId {
347345 case id: ByteVector =>
390388 let burnTokenAmount = getIntegerValue(this, userWithdrawBurnTokenKey)
391389 let dAppAssetAddress = getDAppAssetAddress(pool)
392390 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
393-[Burn(fromBase58String(dAppAssetAddress), burnTokenAmount), ScriptTransfer(i.caller, sendUserAmount, fromBase58String(liquidutyAssetAddress)), DeleteEntry(userRecordKey), DeleteEntry(userWithdrawBurnTokenKey)]
391+[Burn(fromBase58String(dAppAssetAddress), burnTokenAmount), ScriptTransfer(Address(base58'userAddress'), sendUserAmount, fromBase58String(liquidutyAssetAddress)), DeleteEntry(userRecordKey), DeleteEntry(userWithdrawBurnTokenKey)]
394392 }
395393 else throw("Only admin can call this function")
396394
427425
428426 @Callable(i)
429427 func deleteUnsedData () = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
430- then [IntegerEntry("3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_service_token_total_locked", 0), DeleteEntry("3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_asset_balance"), DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL_asset_balance"), IntegerEntry("3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_service_token_total_locked", 0)]
428+ then [DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_2iUVKCy4zUvgBgg7AccyqKfBCYhpoVEV7ECm9NXLZBP4_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_4nXGTM9Zb3oH2fmZoz3S4moW9Lr2YXawD78BSEvCHCaN_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_At3WGKCiCDn9Kb78PK9tJ9EStbcwGSFLCPXBvFvoGboo_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_Cb1mTLJAZmEWirA5FE8UW7eWkrMWGgjTGRdHA2f9d27U_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_FeDsjtZLp74u6G6CptoipdRtQxzwjM1WRufYJUw34tcF_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_HArfuQBZMynxzdeBg4wqsM72yspQBhHq7DiDqEuakJ3j_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_SWOP_last_claimed_amount"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_asset_balance"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_available_SWOP"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_last_interest"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_asset_balance"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_last_interest"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_last_interest_height"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_Avgjf7CwPhnbAZXG8eDmCsVa8339VfRALRJgsSbJtskc_locked"), IntegerEntry("3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_service_token_total_locked", 0), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_asset_balance"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_G8AxdbSPvKwsxvwEFVFxE1wAW2CrGsAQwy5diyiSJQc1_locked"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_asset_balance"), IntegerEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_service_token_total_locked", 0)]
431429 else throw("Only admin can call this function")
432430
433431
441439 then true
442440 else (inv.function == "withdrawShareTokens")
443441 else false
444- let lockSwop = if ((inv.dApp == swopFiGovermanceAddress))
445- then if ((inv.function == "lockSWOP"))
442+ let swop = if ((inv.dApp == swopFiGovermanceAddress))
443+ then if (if ((inv.function == "lockSWOP"))
446444 then true
447- else (inv.function == "withdrawSWOP")
445+ else (inv.function == "withdrawSWOP"))
446+ then true
447+ else (inv.function == "claimAndStakeSWOP")
448448 else false
449449 let dAppAddress = match inv.dApp {
450450 case dApp: Address =>
452452 case _ =>
453453 throw("Transaction must have only address")
454454 }
455- let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
455+ let poolFunctions = if (isPoolActive(dAppAddress))
456456 then containsElement(swopFiFunctions, inv.function)
457457 else false
458458 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
466466 then true
467467 else poolFunctions)
468468 then true
469- else lockSwop)
469+ else swop)
470470 then signedByAdmin
471471 else false
472472 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositFee = 1000
55
66 let controllerFee = 10000
77
88 let platformFee = 10000
99
1010 let adminPubKey1 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let adminPubKey2 = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let adminPubKey3 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
16-let adminPubKey4 = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
16+let adminPubKey4 = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1717
18-let govermanceAddress = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
18+let govermanceAddress = Address(base58'3PKoJ7GHwmidFPX6NiqKZdq8Zj2auPMNPnE')
1919
2020 let swopFiGovermanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
2121
22-let farmingAddress = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
22+let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw')
2323
2424 let keySWOPid = "SWOP_id"
2525
2626 let SWOP = fromBase58String(getStringValue(farmingAddress, keySWOPid))
2727
2828 let wavesCommissionForWithdraw = 1400000
2929
3030 let depositType = "deposit"
3131
3232 let withdrawType = "withdraw"
3333
3434 let serviceTokenTotalLocked = "_service_token_total_locked"
3535
36-let swopFiPools = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
37-
38-let swopFiFunctions = ["replenishWithTwoTokens", "exchange"]
36+let swopFiFunctions = ["replenishWithTwoTokens", "exchange", "replenishWithOneToken"]
3937
4038 func isPoolActive (pool) = {
4139 let kActive = (pool + "_active")
4240 let isActive = match getBoolean(this, kActive) {
4341 case boolean: Boolean =>
4442 boolean
4543 case _ =>
4644 throw("Pool is not active!")
4745 }
4846 isActive
4947 }
5048
5149
5250 func getDAppAssetAddress (pool) = match getString((pool + "_service_token")) {
5351 case string: String =>
5452 string
5553 case nothing =>
5654 throw("You try to deposit on unsupported pool")
5755 }
5856
5957
6058 func getLiquidutyAssetAddress (pool) = match getString((pool + "_liquidity_token")) {
6159 case string: String =>
6260 string
6361 case nothing =>
6462 throw("You try to withdraw from unsupported pool")
6563 }
6664
6765
6866 func getStakedAmount (poolAddress) = if ((poolAddress == toBase58String(SWOP)))
6967 then match getInteger(swopFiGovermanceAddress, (toString(this) + "_SWOP_amount")) {
7068 case staked: Int =>
7169 staked
7270 case nothing: Unit =>
7371 0
7472 case _ =>
7573 throw("Match error")
7674 }
7775 else match getInteger(farmingAddress, (((poolAddress + "_") + toString(this)) + "_share_tokens_locked")) {
7876 case staked: Int =>
7977 staked
8078 case nothing: Unit =>
8179 0
8280 case _ =>
8381 throw("Match error")
8482 }
8583
8684
8785 func transferToUser (amount,assetId,poolAddress,type) = {
8886 let dAppStakedTokens = getStakedAmount(poolAddress)
8987 let assetIdQuantity = match assetInfo(assetId) {
9088 case asset: Asset =>
9189 asset.quantity
9290 case _ =>
9391 throw("Can't find asset")
9492 }
9593 if ((dAppStakedTokens == 0))
9694 then amount
9795 else if ((type == depositType))
9896 then {
9997 let transferToUserAmount = fraction(amount, assetIdQuantity, dAppStakedTokens)
10098 transferToUserAmount
10199 }
102100 else {
103101 let transferToUserAmount = fraction(amount, dAppStakedTokens, assetIdQuantity)
104102 transferToUserAmount
105103 }
106104 }
107105
108106
109107 func userWithdrawKey (pool,userAddress,transactionId) = (((((pool + "_") + userAddress) + "_") + transactionId) + "_withdraw")
110108
111109
112110 func userWithdrawBurnTokensKey (pool,userAddress,transactionId) = (((((pool + "_") + userAddress) + "_") + transactionId) + "_withdraw_burn_token")
113111
114112
115113 func getUserTotalLockedKey (pool,userAddress) = (((pool + "_") + userAddress) + serviceTokenTotalLocked)
116114
117115
118116 func getUserTotalLocked (key) = match getInteger(key) {
119117 case int: Int =>
120118 int
121119 case nothing =>
122120 0
123121 }
124122
125123
126124 @Callable(i)
127125 func addPools (pools,liquidityTokens,serviceTokens,liquidityTokenDecimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
128126 then {
129127 func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
130128
131129 func generatePoolLiquidityTokenKeys (accumulated,pool) = {
132130 let poolIndex = value(indexOf(pools, pool))
133131 let liquidityToken = liquidityTokens[poolIndex]
134132 StringEntry((pool + "_liquidity_token"), liquidityToken) :: accumulated
135133 }
136134
137135 func generatePoolServiceTokenKeys (accumulated,pool) = {
138136 let poolIndex = value(indexOf(pools, pool))
139137 let liquidityToken = serviceTokens[poolIndex]
140138 StringEntry((pool + "_service_token"), liquidityToken) :: accumulated
141139 }
142140
143141 func generatePoolLiquidityTokenDecimalKeys (accumulated,pool) = {
144142 let poolIndex = value(indexOf(pools, pool))
145143 let liquidityToken = liquidityTokenDecimals[poolIndex]
146144 IntegerEntry((pool + "_service_token_decimal"), liquidityToken) :: accumulated
147145 }
148146
149147 func generatePoolActiveKeys (accumulated,pool) = BooleanEntry((pool + "_active"), true) :: accumulated
150148
151149 let poolBalanceKeys = {
152150 let $l = pools
153151 let $s = size($l)
154152 let $acc0 = nil
155153 func $f0_1 ($a,$i) = if (($i >= $s))
156154 then $a
157155 else generatePoolKeys($a, $l[$i])
158156
159157 func $f0_2 ($a,$i) = if (($i >= $s))
160158 then $a
161159 else throw("List size exceeds 20")
162160
163161 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
164162 }
165163 let poolLiquidityTokenKeys = {
166164 let $l = pools
167165 let $s = size($l)
168166 let $acc0 = nil
169167 func $f1_1 ($a,$i) = if (($i >= $s))
170168 then $a
171169 else generatePoolLiquidityTokenKeys($a, $l[$i])
172170
173171 func $f1_2 ($a,$i) = if (($i >= $s))
174172 then $a
175173 else throw("List size exceeds 20")
176174
177175 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
178176 }
179177 let poolServiceTokenKeys = {
180178 let $l = pools
181179 let $s = size($l)
182180 let $acc0 = nil
183181 func $f2_1 ($a,$i) = if (($i >= $s))
184182 then $a
185183 else generatePoolServiceTokenKeys($a, $l[$i])
186184
187185 func $f2_2 ($a,$i) = if (($i >= $s))
188186 then $a
189187 else throw("List size exceeds 20")
190188
191189 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
192190 }
193191 let poolLiquidityTokenDecimalKeys = {
194192 let $l = pools
195193 let $s = size($l)
196194 let $acc0 = nil
197195 func $f3_1 ($a,$i) = if (($i >= $s))
198196 then $a
199197 else generatePoolLiquidityTokenDecimalKeys($a, $l[$i])
200198
201199 func $f3_2 ($a,$i) = if (($i >= $s))
202200 then $a
203201 else throw("List size exceeds 20")
204202
205203 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
206204 }
207205 let poolActiveKeys = {
208206 let $l = pools
209207 let $s = size($l)
210208 let $acc0 = nil
211209 func $f4_1 ($a,$i) = if (($i >= $s))
212210 then $a
213211 else generatePoolActiveKeys($a, $l[$i])
214212
215213 func $f4_2 ($a,$i) = if (($i >= $s))
216214 then $a
217215 else throw("List size exceeds 20")
218216
219217 $f4_2($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
220218 }
221219 ((((poolBalanceKeys ++ poolLiquidityTokenKeys) ++ poolServiceTokenKeys) ++ poolLiquidityTokenDecimalKeys) ++ poolActiveKeys)
222220 }
223221 else throw("Only admin can call this function")
224222
225223
226224
227225 @Callable(i)
228226 func deleteDepositLockRecords (records,lockedAmountKeys,lockedAmountValues) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
229227 then {
230228 func generateDeletingKeys (accumulated,record) = DeleteEntry((record + "_locked")) :: accumulated
231229
232230 func generateLockedKeys (accumulated,lockedKey) = {
233231 let lockedKeyIndex = value(indexOf(lockedAmountKeys, lockedKey))
234232 let lockedAmount = lockedAmountValues[lockedKeyIndex]
235233 let currentLocked = getUserTotalLocked((lockedKey + serviceTokenTotalLocked))
236234 let newLockedValue = (currentLocked - lockedAmount)
237235 IntegerEntry((lockedKey + serviceTokenTotalLocked), newLockedValue) :: accumulated
238236 }
239237
240238 let deleteKeys = {
241239 let $l = records
242240 let $s = size($l)
243241 let $acc0 = nil
244242 func $f0_1 ($a,$i) = if (($i >= $s))
245243 then $a
246244 else generateDeletingKeys($a, $l[$i])
247245
248246 func $f0_2 ($a,$i) = if (($i >= $s))
249247 then $a
250248 else throw("List size exceeds 50")
251249
252250 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
253251 }
254252 let lockedKeys = {
255253 let $l = lockedAmountKeys
256254 let $s = size($l)
257255 let $acc0 = nil
258256 func $f1_1 ($a,$i) = if (($i >= $s))
259257 then $a
260258 else generateLockedKeys($a, $l[$i])
261259
262260 func $f1_2 ($a,$i) = if (($i >= $s))
263261 then $a
264262 else throw("List size exceeds 50")
265263
266264 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
267265 }
268266 (deleteKeys ++ lockedKeys)
269267 }
270268 else throw("Only admin can call this function")
271269
272270
273271
274272 @Callable(i)
275273 func issueToken (name,description,quantity,decimals) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
276274 then [Issue(name, description, quantity, decimals, true, unit, 0)]
277275 else throw("Only admin can call this function")
278276
279277
280278
281279 @Callable(a8)
282280 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
283281
284282
285283
286284 @Callable(i)
287285 func deposit (pool) = if ((size(i.payments) != 1))
288286 then throw("One attached payment expected")
289287 else {
290288 let amount = i.payments[0].amount
291289 let assetId = i.payments[0].assetId
292290 let assetIdString = match assetId {
293291 case id: ByteVector =>
294292 toBase58String(id)
295293 case _ =>
296294 throw("Match error")
297295 }
298296 if ((0 >= amount))
299297 then throw(("Deposit amount must be positive. Actual: " + toString(amount)))
300298 else {
301299 let userAddress = toString(i.caller)
302300 let dAppAssetAddress = getDAppAssetAddress(pool)
303301 let liquidutyAssetAddress = match getString((pool + "_liquidity_token")) {
304302 case string: String =>
305303 string
306304 case nothing =>
307305 throw("You try to deposit on unsupported pool")
308306 }
309307 if (isPoolActive(pool))
310308 then {
311309 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
312310 case asset: Asset =>
313311 asset.decimals
314312 case _ =>
315313 throw("Can't find asset")
316314 }
317315 if ((liquidutyAssetAddress != assetIdString))
318316 then throw("You attached wrong liquidity token from Swop.fi")
319317 else {
320318 let userTotalLockedKey = getUserTotalLockedKey(pool, userAddress)
321319 let userTotalLocked = getUserTotalLocked(userTotalLockedKey)
322320 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
323321 let transferToUserAmount = transferToUser(userAmountWithoutFee, fromBase58String(dAppAssetAddress), pool, depositType)
324322 let fee = (amount - userAmountWithoutFee)
325323 let newUserTotalLocked = (userTotalLocked + userAmountWithoutFee)
326324 let lockTokensKey = (((((pool + "_") + userAddress) + "_") + toBase58String(i.transactionId)) + "_locked")
327325 [Reissue(fromBase58String(dAppAssetAddress), transferToUserAmount, true), ScriptTransfer(i.caller, transferToUserAmount, fromBase58String(dAppAssetAddress)), ScriptTransfer(govermanceAddress, fee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(lockTokensKey, userAmountWithoutFee), IntegerEntry(userTotalLockedKey, newUserTotalLocked)]
328326 }
329327 }
330328 else throw("Pool is not active!")
331329 }
332330 }
333331
334332
335333
336334 @Callable(i)
337335 func initWithdraw (pool) = if ((size(i.payments) != 2))
338336 then throw("Two attached payment expected")
339337 else {
340338 let amount = i.payments[0].amount
341339 let assetId = i.payments[0].assetId
342340 let wavesCommissionAmount = i.payments[1].amount
343341 if ((wavesCommissionAmount != wavesCommissionForWithdraw))
344- then throw("You add wrong commission")
342+ then throw("You added wrong commission")
345343 else {
346344 let assetIdString = match assetId {
347345 case id: ByteVector =>
348346 toBase58String(id)
349347 case _ =>
350348 throw("Match error")
351349 }
352350 let assetIdByteVector = match assetId {
353351 case id: ByteVector =>
354352 id
355353 case _ =>
356354 throw("Match error")
357355 }
358356 if ((0 >= amount))
359357 then throw(("Withraw amount must be positive. Actual: " + toString(amount)))
360358 else if (isPoolActive(pool))
361359 then {
362360 let userAddress = toString(i.caller)
363361 let userTotalLockedKey = getUserTotalLockedKey(pool, userAddress)
364362 let userTotalLocked = getUserTotalLocked(userTotalLockedKey)
365363 let userTotalBalanceWithoutCurrentTransaction = assetBalance(i.caller, assetIdByteVector)
366364 let userTotalBalance = (userTotalBalanceWithoutCurrentTransaction + amount)
367365 let maxTransaferToUser = transferToUser(userTotalBalance, fromBase58String(assetIdString), pool, withdrawType)
368366 let transferToUserAmount = transferToUser(amount, fromBase58String(assetIdString), pool, withdrawType)
369367 let nonLockedBalance = (maxTransaferToUser - userTotalLocked)
370368 if (!((nonLockedBalance >= transferToUserAmount)))
371369 then throw("You have a locked tokens. Wait a time for unlock or try to withdrraw less")
372370 else {
373371 let userRecordKey = userWithdrawKey(pool, userAddress, toBase58String(i.transactionId))
374372 let userWithdrawBurnTokenKey = userWithdrawBurnTokensKey(pool, userAddress, toBase58String(i.transactionId))
375373 [IntegerEntry(userRecordKey, transferToUserAmount), IntegerEntry(userWithdrawBurnTokenKey, amount), ScriptTransfer(addressFromPublicKey(adminPubKey4), 500000, unit)]
376374 }
377375 }
378376 else throw("Pool is not active!")
379377 }
380378 }
381379
382380
383381
384382 @Callable(i)
385383 func withdraw (pool,userAddress,transactionId) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
386384 then {
387385 let userRecordKey = userWithdrawKey(pool, userAddress, transactionId)
388386 let userWithdrawBurnTokenKey = userWithdrawBurnTokensKey(pool, userAddress, transactionId)
389387 let sendUserAmount = getIntegerValue(this, userRecordKey)
390388 let burnTokenAmount = getIntegerValue(this, userWithdrawBurnTokenKey)
391389 let dAppAssetAddress = getDAppAssetAddress(pool)
392390 let liquidutyAssetAddress = getLiquidutyAssetAddress(pool)
393-[Burn(fromBase58String(dAppAssetAddress), burnTokenAmount), ScriptTransfer(i.caller, sendUserAmount, fromBase58String(liquidutyAssetAddress)), DeleteEntry(userRecordKey), DeleteEntry(userWithdrawBurnTokenKey)]
391+[Burn(fromBase58String(dAppAssetAddress), burnTokenAmount), ScriptTransfer(Address(base58'userAddress'), sendUserAmount, fromBase58String(liquidutyAssetAddress)), DeleteEntry(userRecordKey), DeleteEntry(userWithdrawBurnTokenKey)]
394392 }
395393 else throw("Only admin can call this function")
396394
397395
398396
399397 @Callable(i)
400398 func poolActivating (pools,statuses) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
401399 then {
402400 func generatePoolActiveKeys (accumulated,pool) = {
403401 let poolIndex = value(indexOf(pools, pool))
404402 let status = statuses[poolIndex]
405403 BooleanEntry((pool + "_active"), status) :: accumulated
406404 }
407405
408406 let poolActiveKeys = {
409407 let $l = pools
410408 let $s = size($l)
411409 let $acc0 = nil
412410 func $f0_1 ($a,$i) = if (($i >= $s))
413411 then $a
414412 else generatePoolActiveKeys($a, $l[$i])
415413
416414 func $f0_2 ($a,$i) = if (($i >= $s))
417415 then $a
418416 else throw("List size exceeds 100")
419417
420418 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
421419 }
422420 poolActiveKeys
423421 }
424422 else throw("Only admin can call this function")
425423
426424
427425
428426 @Callable(i)
429427 func deleteUnsedData () = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
430- then [IntegerEntry("3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_service_token_total_locked", 0), DeleteEntry("3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_asset_balance"), DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL_asset_balance"), IntegerEntry("3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ_3MthsuC5EDyehGoKvyzwhZvMENroHPsgaXS_service_token_total_locked", 0)]
428+ then [DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_2iUVKCy4zUvgBgg7AccyqKfBCYhpoVEV7ECm9NXLZBP4_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_4nXGTM9Zb3oH2fmZoz3S4moW9Lr2YXawD78BSEvCHCaN_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_At3WGKCiCDn9Kb78PK9tJ9EStbcwGSFLCPXBvFvoGboo_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_Cb1mTLJAZmEWirA5FE8UW7eWkrMWGgjTGRdHA2f9d27U_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_FeDsjtZLp74u6G6CptoipdRtQxzwjM1WRufYJUw34tcF_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_HArfuQBZMynxzdeBg4wqsM72yspQBhHq7DiDqEuakJ3j_locked"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_SWOP_last_claimed_amount"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_asset_balance"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_available_SWOP"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_last_interest"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_asset_balance"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_current_reward"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_last_interest"), DeleteEntry("3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX_last_interest_height"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_Avgjf7CwPhnbAZXG8eDmCsVa8339VfRALRJgsSbJtskc_locked"), IntegerEntry("3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_service_token_total_locked", 0), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3P5uZuGjRX7kdrCbvm3isWNvSiHQzpvWGPH_asset_balance"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_G8AxdbSPvKwsxvwEFVFxE1wAW2CrGsAQwy5diyiSJQc1_locked"), DeleteEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_asset_balance"), IntegerEntry("Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT_3PDjJPe1PxqwjJKa7uSkX367CFBtVAVypWW_service_token_total_locked", 0)]
431429 else throw("Only admin can call this function")
432430
433431
434432 @Verifier(tx)
435433 func verify () = match tx {
436434 case inv: InvokeScriptTransaction =>
437435 let lockShareTokens = if ((inv.dApp == farmingAddress))
438436 then if (if ((inv.function == "lockShareTokens"))
439437 then true
440438 else (inv.function == "claim"))
441439 then true
442440 else (inv.function == "withdrawShareTokens")
443441 else false
444- let lockSwop = if ((inv.dApp == swopFiGovermanceAddress))
445- then if ((inv.function == "lockSWOP"))
442+ let swop = if ((inv.dApp == swopFiGovermanceAddress))
443+ then if (if ((inv.function == "lockSWOP"))
446444 then true
447- else (inv.function == "withdrawSWOP")
445+ else (inv.function == "withdrawSWOP"))
446+ then true
447+ else (inv.function == "claimAndStakeSWOP")
448448 else false
449449 let dAppAddress = match inv.dApp {
450450 case dApp: Address =>
451451 toString(dApp)
452452 case _ =>
453453 throw("Transaction must have only address")
454454 }
455- let poolFunctions = if (containsElement(swopFiPools, dAppAddress))
455+ let poolFunctions = if (isPoolActive(dAppAddress))
456456 then containsElement(swopFiFunctions, inv.function)
457457 else false
458458 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
459459 then true
460460 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
461461 then true
462462 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey4))
463463 then true
464464 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
465465 if (if (if (lockShareTokens)
466466 then true
467467 else poolFunctions)
468468 then true
469- else lockSwop)
469+ else swop)
470470 then signedByAdmin
471471 else false
472472 case _ =>
473473 let adm1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
474474 then 1
475475 else 0
476476 let adm2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
477477 then 1
478478 else 0
479479 let adm3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
480480 then 1
481481 else 0
482482 (((adm1Signed + adm2Signed) + adm3Signed) >= 2)
483483 }
484484

github/deemru/w8io/026f985 
88.74 ms