tx · CgH4buDCd78U4f4CW2aVuTYT8RwtVwUhVKDNTGwy3BNy

3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1:  -0.03200000 Waves

2024.02.08 18:23 [2967446] smart account 3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1 > SELF 0.00000000 Waves

{ "type": 13, "id": "CgH4buDCd78U4f4CW2aVuTYT8RwtVwUhVKDNTGwy3BNy", "fee": 3200000, "feeAssetId": null, "timestamp": 1707405690309, "version": 2, "chainId": 84, "sender": "3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1", "senderPublicKey": "HMMF9zUpZPBGLAhpc1yDdcJNJychSarGHS79P2mGvq7J", "proofs": [ "4423DUNdtTMGCsJZNpsUPeuDZHqYkC52H8jKRLEqPnYy9cPFoQstZk6rMvZLGyjdVz8ttAh47cpoJnFRNWoKnMCJ" ], "script": "base64:BgJTCAISBgoECAgICBIHCgUICAgICBIDCgEIEgMKAQESBgoECAEBARIECgIBARIDCgEIEgMKAQgSBAoCCAgSAwoBCBIDCgEIEgASABIDCgEIEgMKAQiDAQAJU0VQQVJBVE9SAgJfXwAFV0FWRVMCBVdBVkVTAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMACEtFWV9JTklUAgRJTklUAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX01BTkFHRVICB01BTkFHRVIAC0tFWV9SRUZFUkVSAgdSRUZFUkVSAAxLRVlfRVhFQ1VUT1ICCEVYRUNVVE9SAApLRVlfT1JBQ0xFAgZPUkFDTEUAE0tFWV9DQUxMRVJfQ09OVFJBQ1QCD0NBTExFUl9DT05UUkFDVAAJS0VZX1BSSUNFAgVQUklDRQAPS0VZX1VOSVRTX0FTU0VUAgtVTklUU19BU1NFVAARS0VZX1VTRVJfUE9TSVRJT04CDVVTRVJfUE9TSVRJT04AFEtFWV9VU0VSX1VTRF9CQUxBTkNFAhBVU0VSX1VTRF9CQUxBTkNFACdLRVlfVVNFUl9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwCI1VTRVJfVU5JVFNfUEVSX1VTRF9CQUxBTkNFX0lOVEVHUkFMAClLRVlfVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAIlVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAAWS0VZX1VTRVJfQ0hFQ0tQT0lOVF9BVAISVVNFUl9DSEVDS1BPSU5UX0FUACJLRVlfVVNFUl9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEAh5VU0VSX1VOSVRTX0JBTEFOQ0VfRElTVFJJQlVURUQAHUtFWV9VU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMAhlVU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMABdLRVlfVVNFUl9TSEFSRVNfUkVGRVJBTAITVVNFUl9TSEFSRVNfUkVGRVJBTAAPS0VZX1NUQVJUX0JMT0NLAgtTVEFSVF9CTE9DSwAQS0VZX0ZJTklTSF9CTE9DSwIMRklOSVNIX0JMT0NLABZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQAhJUT1RBTF9VTklUU19GT1JfTFAAG0tFWV9UT1RBTF9VTklUU19GT1JfUkVGRVJBTAIXVE9UQUxfVU5JVFNfRk9SX1JFRkVSQUwAFUtFWV9UT1RBTF9VU0RfQkFMQU5DRQIRVE9UQUxfVVNEX0JBTEFOQ0UAIktFWV9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwCHlVOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAARS0VZX0NIRUNLUE9JTlRfQVQCDUNIRUNLUE9JTlRfQVQAHUtFWV9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEAhlVTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEABFLRVlfVE9LRU5fQkFMQU5DRQINVE9LRU5fQkFMQU5DRQAPS0VZX1VTRVJTX0NPVU5UAgtVU0VSU19DT1VOVAAkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMAiBVTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAAYS0VZX1VOSVRTX1NIQVJFU19SRUZFUkFMAhRVTklUU19TSEFSRVNfUkVGRVJBTAAYS0VZX1RPVEFMX1NIQVJFU19SRUZFUkFMAhRUT1RBTF9TSEFSRVNfUkVGRVJBTAATS0VZX1NXQVZFU19DT05UUkFDVAIPU1dBVkVTX0NPTlRSQUNUABBLRVlfU1dBVkVTX0FTU0VUAgVBU1NFVAAMRlVOQ19ERVBPU0lUAgdkZXBvc2l0AA1GVU5DX0dFVF9SQVRFAgdnZXRSYXRlAA1GVU5DX1dJVEhEUkFXAgh3aXRoZHJhdwAHTUFYX0lOVAD//////////38ADlBFUkNFTlRfRkFDVE9SCQC2AgEAgKCUpY0dAAtaRVJPX0JJR0lOVAkAtgIBAAAACk9ORV9CSUdJTlQJALYCAQABABJTV0FWRVNfUkFURV9GQUNUT1IJALYCAQCAoJSljR0BEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQxfdmFsaWRhdGVJbnQEBHZhbF8ObG93ZXJCb3VuZGFyeV8OdXBwZXJCb3VuZGFyeV8EZXJyXwMDCQBmAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8GCQBmAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgEPX3ZhbGlkYXRlQmlnSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAvwICBQ5sb3dlckJvdW5kYXJ5XwUEdmFsXwYJAL8CAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgEVX3ZhbGlkYXRlUGF5bWVudHNTaXplAwlwYXltZW50c18HdGFyZ2V0XwRlcnJfAwkBAiE9AgkAkAMBBQlwYXltZW50c18FB3RhcmdldF8JAAIBBQRlcnJfBgEVX3ZhbGlkYXRlV2F2ZXNQYXltZW50AghwYXltZW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwCQACAQUEZXJyXwMJAAECBQckbWF0Y2gwAgRVbml0BgkAAgECC01hdGNoIGVycm9yARFfdmFsaWRhdGVFcUJpZ0ludAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GAQ5fdmFsaWRhdGVBc3NldAIGYXNzZXRfBGVycl8EByRtYXRjaDAJAOwHAQkA2QQBBQZhc3NldF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEJX2xvYWRJbml0AAQHJG1hdGNoMAkAoAgBBQhLRVlfSU5JVAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEJX3NhdmVJbml0AQdpc0luaXRfCQDMCAIJAQxCb29sZWFuRW50cnkCBQhLRVlfSU5JVAUHaXNJbml0XwUDbmlsAQpfbG9hZFBhdXNlAAQHJG1hdGNoMAkAoAgBBQpLRVlfUEFVU0VEAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQpfc2F2ZVBhdXNlAQlpc1BhdXNlZF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCktFWV9QQVVTRUQFCWlzUGF1c2VkXwUDbmlsAQtfbG9hZFBhdXNlcgAEByRtYXRjaDAJAKIIAQUKS0VZX1BBVVNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZVBhdXNlcgEHcGF1c2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfUEFVU0VSCQClCAEFB3BhdXNlcl8FA25pbAENX2xvYWRNdWx0aXNpZwAEByRtYXRjaDAJAKIIAQUMS0VZX01VTFRJU0lHAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlTXVsdGlzaWcBCW11bHRpc2lnXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfTVVMVElTSUcJAKUIAQUJbXVsdGlzaWdfBQNuaWwBDV9sb2FkRXhlY3V0b3IABAckbWF0Y2gwCQCiCAEFDEtFWV9FWEVDVVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ1fc2F2ZUV4ZWN1dG9yAQlleGVjdXRvcl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUMS0VZX0VYRUNVVE9SCQClCAEFCWV4ZWN1dG9yXwUDbmlsAQtfbG9hZE9yYWNsZQAEByRtYXRjaDAJAKIIAQUKS0VZX09SQUNMRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZU9yYWNsZQEHb3JhY2xlXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfT1JBQ0xFCQClCAEFB29yYWNsZV8FA25pbAETX2xvYWRDYWxsZXJDb250cmFjdAAEByRtYXRjaDAJAKIIAQUTS0VZX0NBTExFUl9DT05UUkFDVAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAETX3NhdmVDYWxsZXJDb250cmFjdAEHY2FsbGVyXwkAzAgCCQELU3RyaW5nRW50cnkCBRNLRVlfQ0FMTEVSX0NPTlRSQUNUBQdjYWxsZXJfBQNuaWwBEV9sb2FkVXNlclBvc2l0aW9uAgZ0b2tlbl8FdXNlcl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEUtFWV9VU0VSX1BPU0lUSU9OCQDMCAIFBnRva2VuXwkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBAZzdHJ1Y3QJAL0JAgUBYQUJU0VQQVJBVE9SCQCUCgIJAKcDAQkAkQMCBQZzdHJ1Y3QAAAkApwMBCQCRAwIFBnN0cnVjdAABCQCUCgIFC1pFUk9fQklHSU5UBQtaRVJPX0JJR0lOVAERX3NhdmVVc2VyUG9zaXRpb24DBnRva2VuXwV1c2VyXwlwb3NpdGlvbl8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEUtFWV9VU0VSX1BPU0lUSU9OCQDMCAIFBnRva2VuXwkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IJALsJAgkAzAgCCQCmAwEIBQlwb3NpdGlvbl8CXzEJAMwIAgkApgMBCAUJcG9zaXRpb25fAl8yBQNuaWwFCVNFUEFSQVRPUgUDbmlsARNfbG9hZFVzZXJVU0RCYWxhbmNlAQV1c2VyXwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUUS0VZX1VTRVJfVVNEX0JBTEFOQ0UJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAETX3NhdmVVc2VyVVNEQmFsYW5jZQIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRRLRVlfVVNFUl9VU0RfQkFMQU5DRQkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IJAKYDAQUGdmFsdWVfBQNuaWwBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRdLRVlfVVNFUl9TSEFSRVNfUkVGRVJBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARZfc2F2ZVVzZXJTaGFyZXNSZWZlcmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFF0tFWV9VU0VSX1NIQVJFU19SRUZFUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEfX2xvYWRVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAAEByRtYXRjaDAJAKIIAQUiS0VZX1VOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBH19zYXZlVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBSJLRVlfVU5JVFNfUEVSX1VTRF9CQUxBTkNFX0lOVEVHUkFMCQCmAwEFBnZhbHVlXwUDbmlsASNfbG9hZFVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAEFdXNlcl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFJ0tFWV9VU0VSX1VOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UASNfc2F2ZVVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBSdLRVlfVVNFUl9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SCQCmAwEFBnZhbHVlXwUDbmlsARFfbG9hZENoZWNrcG9pbnRBdAAEByRtYXRjaDAJAKIIAQURS0VZX0NIRUNLUE9JTlRfQVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARFfc2F2ZUNoZWNrcG9pbnRBdAEGdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIFEUtFWV9DSEVDS1BPSU5UX0FUCQCmAwEFBnZhbHVlXwUDbmlsARVfbG9hZFVzZXJDaGVja3BvaW50QXQBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRZLRVlfVVNFUl9DSEVDS1BPSU5UX0FUCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBFV9zYXZlVXNlckNoZWNrcG9pbnRBdAIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRZLRVlfVVNFUl9DSEVDS1BPSU5UX0FUCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEPX2xvYWRVbml0c0Fzc2V0AAQHJG1hdGNoMAkAoggBBQ9LRVlfVU5JVFNfQVNTRVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQDZBAEFAWEBAAEPX3NhdmVVbml0c0Fzc2V0AQZhc3NldF8JAMwIAgkBC1N0cmluZ0VudHJ5AgUPS0VZX1VOSVRTX0FTU0VUCQDYBAEFBmFzc2V0XwUDbmlsAQ9fbG9hZFN0YXJ0QmxvY2sABAckbWF0Y2gwCQCiCAEFD0tFWV9TVEFSVF9CTE9DSwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBD19zYXZlU3RhcnRCbG9jawEGdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIFD0tFWV9TVEFSVF9CTE9DSwkApgMBBQZ2YWx1ZV8FA25pbAEQX2xvYWRGaW5pc2hCbG9jawAEByRtYXRjaDAJAKIIAQUQS0VZX0ZJTklTSF9CTE9DSwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBEF9zYXZlRmluaXNoQmxvY2sBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRBLRVlfRklOSVNIX0JMT0NLCQCmAwEFBnZhbHVlXwUDbmlsARxfbG9hZFVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAAQHJG1hdGNoMAkAoggBBR1LRVlfVU5JVFNfQkFMQU5DRV9ESVNUUklCVVRFRAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBHF9zYXZlVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBR1LRVlfVU5JVFNfQkFMQU5DRV9ESVNUUklCVVRFRAkApgMBBQZ2YWx1ZV8FA25pbAEgX2xvYWRVc2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBSJLRVlfVVNFUl9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVECQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBIF9zYXZlVXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFIktFWV9VU0VSX1VOSVRTX0JBTEFOQ0VfRElTVFJJQlVURUQJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SCQCmAwEFBnZhbHVlXwUDbmlsARRfbG9hZFRvdGFsVVNEQmFsYW5jZQAEByRtYXRjaDAJAKIIAQUVS0VZX1RPVEFMX1VTRF9CQUxBTkNFAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRVLRVlfVE9UQUxfVVNEX0JBTEFOQ0UJAKYDAQUGdmFsdWVfBQNuaWwBE19sb2FkU1dhdmVzQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFE0tFWV9TV0FWRVNfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAETX3NhdmVTV2F2ZXNDb250cmFjdAEJY29udHJhY3RfCQDMCAIJAQtTdHJpbmdFbnRyeQIFE0tFWV9TV0FWRVNfQ09OVFJBQ1QJAKUIAQUJY29udHJhY3RfBQNuaWwBEF9sb2FkU1dhdmVzQXNzZXQBCWNvbnRyYWN0XwQHJG1hdGNoMAkAnQgCBQljb250cmFjdF8FEEtFWV9TV0FWRVNfQVNTRVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQDZBAEFAWEJAAIBAhhfbG9hZFNXYXZlc0Fzc2V0OiByZXZlcnQBEV9sb2FkVG9rZW5CYWxhbmNlAQZ0b2tlbl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEUtFWV9UT0tFTl9CQUxBTkNFCQDMCAIFBnRva2VuXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARFfc2F2ZVRva2VuQmFsYW5jZQIGdG9rZW5fBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgURS0VZX1RPS0VOX0JBTEFOQ0UJAMwIAgUGdG9rZW5fBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEPX2xvYWRVc2Vyc0NvdW50AAQHJG1hdGNoMAkAoggBBQ9LRVlfVVNFUlNfQ09VTlQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UAQ9fc2F2ZVVzZXJzQ291bnQBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBQ9LRVlfVVNFUlNfQ09VTlQJAKYDAQUGdmFsdWVfBQNuaWwBIV9sb2FkVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAAEByRtYXRjaDAJAKIIAQUkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEhX3NhdmVVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsAQZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMCQCmAwEFBnZhbHVlXwUDbmlsARdfbG9hZFVuaXRzU2hhcmVzUmVmZXJhbAAEByRtYXRjaDAJAKIIAQUYS0VZX1VOSVRTX1NIQVJFU19SRUZFUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEXX3NhdmVVbml0c1NoYXJlc1JlZmVyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfVU5JVFNfU0hBUkVTX1JFRkVSQUwJAKYDAQUGdmFsdWVfBQNuaWwBFF9sb2FkVG90YWxVbml0c0ZvckxQAAQHJG1hdGNoMAkAoggBBRZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEUX3NhdmVUb3RhbFVuaXRzRm9yTFABBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQCQCmAwEFBnZhbHVlXwUDbmlsARlfbG9hZFRvdGFsVW5pdHNGb3JSZWZlcmFsAAQHJG1hdGNoMAkAoggBBRtLRVlfVE9UQUxfVU5JVFNfRk9SX1JFRkVSQUwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARlfc2F2ZVRvdGFsVW5pdHNGb3JSZWZlcmFsAQZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUbS0VZX1RPVEFMX1VOSVRTX0ZPUl9SRUZFUkFMCQCmAwEFBnZhbHVlXwUDbmlsARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAEByRtYXRjaDAJAKIIAQUYS0VZX1RPVEFMX1NIQVJFU19SRUZFUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEXX3NhdmVUb3RhbFNoYXJlc1JlZmVyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfVE9UQUxfU0hBUkVTX1JFRkVSQUwJAKYDAQUGdmFsdWVfBQNuaWwBJV9sb2FkVXNlclVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBSlLRVlfVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UASVfc2F2ZVVzZXJVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFKUtFWV9VU0VSX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEbX2xvYWRVc2VyVW5pdHNTaGFyZXNSZWZlcmFsAQV1c2VyXwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUdS0VZX1VTRVJfVU5JVFNfU0hBUkVTX1JFRkVSQUwJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEbX3NhdmVVc2VyVW5pdHNTaGFyZXNSZWZlcmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFHUtFWV9VU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEMX2xvYWRNYW5hZ2VyAAQHJG1hdGNoMAkAoggBBQtLRVlfTUFOQUdFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQxfc2F2ZU1hbmFnZXIBCG1hbmFnZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFC0tFWV9NQU5BR0VSCQClCAEFCG1hbmFnZXJfBQNuaWwBDF9sb2FkUmVmZXJlcgEJY29kZWhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBQtLRVlfUkVGRVJFUgkAzAgCBQljb2RlaGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQkAAgECFF9sb2FkUmVmZXJlcjogcmV2ZXJ0AQxfc2F2ZVJlZmVyZXICCWNvZGVoYXNoXwhhZGRyZXNzXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgULS0VZX1JFRkVSRVIJAMwIAgUJY29kZWhhc2hfBQNuaWwFCVNFUEFSQVRPUgUIYWRkcmVzc18FA25pbAEWX2NoZWNrUmVmZXJlckV4aXN0ZW5jZQEJY29kZWhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBQtLRVlfUkVGRVJFUgkAzAgCBQljb2RlaGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAYHARFfb25seVRoaXNDb250cmFjdAEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8FBHRoaXMJAAIBAhlfb25seVRoaXNDb250cmFjdDogcmV2ZXJ0BgEQX3doZW5NdWx0aXNpZ1NldAADCQAAAgkBDV9sb2FkTXVsdGlzaWcACQEHQWRkcmVzcwEBAAkAAgECGF93aGVuTXVsdGlzaWdTZXQ6IHJldmVydAYBE193aGVuTm90SW5pdGlhbGl6ZWQAAwkBCV9sb2FkSW5pdAAJAAIBAhtfd2hlbk5vdEluaXRpYWxpemVkOiByZXZlcnQGARBfd2hlbkluaXRpYWxpemVkAAMJAQEhAQkBCV9sb2FkSW5pdAAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDF9vbmx5TWFuYWdlcgEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8JAQxfbG9hZE1hbmFnZXIACQACAQIUX29ubHlNYW5hZ2VyOiByZXZlcnQGARFfdmFsaWRhdGVFeGVjdXRvcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBDV9sb2FkRXhlY3V0b3IACQACAQUEZXJyXwYBD192YWxpZGF0ZUNhbGxlcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBE19sb2FkQ2FsbGVyQ29udHJhY3QACQACAQUEZXJyXwYBDV9nZXRUb2tlblJhdGUBBnRva2VuXwQHJG1hdGNoMAkAnQgCCQELX2xvYWRPcmFjbGUACQC5CQIJAMwIAgUJS0VZX1BSSUNFCQDMCAIFBnRva2VuXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEJAAIBCQCsAgICIV9nZXRUb2tlblJhdGU6IG5vIHJhdGUgZm9yIHRva2VuPQUGdG9rZW5fAQtfY2hlY2twb2ludAAEHnByZXZVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAkBH19sb2FkVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwABBBwcmV2Q2hlY2twb2ludEF0CQCYAwEJAMwIAgkBD19sb2FkU3RhcnRCbG9jawAJAMwIAgkBEV9sb2FkQ2hlY2twb2ludEF0AAUDbmlsBBtwcmV2VW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQJARxfbG9hZFVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAAQgcHJldlVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJASFfbG9hZFVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwABBZwcmV2VW5pdHNTaGFyZXNSZWZlcmFsCQEXX2xvYWRVbml0c1NoYXJlc1JlZmVyYWwABAxjdXJyZW50QmxvY2sJAJkDAQkAzAgCCQC2AgEFBmhlaWdodAkAzAgCCQEQX2xvYWRGaW5pc2hCbG9jawAFA25pbAMJAMACAgUQcHJldkNoZWNrcG9pbnRBdAUMY3VycmVudEJsb2NrCQCVCgMFA25pbAUecHJldlVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBSBwcmV2VW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAQYdW5pdHNCYWxhbmNlVG9EaXN0cmlidXRlCQC8AgMJALgCAgkBFF9sb2FkVG90YWxVbml0c0ZvckxQAAUbcHJldlVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkCQC4AgIFDGN1cnJlbnRCbG9jawUQcHJldkNoZWNrcG9pbnRBdAkAuAICCQEQX2xvYWRGaW5pc2hCbG9jawAFEHByZXZDaGVja3BvaW50QXQEGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsCQC3AgIJALoCAgkAuQICBQ5QRVJDRU5UX0ZBQ1RPUgUYdW5pdHNCYWxhbmNlVG9EaXN0cmlidXRlCQEUX2xvYWRUb3RhbFVTREJhbGFuY2UABR5wcmV2VW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwEDSR0MDE3NzQ4MTgzMDEDCQC/AgIJARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAFC1pFUk9fQklHSU5UBBJ1bml0c1NoYXJlc1JlZmVyYWwJALwCAwkAuAICCQEZX2xvYWRUb3RhbFVuaXRzRm9yUmVmZXJhbAAFFnByZXZVbml0c1NoYXJlc1JlZmVyYWwJALgCAgUMY3VycmVudEJsb2NrBRBwcmV2Q2hlY2twb2ludEF0CQC4AgIJARBfbG9hZEZpbmlzaEJsb2NrAAUQcHJldkNoZWNrcG9pbnRBdAQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAkAtwICCQC6AgIJALkCAgUOUEVSQ0VOVF9GQUNUT1IFEnVuaXRzU2hhcmVzUmVmZXJhbAkBF19sb2FkVG90YWxTaGFyZXNSZWZlcmFsAAUgcHJldlVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJAJQKAgUSdW5pdHNTaGFyZXNSZWZlcmFsBRx1bml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsCQCUCgIFC1pFUk9fQklHSU5UBQtaRVJPX0JJR0lOVAQSdW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMTc3NDgxODMwMQJfMQQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAgFDSR0MDE3NzQ4MTgzMDECXzIJAJUKAwkAzggCCQDOCAIJAM4IAgkAzggCCQERX3NhdmVDaGVja3BvaW50QXQBBQxjdXJyZW50QmxvY2sJAR9fc2F2ZVVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsAQUadW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwJARxfc2F2ZVVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAQkAtwICBRh1bml0c0JhbGFuY2VUb0Rpc3RyaWJ1dGUFG3ByZXZVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkBIV9zYXZlVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEFHHVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJARdfc2F2ZVVuaXRzU2hhcmVzUmVmZXJhbAEJALcCAgUSdW5pdHNTaGFyZXNSZWZlcmFsBRZwcmV2VW5pdHNTaGFyZXNSZWZlcmFsBRp1bml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAUcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEPX3VzZXJDaGVja3BvaW50AwV1c2VyXw91c2VyVVNEQmFsYW5jZV8SdXNlclNoYXJlc1JlZmVyYWxfBA0kdDAxODg4NzE4OTk5CQELX2NoZWNrcG9pbnQABBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDE4ODg3MTg5OTkCXzEEGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsCAUNJHQwMTg4ODcxODk5OQJfMgQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAgFDSR0MDE4ODg3MTg5OTkCXzMEInByZXZVc2VyVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwJASNfbG9hZFVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAEFBXVzZXJfBBRwcmV2VXNlckNoZWNrcG9pbnRBdAkAmAMBCQDMCAIJAQ9fbG9hZFN0YXJ0QmxvY2sACQDMCAIJARVfbG9hZFVzZXJDaGVja3BvaW50QXQBBQV1c2VyXwUDbmlsBB9wcmV2VXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkCQEgX2xvYWRVc2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBQV1c2VyXwQkcHJldlVzZXJVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsCQElX2xvYWRVc2VyVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEFBXVzZXJfBBpwcmV2VXNlclVuaXRzU2hhcmVzUmVmZXJhbAkBG19sb2FkVXNlclVuaXRzU2hhcmVzUmVmZXJhbAEFBXVzZXJfBAxjdXJyZW50QmxvY2sJAJkDAQkAzAgCCQC2AgEFBmhlaWdodAkAzAgCCQEQX2xvYWRGaW5pc2hCbG9jawAFA25pbAMJAMACAgUUcHJldlVzZXJDaGVja3BvaW50QXQFDGN1cnJlbnRCbG9jawkAlQoDBRFjaGVja3BvaW50QWN0aW9ucwUfcHJldlVzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAUacHJldlVzZXJVbml0c1NoYXJlc1JlZmVyYWwEG3VzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkAtwICCQC6AgIJALkCAgUPdXNlclVTREJhbGFuY2VfCQC4AgIFGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBSJwcmV2VXNlclVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBQ5QRVJDRU5UX0ZBQ1RPUgUfcHJldlVzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAQWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAkAtwICCQC6AgIJALkCAgUSdXNlclNoYXJlc1JlZmVyYWxfCQC4AgIFHHVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwFJHByZXZVc2VyVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAUOUEVSQ0VOVF9GQUNUT1IFGnByZXZVc2VyVW5pdHNTaGFyZXNSZWZlcmFsCQCVCgMJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCBRFjaGVja3BvaW50QWN0aW9ucwkBFV9zYXZlVXNlckNoZWNrcG9pbnRBdAIFBXVzZXJfBQxjdXJyZW50QmxvY2sJASNfc2F2ZVVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAIFBXVzZXJfBRp1bml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAkBIF9zYXZlVXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAgUFdXNlcl8FG3VzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkBJV9zYXZlVXNlclVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwCBQV1c2VyXwUcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAkBG19zYXZlVXNlclVuaXRzU2hhcmVzUmVmZXJhbAIFBXVzZXJfBRZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsBRt1c2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQFFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwPAWkBBGluaXQECWV4ZWN1dG9yXwdvcmFjbGVfB3BhdXNlcl8Pc1dhdmVzQ29udHJhY3RfBANlcnIDAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBE193aGVuTm90SW5pdGlhbGl6ZWQABwkBEF93aGVuTXVsdGlzaWdTZXQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQlleGVjdXRvcl8CFmluaXQ6IGludmFsaWQgZXhlY3V0b3IHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB29yYWNsZV8CFGluaXQ6IGludmFsaWQgb3JhY2xlBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUPc1dhdmVzQ29udHJhY3RfAhxpbml0OiBpbnZhbGlkIHNXYXZlc0NvbnRyYWN0BwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBDV9zYXZlRXhlY3V0b3IBCQERQGV4dHJOYXRpdmUoMTA2MikBBQlleGVjdXRvcl8JAQtfc2F2ZU9yYWNsZQEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB29yYWNsZV8JAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8JARNfc2F2ZVNXYXZlc0NvbnRyYWN0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUPc1dhdmVzQ29udHJhY3RfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB2RlcG9zaXQFD2NhbGxlckNvbnRyYWN0XwdzZW5kZXJfBnRva2VuXwdhbW91bnRfCXJlZmVycmVyXwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUHYW1vdW50XwIaZGVwb3NpdDogYW1vdW50IGlzIG5vdCBJbnQEA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARFfdmFsaWRhdGVFeGVjdXRvcgIIBQFpBmNhbGxlcgIZZGVwb3NpdDogaW52YWxpZCBleGVjdXRvcgcJAQ9fdmFsaWRhdGVDYWxsZXICBQ9jYWxsZXJDb250cmFjdF8CF2RlcG9zaXQ6IGludmFsaWQgY2FsbGVyBwkBDF92YWxpZGF0ZUludAQFBmFtb3VudAAABQdNQVhfSU5UAhdkZXBvc2l0OiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEBHJhdGUJAQ1fZ2V0VG9rZW5SYXRlAQUGdG9rZW5fBA0kdDAyMTkyNjIyMDA4CQERX2xvYWRVc2VyUG9zaXRpb24CBQZ0b2tlbl8FB3NlbmRlcl8EEHVzZXJUb2tlbkJhbGFuY2UIBQ0kdDAyMTkyNjIyMDA4Al8xBBV1c2VyVG9rZW5CYWxhbmNlSW5VU0QIBQ0kdDAyMTkyNjIyMDA4Al8yBA51c2VyVVNEQmFsYW5jZQkBE19sb2FkVXNlclVTREJhbGFuY2UBBQdzZW5kZXJfBBF1c2VyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQdzZW5kZXJfBA0kdDAyMjEyNzIyMjU0CQEPX3VzZXJDaGVja3BvaW50AwUHc2VuZGVyXwUOdXNlclVTREJhbGFuY2UFEXVzZXJTaGFyZXNSZWZlcmFsBBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDIyMTI3MjIyNTQCXzEEEHVzZXJVbml0c0JhbGFuY2UIBQ0kdDAyMjEyNzIyMjU0Al8yBBZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMjIxMjcyMjI1NAJfMwQTbmV3VXNlclRva2VuQmFsYW5jZQkAtwICBRB1c2VyVG9rZW5CYWxhbmNlCQC2AgEFBmFtb3VudAQYbmV3VXNlclRva2VuQmFsYW5jZUluVVNECQC9AgQFE25ld1VzZXJUb2tlbkJhbGFuY2UFBHJhdGUFDlBFUkNFTlRfRkFDVE9SBQRET1dOBBFuZXdVc2VyVVNEQmFsYW5jZQkAtwICCQC4AgIFDnVzZXJVU0RCYWxhbmNlBRV1c2VyVG9rZW5CYWxhbmNlSW5VU0QFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAQTdG90YWxCYWxhbmNlVXBkYXRlZAkAtwICCQC4AgIJARRfbG9hZFRvdGFsVVNEQmFsYW5jZQAFFXVzZXJUb2tlbkJhbGFuY2VJblVTRAUYbmV3VXNlclRva2VuQmFsYW5jZUluVVNEBAp1c2Vyc0NvdW50AwkAAAIFDnVzZXJVU0RCYWxhbmNlBQtaRVJPX0JJR0lOVAkAtwICCQEPX2xvYWRVc2Vyc0NvdW50AAUKT05FX0JJR0lOVAkBD19sb2FkVXNlcnNDb3VudAAEDnJlZmVyZXJBY3Rpb25zAwMJAGYCCQCxAgEFCXJlZmVycmVyXwAACQEWX2NoZWNrUmVmZXJlckV4aXN0ZW5jZQEFCXJlZmVycmVyXwcEDnJlZmVyZXJBZGRyZXNzCQEMX2xvYWRSZWZlcmVyAQUJcmVmZXJyZXJfBBJzaGFyZXNUb0Rpc3RyaWJ1dGUJAL0CBAkAtgIBBQZhbW91bnQFBHJhdGUFDlBFUkNFTlRfRkFDVE9SBQRET1dOBAxzaGFyZXNUb1VzZXIJAL0CBAUSc2hhcmVzVG9EaXN0cmlidXRlCQC2AgEAFAkAtgIBAGQFBERPV04ED3NoYXJlc1RvUmVmZXJlcgkAuAICBRJzaGFyZXNUb0Rpc3RyaWJ1dGUFDHNoYXJlc1RvVXNlcgQUbmV3VXNlclNoYXJlc1JlZmVyYWwJALcCAgURdXNlclNoYXJlc1JlZmVyYWwFDHNoYXJlc1RvVXNlcgQUcmVmZXJlclNoYXJlc1JlZmVyYWwJARZfbG9hZFVzZXJTaGFyZXNSZWZlcmFsAQUOcmVmZXJlckFkZHJlc3MEF25ld1JlZmVyZXJTaGFyZXNSZWZlcmFsCQC3AgIFFHJlZmVyZXJTaGFyZXNSZWZlcmFsBQ9zaGFyZXNUb1JlZmVyZXIEFW5ld1RvdGFsU2hhcmVzUmVmZXJhbAkAtwICCQEXX2xvYWRUb3RhbFNoYXJlc1JlZmVyYWwABRJzaGFyZXNUb0Rpc3RyaWJ1dGUEDSR0MDIzNTg3MjM3NTgJAQ9fdXNlckNoZWNrcG9pbnQDBQ5yZWZlcmVyQWRkcmVzcwkBE19sb2FkVXNlclVTREJhbGFuY2UBBQ5yZWZlcmVyQWRkcmVzcwUUcmVmZXJlclNoYXJlc1JlZmVyYWwEGHJlZmVyZXJDaGVja3BvaW50QWN0aW9ucwgFDSR0MDIzNTg3MjM3NTgCXzEEE3JlZmVyZXJVbml0c0JhbGFuY2UIBQ0kdDAyMzU4NzIzNzU4Al8yBBlyZWZlcmVyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMjM1ODcyMzc1OAJfMwkAzggCCQDOCAIJAM4IAgUYcmVmZXJlckNoZWNrcG9pbnRBY3Rpb25zCQEWX3NhdmVVc2VyU2hhcmVzUmVmZXJhbAIFB3NlbmRlcl8FFG5ld1VzZXJTaGFyZXNSZWZlcmFsCQEWX3NhdmVVc2VyU2hhcmVzUmVmZXJhbAIFDnJlZmVyZXJBZGRyZXNzBRduZXdSZWZlcmVyU2hhcmVzUmVmZXJhbAkBF19zYXZlVG90YWxTaGFyZXNSZWZlcmFsAQUVbmV3VG90YWxTaGFyZXNSZWZlcmFsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgURY2hlY2twb2ludEFjdGlvbnMFDnJlZmVyZXJBY3Rpb25zCQEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBRN0b3RhbEJhbGFuY2VVcGRhdGVkCQERX3NhdmVUb2tlbkJhbGFuY2UCBQZ0b2tlbl8JALcCAgkBEV9sb2FkVG9rZW5CYWxhbmNlAQUGdG9rZW5fCQC2AgEFBmFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQdzZW5kZXJfBRFuZXdVc2VyVVNEQmFsYW5jZQkBD19zYXZlVXNlcnNDb3VudAEFCnVzZXJzQ291bnQJARFfc2F2ZVVzZXJQb3NpdGlvbgMFBnRva2VuXwUHc2VuZGVyXwkAlAoCBRNuZXdVc2VyVG9rZW5CYWxhbmNlBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QFEHVzZXJVbml0c0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMZGVwb3NpdFdhdmVzAQlyZWZlcnJlcl8EA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARVfdmFsaWRhdGVQYXltZW50c1NpemUDCAUBaQhwYXltZW50cwABAhhkZXBvc2l0V2F2ZXM6IG5vIHBheW1lbnQHCQEVX3ZhbGlkYXRlV2F2ZXNQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwAAAhtkZXBvc2l0V2F2ZXM6IGludmFsaWQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAkAaQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AGQAAAUHTUFYX0lOVAIcZGVwb3NpdFdhdmVzOiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEBmFtb3VudAkAaQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AGQEBnNlbmRlcgkApQgBCAUBaQZjYWxsZXIEBXRva2VuBQVXQVZFUwQEcmF0ZQkBDV9nZXRUb2tlblJhdGUBBQV0b2tlbgQNJHQwMjY2MzMyNjcxMwkBEV9sb2FkVXNlclBvc2l0aW9uAgUFdG9rZW4FBnNlbmRlcgQQdXNlclRva2VuQmFsYW5jZQgFDSR0MDI2NjMzMjY3MTMCXzEEFXVzZXJUb2tlbkJhbGFuY2VJblVTRAgFDSR0MDI2NjMzMjY3MTMCXzIEDnVzZXJVU0RCYWxhbmNlCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFBnNlbmRlcgQRdXNlclNoYXJlc1JlZmVyYWwJARZfbG9hZFVzZXJTaGFyZXNSZWZlcmFsAQUGc2VuZGVyBA0kdDAyNjgzMDI2OTU2CQEPX3VzZXJDaGVja3BvaW50AwUGc2VuZGVyBQ51c2VyVVNEQmFsYW5jZQURdXNlclNoYXJlc1JlZmVyYWwEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwMjY4MzAyNjk1NgJfMQQQdXNlclVuaXRzQmFsYW5jZQgFDSR0MDI2ODMwMjY5NTYCXzIEFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAyNjgzMDI2OTU2Al8zBBNuZXdVc2VyVG9rZW5CYWxhbmNlCQC3AgIFEHVzZXJUb2tlbkJhbGFuY2UJALYCAQUGYW1vdW50BBhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QJAL0CBAUTbmV3VXNlclRva2VuQmFsYW5jZQUEcmF0ZQUOUEVSQ0VOVF9GQUNUT1IFBERPV04EEW5ld1VzZXJVU0RCYWxhbmNlCQC3AgIJALgCAgUOdXNlclVTREJhbGFuY2UFFXVzZXJUb2tlbkJhbGFuY2VJblVTRAUYbmV3VXNlclRva2VuQmFsYW5jZUluVVNEBBN0b3RhbEJhbGFuY2VVcGRhdGVkCQC3AgIJALgCAgkBFF9sb2FkVG90YWxVU0RCYWxhbmNlAAUVdXNlclRva2VuQmFsYW5jZUluVVNEBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QECnVzZXJzQ291bnQDCQAAAgUOdXNlclVTREJhbGFuY2UFC1pFUk9fQklHSU5UCQC3AgIJAQ9fbG9hZFVzZXJzQ291bnQABQpPTkVfQklHSU5UCQEPX2xvYWRVc2Vyc0NvdW50AAQOcmVmZXJlckFjdGlvbnMDAwkAZgIJALECAQUJcmVmZXJyZXJfAAAJARZfY2hlY2tSZWZlcmVyRXhpc3RlbmNlAQUJcmVmZXJyZXJfBwQOcmVmZXJlckFkZHJlc3MJAQxfbG9hZFJlZmVyZXIBBQlyZWZlcnJlcl8EEnNoYXJlc1RvRGlzdHJpYnV0ZQkAvQIECQC2AgEFBmFtb3VudAUEcmF0ZQUOUEVSQ0VOVF9GQUNUT1IFBERPV04EDHNoYXJlc1RvVXNlcgkAvQIEBRJzaGFyZXNUb0Rpc3RyaWJ1dGUJALYCAQAUCQC2AgEAZAUERE9XTgQPc2hhcmVzVG9SZWZlcmVyCQC4AgIFEnNoYXJlc1RvRGlzdHJpYnV0ZQUMc2hhcmVzVG9Vc2VyBBRuZXdVc2VyU2hhcmVzUmVmZXJhbAkAtwICBRF1c2VyU2hhcmVzUmVmZXJhbAUMc2hhcmVzVG9Vc2VyBBRyZWZlcmVyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQ5yZWZlcmVyQWRkcmVzcwQXbmV3UmVmZXJlclNoYXJlc1JlZmVyYWwJALcCAgUUcmVmZXJlclNoYXJlc1JlZmVyYWwFD3NoYXJlc1RvUmVmZXJlcgQVbmV3VG90YWxTaGFyZXNSZWZlcmFsCQC3AgIJARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAFEnNoYXJlc1RvRGlzdHJpYnV0ZQQNJHQwMjgyODkyODQ2MAkBD191c2VyQ2hlY2twb2ludAMFDnJlZmVyZXJBZGRyZXNzCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFDnJlZmVyZXJBZGRyZXNzBRRyZWZlcmVyU2hhcmVzUmVmZXJhbAQYcmVmZXJlckNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwMjgyODkyODQ2MAJfMQQTcmVmZXJlclVuaXRzQmFsYW5jZQgFDSR0MDI4Mjg5Mjg0NjACXzIEGXJlZmVyZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAyODI4OTI4NDYwAl8zCQDOCAIJAM4IAgkAzggCBRhyZWZlcmVyQ2hlY2twb2ludEFjdGlvbnMJARZfc2F2ZVVzZXJTaGFyZXNSZWZlcmFsAgUGc2VuZGVyBRRuZXdVc2VyU2hhcmVzUmVmZXJhbAkBFl9zYXZlVXNlclNoYXJlc1JlZmVyYWwCBQ5yZWZlcmVyQWRkcmVzcwUXbmV3UmVmZXJlclNoYXJlc1JlZmVyYWwJARdfc2F2ZVRvdGFsU2hhcmVzUmVmZXJhbAEFFW5ld1RvdGFsU2hhcmVzUmVmZXJhbAUDbmlsBAppbnZvY2F0aW9uCQD8BwQJARNfbG9hZFNXYXZlc0NvbnRyYWN0AAUMRlVOQ19ERVBPU0lUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNuaWwDCQAAAgUKaW52b2NhdGlvbgUKaW52b2NhdGlvbgkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCBRFjaGVja3BvaW50QWN0aW9ucwUOcmVmZXJlckFjdGlvbnMJARRfc2F2ZVRvdGFsVVNEQmFsYW5jZQEFE3RvdGFsQmFsYW5jZVVwZGF0ZWQJARFfc2F2ZVRva2VuQmFsYW5jZQIFBVdBVkVTCQC3AgIJARFfbG9hZFRva2VuQmFsYW5jZQEFBVdBVkVTCQC2AgEFBmFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQZzZW5kZXIFEW5ld1VzZXJVU0RCYWxhbmNlCQEPX3NhdmVVc2Vyc0NvdW50AQUKdXNlcnNDb3VudAkBEV9zYXZlVXNlclBvc2l0aW9uAwUFdG9rZW4FBnNlbmRlcgkAlAoCBRNuZXdVc2VyVG9rZW5CYWxhbmNlBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QFEHVzZXJVbml0c0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENd2l0aGRyYXdXYXZlcwEHYW1vdW50XwQDZXJyAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEMX3ZhbGlkYXRlSW50BAkAaQIFB2Ftb3VudF8AZAAABQdNQVhfSU5UAh13aXRoZHJhd1dhdmVzOiBpbnZhbGlkIGFtb3VudAcDCQDAAgIJARBfbG9hZEZpbmlzaEJsb2NrAAkAtgIBBQZoZWlnaHQJAAIBAhp3aXRoZHJhd1dhdmVzOiBub3QgYWxsb3dlZAYHAwkAAAIFA2VycgUDZXJyBA5pbnRlcm5hbEFtb3VudAkAaQIFB2Ftb3VudF8AZAQGc2VuZGVyCQClCAEIBQFpBmNhbGxlcgQFdG9rZW4FBVdBVkVTBARyYXRlCQENX2dldFRva2VuUmF0ZQEFBXRva2VuBA0kdDAyOTcyODI5ODA4CQERX2xvYWRVc2VyUG9zaXRpb24CBQV0b2tlbgUGc2VuZGVyBBB1c2VyVG9rZW5CYWxhbmNlCAUNJHQwMjk3MjgyOTgwOAJfMQQVdXNlclRva2VuQmFsYW5jZUluVVNECAUNJHQwMjk3MjgyOTgwOAJfMgQOdXNlclVTREJhbGFuY2UJARNfbG9hZFVzZXJVU0RCYWxhbmNlAQUGc2VuZGVyBBF1c2VyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQZzZW5kZXIEDSR0MDI5OTI1MzAwNTEJAQ9fdXNlckNoZWNrcG9pbnQDBQZzZW5kZXIFDnVzZXJVU0RCYWxhbmNlBRF1c2VyU2hhcmVzUmVmZXJhbAQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDAyOTkyNTMwMDUxAl8xBBB1c2VyVW5pdHNCYWxhbmNlCAUNJHQwMjk5MjUzMDA1MQJfMgQWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAgFDSR0MDI5OTI1MzAwNTECXzMEE25ld1VzZXJUb2tlbkJhbGFuY2UJALgCAgUQdXNlclRva2VuQmFsYW5jZQkAtgIBBQ5pbnRlcm5hbEFtb3VudAQEZXJyMQkBDF92YWxpZGF0ZUludAQJAKADAQUTbmV3VXNlclRva2VuQmFsYW5jZQAABQdNQVhfSU5UAih3aXRoZHJhd1dhdmVzOiBpbnN1ZmZpY2llbnQgdG9rZW4gYW1vdW50AwkAAAIFBGVycjEFBGVycjEEGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAkAvQIEBRNuZXdVc2VyVG9rZW5CYWxhbmNlBQRyYXRlBQ5QRVJDRU5UX0ZBQ1RPUgUERE9XTgQRbmV3VXNlclVTREJhbGFuY2UJALcCAgkAuAICBQ51c2VyVVNEQmFsYW5jZQUVdXNlclRva2VuQmFsYW5jZUluVVNEBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QEE3RvdGFsQmFsYW5jZVVwZGF0ZWQJALcCAgkAuAICCQEUX2xvYWRUb3RhbFVTREJhbGFuY2UABRV1c2VyVG9rZW5CYWxhbmNlSW5VU0QFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAQOc1dhdmVzQ29udHJhY3QJARNfbG9hZFNXYXZlc0NvbnRyYWN0AAQLc1dhdmVzQXNzZXQJARBfbG9hZFNXYXZlc0Fzc2V0AQUOc1dhdmVzQ29udHJhY3QECmludm9jYXRpb24JAPwHBAUOc1dhdmVzQ29udHJhY3QFDUZVTkNfR0VUX1JBVEUFA25pbAUDbmlsBApzd2F2ZXNSYXRlBAckbWF0Y2gwBQppbnZvY2F0aW9uAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhCQACAQImd2l0aGRyYXdXYXZlczogc1dhdmVzIGdldFJhdGUoKSByZXZlcnQEEHNXYXZlc1RvV2l0aGRyYXcJAKADAQkAvQIECQC2AgEFB2Ftb3VudF8FElNXQVZFU19SQVRFX0ZBQ1RPUgUKc3dhdmVzUmF0ZQUHQ0VJTElORwQLaW52b2NhdGlvbjEJAPwHBAUOc1dhdmVzQ29udHJhY3QFDUZVTkNfV0lUSERSQVcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULc1dhdmVzQXNzZXQFEHNXYXZlc1RvV2l0aGRyYXcFA25pbAMJAAACBQtpbnZvY2F0aW9uMQULaW52b2NhdGlvbjEJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQR1bml0BQNuaWwFEWNoZWNrcG9pbnRBY3Rpb25zCQEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBRN0b3RhbEJhbGFuY2VVcGRhdGVkCQERX3NhdmVUb2tlbkJhbGFuY2UCBQVXQVZFUwkAuAICCQERX2xvYWRUb2tlbkJhbGFuY2UBBQVXQVZFUwkAtgIBBQ5pbnRlcm5hbEFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQZzZW5kZXIFEW5ld1VzZXJVU0RCYWxhbmNlCQERX3NhdmVVc2VyUG9zaXRpb24DBQV0b2tlbgUGc2VuZGVyCQCUCgIFE25ld1VzZXJUb2tlbkJhbGFuY2UFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zdGFydFJldHJvZHJvcAQLdW5pdHNBc3NldF8MYW1vdW50Rm9yTFBfEWFtb3VudEZvclJlZmVyYWxfCWJsb2Nrc0F0XwQDZXJyAwMDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEOX3doZW5Ob3RQYXVzZWQABwkBDl92YWxpZGF0ZUFzc2V0AgULdW5pdHNBc3NldF8CI3N0YXJ0UmV0cm9kcm9wOiBpbnZhbGlkIHVuaXRzIGFzc2V0BwkBDF92YWxpZGF0ZUludAQFDGFtb3VudEZvckxQXwAABQdNQVhfSU5UAiNzdGFydFJldHJvZHJvcDogaW52YWxpZCBhbW91bnRGb3JMUAcJAQxfdmFsaWRhdGVJbnQEBRFhbW91bnRGb3JSZWZlcmFsXwAABQdNQVhfSU5UAihzdGFydFJldHJvZHJvcDogaW52YWxpZCBhbW91bnRGb3JSZWZlcmFsBwkBDF92YWxpZGF0ZUludAQFCWJsb2Nrc0F0XwABBQdNQVhfSU5UAiBzdGFydFJldHJvZHJvcDogaW52YWxpZCBibG9ja3NBdAcJARFfdmFsaWRhdGVFcUJpZ0ludAMJAQ9fbG9hZFN0YXJ0QmxvY2sABQtaRVJPX0JJR0lOVAIfc3RhcnRSZXRyb2Ryb3A6IGFscmVhZHkgc3RhcnRlZAcDCQAAAgUDZXJyBQNlcnIEC3N0YXJ0SGVpZ2h0CQC2AgEFBmhlaWdodAQMZmluaXNoSGVpZ2h0CQC3AgIFC3N0YXJ0SGVpZ2h0CQC2AgEFCWJsb2Nrc0F0XwQEZXJyMQMJAGYCCQBkAgUMYW1vdW50Rm9yTFBfBRFhbW91bnRGb3JSZWZlcmFsXwkA8AcCBQR0aGlzCQDZBAEFC3VuaXRzQXNzZXRfCQACAQIic3RhcnRSZXRyb2Ryb3A6IGluc3VmZmljaWVudCBmdW5kcwYDCQAAAgUEZXJyMQUEZXJyMQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ9fc2F2ZVVuaXRzQXNzZXQBCQDZBAEFC3VuaXRzQXNzZXRfCQEPX3NhdmVTdGFydEJsb2NrAQULc3RhcnRIZWlnaHQJARBfc2F2ZUZpbmlzaEJsb2NrAQUMZmluaXNoSGVpZ2h0CQEUX3NhdmVUb3RhbFVuaXRzRm9yTFABCQC2AgEFDGFtb3VudEZvckxQXwkBGV9zYXZlVG90YWxVbml0c0ZvclJlZmVyYWwBCQC2AgEFEWFtb3VudEZvclJlZmVyYWxfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2luY3JlYXNlVW5pdHNTdXBwbHkCDGFtb3VudEZvckxQXxFhbW91bnRGb3JSZWZlcmFsXwQDZXJyAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDF92YWxpZGF0ZUludAQFDGFtb3VudEZvckxQXwAABQdNQVhfSU5UAihpbmNyZWFzZVVuaXRzU3VwcGx5OiBpbnZhbGlkIGFtb3VudEZvckxQBwkBDF92YWxpZGF0ZUludAQFEWFtb3VudEZvclJlZmVyYWxfAAAFB01BWF9JTlQCLWluY3JlYXNlVW5pdHNTdXBwbHk6IGludmFsaWQgYW1vdW50Rm9yUmVmZXJhbAcJAQ9fdmFsaWRhdGVCaWdJbnQECQC2AgEFBmhlaWdodAkAtwICCQEPX2xvYWRTdGFydEJsb2NrAAUKT05FX0JJR0lOVAkAuAICCQEQX2xvYWRGaW5pc2hCbG9jawAFCk9ORV9CSUdJTlQCJGluY3JlYXNlVW5pdHNTdXBwbHk6IGRyb3Agbm90IGFjdGl2ZQcDCQAAAgUDZXJyBQNlcnIEDm5ld0Ftb3VudEZvckxQCQC3AgIJARRfbG9hZFRvdGFsVW5pdHNGb3JMUAAJALYCAQUMYW1vdW50Rm9yTFBfBBNuZXdBbW91bnRGb3JSZWZlcmFsCQC3AgIJARlfbG9hZFRvdGFsVW5pdHNGb3JSZWZlcmFsAAkAtgIBBRFhbW91bnRGb3JSZWZlcmFsXwQEZXJyMQMJAL8CAgkAtwICBQ5uZXdBbW91bnRGb3JMUAUTbmV3QW1vdW50Rm9yUmVmZXJhbAkAtgIBCQDwBwIFBHRoaXMJAQ9fbG9hZFVuaXRzQXNzZXQACQACAQInaW5jcmVhc2VVbml0c1N1cHBseTogaW5zdWZmaWNpZW50IGZ1bmRzBgMJAAACBQRlcnIxBQRlcnIxCQCUCgIJAM4IAgkBFF9zYXZlVG90YWxVbml0c0ZvckxQAQUObmV3QW1vdW50Rm9yTFAJARlfc2F2ZVRvdGFsVW5pdHNGb3JSZWZlcmFsAQUTbmV3QW1vdW50Rm9yUmVmZXJhbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjaGVja3BvaW50AQV1c2VyXwQNJHQwMzM4MjAzMzk1OQkBD191c2VyQ2hlY2twb2ludAMFBXVzZXJfCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFBXVzZXJfCQEWX2xvYWRVc2VyU2hhcmVzUmVmZXJhbAEFBXVzZXJfBAdhY3Rpb25zCAUNJHQwMzM4MjAzMzk1OQJfMQQQdXNlclVuaXRzQmFsYW5jZQgFDSR0MDMzODIwMzM5NTkCXzIEFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAzMzgyMDMzOTU5Al8zCQCUCgIFB2FjdGlvbnMJAJQKAgUQdXNlclVuaXRzQmFsYW5jZQUWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAFpAQhnZXRVbml0cwEFdXNlcl8EDSR0MDM0MDcyMzQyMTEJAQ9fdXNlckNoZWNrcG9pbnQDBQV1c2VyXwkBE19sb2FkVXNlclVTREJhbGFuY2UBBQV1c2VyXwkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQV1c2VyXwQHYWN0aW9ucwgFDSR0MDM0MDcyMzQyMTECXzEEEHVzZXJVbml0c0JhbGFuY2UIBQ0kdDAzNDA3MjM0MjExAl8yBBZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMzQwNzIzNDIxMQJfMwkAlAoCBQNuaWwJAJQKAgUQdXNlclVuaXRzQmFsYW5jZQUWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAFpAQpzZXRSZWZlcmVyAgljb2RlaGFzaF8IYWRkcmVzc18EA2VycgMJAQxfb25seU1hbmFnZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDF9zYXZlUmVmZXJlcgIFCWNvZGVoYXNoXwUIYWRkcmVzc18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEIbWFuYWdlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUIbWFuYWdlcl8CG3NldE1hbmFnZXI6IGludmFsaWQgbWFuYWdlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDF9zYXZlTWFuYWdlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG1hbmFnZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFHVwZGF0ZUNhbGxlckNvbnRyYWN0AQ9jYWxsZXJDb250cmFjdF8EA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwMJAAACBQNlcnIFA2VycgkAlAoCCQETX3NhdmVDYWxsZXJDb250cmFjdAEFD2NhbGxlckNvbnRyYWN0XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CHHVwZGF0ZVBhdXNlcjogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCW11bHRpc2lnXwIdc2V0TXVsdGlzaWc6IGludmFsaWQgbXVsdGlzaWcHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlgIwbR", "height": 2967446, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8kcReFwfsRJrzi6D6hVpGw48Q1gUeegTiGRjbGPWEZTs Next: GJKZ9F3aAnjj3dzt71c98cwobkn3otifNnvpgci5NaKY Diff:
OldNewDifferences
1515
1616 let g = "PAUSER"
1717
18-let h = "EXECUTOR"
18+let h = "MANAGER"
1919
20-let i = "ORACLE"
20+let i = "REFERER"
2121
22-let j = "CALLER_CONTRACT"
22+let j = "EXECUTOR"
2323
24-let k = "PRICE"
24+let k = "ORACLE"
2525
26-let l = "USER_POSITION"
26+let l = "CALLER_CONTRACT"
2727
28-let m = "USER_USD_BALANCE"
28+let m = "PRICE"
2929
30-let n = "USER_UNITS_PER_USD_BALANCE_INTEGRAL"
30+let n = "UNITS_ASSET"
3131
32-let o = "USER_CHECKPOINT_AT"
32+let o = "USER_POSITION"
3333
34-let p = "USER_UNITS_BALANCE"
34+let p = "USER_USD_BALANCE"
3535
36-let q = "START_BLOCK"
36+let q = "USER_UNITS_PER_USD_BALANCE_INTEGRAL"
3737
38-let r = "FINISH_BLOCK"
38+let r = "USER_UNITS_PER_REFERAL_SHARE_INTEGRAL"
3939
40-let s = "UNITS_PER_BLOCK"
40+let s = "USER_CHECKPOINT_AT"
4141
42-let t = "TOTAL_USD_BALANCE"
42+let t = "USER_UNITS_BALANCE_DISTRIBUTED"
4343
44-let u = "UNITS_PER_USD_BALANCE_INTEGRAL"
44+let u = "USER_UNITS_SHARES_REFERAL"
4545
46-let v = "CHECKPOINT_AT"
46+let v = "USER_SHARES_REFERAL"
4747
48-let w = "UNITS_BALANCE"
48+let w = "START_BLOCK"
4949
50-let x = "TOKEN_BALANCE"
50+let x = "FINISH_BLOCK"
5151
52-let y = "SWAVES_CONTRACT"
52+let y = "TOTAL_UNITS_FOR_LP"
5353
54-let z = "ASSET"
54+let z = "TOTAL_UNITS_FOR_REFERAL"
5555
56-let A = "deposit"
56+let A = "TOTAL_USD_BALANCE"
5757
58-let B = "getRate"
58+let B = "UNITS_PER_USD_BALANCE_INTEGRAL"
5959
60-let C = "withdraw"
60+let C = "CHECKPOINT_AT"
6161
62-let D = 9223372036854775807
62+let D = "UNITS_BALANCE_DISTRIBUTED"
6363
64-let E = toBigInt(1000000000000)
64+let E = "TOKEN_BALANCE"
6565
66-let F = toBigInt(0)
66+let F = "USERS_COUNT"
6767
68-let G = toBigInt(1000000000000)
68+let G = "UNITS_PER_REFERAL_SHARE_INTEGRAL"
6969
70-func H (I,J) = {
71- let K = addressFromString(I)
72- if ($isInstanceOf(K, "Address"))
70+let H = "UNITS_SHARES_REFERAL"
71+
72+let I = "TOTAL_SHARES_REFERAL"
73+
74+let J = "SWAVES_CONTRACT"
75+
76+let K = "ASSET"
77+
78+let L = "deposit"
79+
80+let M = "getRate"
81+
82+let N = "withdraw"
83+
84+let O = 9223372036854775807
85+
86+let P = toBigInt(1000000000000)
87+
88+let Q = toBigInt(0)
89+
90+let R = toBigInt(1)
91+
92+let S = toBigInt(1000000000000)
93+
94+func T (U,V) = {
95+ let W = addressFromString(U)
96+ if ($isInstanceOf(W, "Address"))
7397 then {
74- let L = K
98+ let X = W
7599 true
76100 }
77- else throw(J)
101+ else throw(V)
78102 }
79103
80104
81-func M (N,O,P,J) = if (if ((O > N))
105+func Y (Z,aa,ab,V) = if (if ((aa > Z))
82106 then true
83- else (N > P))
84- then throw(J)
107+ else (Z > ab))
108+ then throw(V)
85109 else true
86110
87111
88-func Q (R,S,J) = if ((size(R) != S))
89- then throw(J)
112+func ac (Z,aa,ab,V) = if (if ((aa > Z))
113+ then true
114+ else (Z > ab))
115+ then throw(V)
90116 else true
91117
92118
93-func T (U,J) = {
94- let K = U.assetId
95- if ($isInstanceOf(K, "ByteVector"))
119+func ad (ae,af,V) = if ((size(ae) != af))
120+ then throw(V)
121+ else true
122+
123+
124+func ag (ah,V) = {
125+ let W = ah.assetId
126+ if ($isInstanceOf(W, "ByteVector"))
96127 then {
97- let L = K
98- throw(J)
128+ let X = W
129+ throw(V)
99130 }
100- else if ($isInstanceOf(K, "Unit"))
131+ else if ($isInstanceOf(W, "Unit"))
101132 then true
102133 else throw("Match error")
103134 }
104135
105136
106-func V (W,X,J) = if ((W != X))
107- then throw(J)
137+func ai (aj,ak,V) = if ((aj != ak))
138+ then throw(V)
108139 else true
109140
110141
111-func Y () = {
112- let K = getBoolean(e)
113- if ($isInstanceOf(K, "Boolean"))
142+func al (am,V) = {
143+ let W = assetInfo(fromBase58String(am))
144+ if ($isInstanceOf(W, "Asset"))
114145 then {
115- let L = K
116- L
146+ let X = W
147+ true
148+ }
149+ else throw(V)
150+ }
151+
152+
153+func an () = {
154+ let W = getBoolean(e)
155+ if ($isInstanceOf(W, "Boolean"))
156+ then {
157+ let X = W
158+ X
117159 }
118160 else false
119161 }
120162
121163
122-func Z (aa) = [BooleanEntry(e, aa)]
164+func ao (ap) = [BooleanEntry(e, ap)]
123165
124166
125-func ab () = {
126- let K = getBoolean(f)
127- if ($isInstanceOf(K, "Boolean"))
167+func aq () = {
168+ let W = getBoolean(f)
169+ if ($isInstanceOf(W, "Boolean"))
128170 then {
129- let L = K
130- L
171+ let X = W
172+ X
131173 }
132174 else false
133175 }
134176
135177
136-func ac (ad) = [BooleanEntry(f, ad)]
178+func ar (as) = [BooleanEntry(f, as)]
137179
138180
139-func ae () = {
140- let K = getString(g)
141- if ($isInstanceOf(K, "String"))
181+func at () = {
182+ let W = getString(g)
183+ if ($isInstanceOf(W, "String"))
142184 then {
143- let L = K
144- addressFromStringValue(L)
185+ let X = W
186+ addressFromStringValue(X)
145187 }
146188 else Address(base58'')
147189 }
148190
149191
150-func af (ag) = [StringEntry(g, toString(ag))]
192+func au (av) = [StringEntry(g, toString(av))]
151193
152194
153-func ah () = {
154- let K = getString(c)
155- if ($isInstanceOf(K, "String"))
195+func aw () = {
196+ let W = getString(c)
197+ if ($isInstanceOf(W, "String"))
156198 then {
157- let L = K
158- addressFromStringValue(L)
199+ let X = W
200+ addressFromStringValue(X)
159201 }
160202 else Address(base58'')
161203 }
162204
163205
164-func ai (aj) = [StringEntry(c, toString(aj))]
206+func ax (ay) = [StringEntry(c, toString(ay))]
165207
166208
167-func ak () = {
168- let K = getString(h)
169- if ($isInstanceOf(K, "String"))
209+func az () = {
210+ let W = getString(j)
211+ if ($isInstanceOf(W, "String"))
170212 then {
171- let L = K
172- addressFromStringValue(L)
213+ let X = W
214+ addressFromStringValue(X)
173215 }
174216 else Address(base58'')
175217 }
176218
177219
178-func al (am) = [StringEntry(h, toString(am))]
220+func aA (aB) = [StringEntry(j, toString(aB))]
179221
180222
181-func an () = {
182- let K = getString(i)
183- if ($isInstanceOf(K, "String"))
223+func aC () = {
224+ let W = getString(k)
225+ if ($isInstanceOf(W, "String"))
184226 then {
185- let L = K
186- addressFromStringValue(L)
227+ let X = W
228+ addressFromStringValue(X)
187229 }
188230 else Address(base58'')
189231 }
190232
191233
192-func ao (ap) = [StringEntry(i, toString(ap))]
234+func aD (aE) = [StringEntry(k, toString(aE))]
193235
194236
195-func aq () = {
196- let K = getString(j)
197- if ($isInstanceOf(K, "String"))
237+func aF () = {
238+ let W = getString(l)
239+ if ($isInstanceOf(W, "String"))
198240 then {
199- let L = K
200- L
241+ let X = W
242+ X
201243 }
202244 else ""
203245 }
204246
205247
206-func ar (as) = [StringEntry(j, as)]
248+func aG (aH) = [StringEntry(l, aH)]
207249
208250
209-func at (au,av) = {
210- let K = getString(makeString([l, au, av], a))
211- if ($isInstanceOf(K, "String"))
251+func aI (aJ,aK) = {
252+ let W = getString(makeString([o, aJ, aK], a))
253+ if ($isInstanceOf(W, "String"))
212254 then {
213- let L = K
214- let aw = split_51C(L, a)
215- $Tuple2(parseBigIntValue(aw[0]), parseBigIntValue(aw[1]))
255+ let X = W
256+ let aL = split_51C(X, a)
257+ $Tuple2(parseBigIntValue(aL[0]), parseBigIntValue(aL[1]))
216258 }
217- else $Tuple2(F, F)
259+ else $Tuple2(Q, Q)
218260 }
219261
220262
221-func ax (au,av,ay) = [StringEntry(makeString([l, au, av], a), makeString_11C([toString(ay._1), toString(ay._2)], a))]
263+func aM (aJ,aK,aN) = [StringEntry(makeString([o, aJ, aK], a), makeString_11C([toString(aN._1), toString(aN._2)], a))]
222264
223265
224-func az (av) = {
225- let K = getString(makeString([m, av], a))
226- if ($isInstanceOf(K, "String"))
266+func aO (aK) = {
267+ let W = getString(makeString([p, aK], a))
268+ if ($isInstanceOf(W, "String"))
227269 then {
228- let L = K
229- parseBigIntValue(L)
270+ let X = W
271+ parseBigIntValue(X)
230272 }
231- else F
273+ else Q
232274 }
233275
234276
235-func aA (av,aB) = [StringEntry(makeString([m, av], a), toString(aB))]
277+func aP (aK,aQ) = [StringEntry(makeString([p, aK], a), toString(aQ))]
236278
237279
238-func aC () = {
239- let K = getString(u)
240- if ($isInstanceOf(K, "String"))
280+func aR (aK) = {
281+ let W = getString(makeString([v, aK], a))
282+ if ($isInstanceOf(W, "String"))
241283 then {
242- let L = K
243- parseBigIntValue(L)
284+ let X = W
285+ parseBigIntValue(X)
244286 }
245- else F
287+ else Q
246288 }
247289
248290
249-func aD (aB) = [StringEntry(u, toString(aB))]
291+func aS (aK,aQ) = [StringEntry(makeString([v, aK], a), toString(aQ))]
250292
251293
252-func aE (av) = {
253- let K = getString(makeString([n, av], a))
254- if ($isInstanceOf(K, "String"))
294+func aT () = {
295+ let W = getString(B)
296+ if ($isInstanceOf(W, "String"))
255297 then {
256- let L = K
257- parseBigIntValue(L)
298+ let X = W
299+ parseBigIntValue(X)
258300 }
259- else F
301+ else Q
260302 }
261303
262304
263-func aF (av,aB) = [StringEntry(makeString([n, av], a), toString(aB))]
305+func aU (aQ) = [StringEntry(B, toString(aQ))]
264306
265307
266-func aG () = {
267- let K = getString(v)
268- if ($isInstanceOf(K, "String"))
308+func aV (aK) = {
309+ let W = getString(makeString([q, aK], a))
310+ if ($isInstanceOf(W, "String"))
269311 then {
270- let L = K
271- parseBigIntValue(L)
312+ let X = W
313+ parseBigIntValue(X)
272314 }
273- else F
315+ else Q
274316 }
275317
276318
277-func aH (aB) = [StringEntry(v, toString(aB))]
319+func aW (aK,aQ) = [StringEntry(makeString([q, aK], a), toString(aQ))]
278320
279321
280-func aI (av) = {
281- let K = getString(makeString([o, av], a))
282- if ($isInstanceOf(K, "String"))
322+func aX () = {
323+ let W = getString(C)
324+ if ($isInstanceOf(W, "String"))
283325 then {
284- let L = K
285- parseBigIntValue(L)
326+ let X = W
327+ parseBigIntValue(X)
286328 }
287- else F
329+ else Q
288330 }
289331
290332
291-func aJ (av,aB) = [StringEntry(makeString([o, av], a), toString(aB))]
333+func aY (aQ) = [StringEntry(C, toString(aQ))]
292334
293335
294-func aK () = {
295- let K = getString(q)
296- if ($isInstanceOf(K, "String"))
336+func aZ (aK) = {
337+ let W = getString(makeString([s, aK], a))
338+ if ($isInstanceOf(W, "String"))
297339 then {
298- let L = K
299- parseBigIntValue(L)
340+ let X = W
341+ parseBigIntValue(X)
300342 }
301- else F
343+ else Q
302344 }
303345
304346
305-func aL (aB) = [StringEntry(q, toString(aB))]
347+func ba (aK,aQ) = [StringEntry(makeString([s, aK], a), toString(aQ))]
306348
307349
308-func aM () = {
309- let K = getString(r)
310- if ($isInstanceOf(K, "String"))
350+func bb () = {
351+ let W = getString(n)
352+ if ($isInstanceOf(W, "String"))
311353 then {
312- let L = K
313- parseBigIntValue(L)
354+ let X = W
355+ fromBase58String(X)
314356 }
315- else F
357+ else base58''
316358 }
317359
318360
319-func aN (aB) = [StringEntry(r, toString(aB))]
361+func bc (am) = [StringEntry(n, toBase58String(am))]
320362
321363
322-func aO () = {
323- let K = getString(s)
324- if ($isInstanceOf(K, "String"))
364+func bd () = {
365+ let W = getString(w)
366+ if ($isInstanceOf(W, "String"))
325367 then {
326- let L = K
327- parseBigIntValue(L)
368+ let X = W
369+ parseBigIntValue(X)
328370 }
329- else F
371+ else Q
330372 }
331373
332374
333-func aP (aB) = [StringEntry(s, toString(aB))]
375+func be (aQ) = [StringEntry(w, toString(aQ))]
334376
335377
336-func aQ () = {
337- let K = getString(w)
338- if ($isInstanceOf(K, "String"))
378+func bf () = {
379+ let W = getString(x)
380+ if ($isInstanceOf(W, "String"))
339381 then {
340- let L = K
341- parseBigIntValue(L)
382+ let X = W
383+ parseBigIntValue(X)
342384 }
343- else F
385+ else Q
344386 }
345387
346388
347-func aR (aB) = [StringEntry(w, toString(aB))]
389+func bg (aQ) = [StringEntry(x, toString(aQ))]
348390
349391
350-func aS (av) = {
351- let K = getString(makeString([p, av], a))
352- if ($isInstanceOf(K, "String"))
392+func bh () = {
393+ let W = getString(D)
394+ if ($isInstanceOf(W, "String"))
353395 then {
354- let L = K
355- parseBigIntValue(L)
396+ let X = W
397+ parseBigIntValue(X)
356398 }
357- else F
399+ else Q
358400 }
359401
360402
361-func aT (av,aB) = [StringEntry(makeString([p, av], a), toString(aB))]
403+func bi (aQ) = [StringEntry(D, toString(aQ))]
362404
363405
364-func aU () = {
365- let K = getString(t)
366- if ($isInstanceOf(K, "String"))
406+func bj (aK) = {
407+ let W = getString(makeString([t, aK], a))
408+ if ($isInstanceOf(W, "String"))
367409 then {
368- let L = K
369- parseBigIntValue(L)
410+ let X = W
411+ parseBigIntValue(X)
370412 }
371- else F
413+ else Q
372414 }
373415
374416
375-func aV (aB) = [StringEntry(t, toString(aB))]
417+func bk (aK,aQ) = [StringEntry(makeString([t, aK], a), toString(aQ))]
376418
377419
378-func aW () = {
379- let K = getString(y)
380- if ($isInstanceOf(K, "String"))
420+func bl () = {
421+ let W = getString(A)
422+ if ($isInstanceOf(W, "String"))
381423 then {
382- let L = K
383- addressFromStringValue(L)
424+ let X = W
425+ parseBigIntValue(X)
426+ }
427+ else Q
428+ }
429+
430+
431+func bm (aQ) = [StringEntry(A, toString(aQ))]
432+
433+
434+func bn () = {
435+ let W = getString(J)
436+ if ($isInstanceOf(W, "String"))
437+ then {
438+ let X = W
439+ addressFromStringValue(X)
384440 }
385441 else Address(base58'')
386442 }
387443
388444
389-func aX (aY) = [StringEntry(y, toString(aY))]
445+func bo (bp) = [StringEntry(J, toString(bp))]
390446
391447
392-func aZ (aY) = {
393- let K = getString(aY, z)
394- if ($isInstanceOf(K, "String"))
448+func bq (bp) = {
449+ let W = getString(bp, K)
450+ if ($isInstanceOf(W, "String"))
395451 then {
396- let L = K
397- fromBase58String(L)
452+ let X = W
453+ fromBase58String(X)
398454 }
399455 else throw("_loadSWavesAsset: revert")
400456 }
401457
402458
403-func ba (au) = {
404- let K = getString(makeString([x, au], a))
405- if ($isInstanceOf(K, "String"))
459+func br (aJ) = {
460+ let W = getString(makeString([E, aJ], a))
461+ if ($isInstanceOf(W, "String"))
406462 then {
407- let L = K
408- parseBigIntValue(L)
463+ let X = W
464+ parseBigIntValue(X)
409465 }
410- else F
466+ else Q
411467 }
412468
413469
414-func bb (au,aB) = [StringEntry(makeString([x, au], a), toString(aB))]
470+func bs (aJ,aQ) = [StringEntry(makeString([E, aJ], a), toString(aQ))]
415471
416472
417-func bc (as) = if ((as != this))
473+func bt () = {
474+ let W = getString(F)
475+ if ($isInstanceOf(W, "String"))
476+ then {
477+ let X = W
478+ parseBigIntValue(X)
479+ }
480+ else Q
481+ }
482+
483+
484+func bu (aQ) = [StringEntry(F, toString(aQ))]
485+
486+
487+func bv () = {
488+ let W = getString(G)
489+ if ($isInstanceOf(W, "String"))
490+ then {
491+ let X = W
492+ parseBigIntValue(X)
493+ }
494+ else Q
495+ }
496+
497+
498+func bw (aQ) = [StringEntry(G, toString(aQ))]
499+
500+
501+func bx () = {
502+ let W = getString(H)
503+ if ($isInstanceOf(W, "String"))
504+ then {
505+ let X = W
506+ parseBigIntValue(X)
507+ }
508+ else Q
509+ }
510+
511+
512+func by (aQ) = [StringEntry(H, toString(aQ))]
513+
514+
515+func bz () = {
516+ let W = getString(y)
517+ if ($isInstanceOf(W, "String"))
518+ then {
519+ let X = W
520+ parseBigIntValue(X)
521+ }
522+ else Q
523+ }
524+
525+
526+func bA (aQ) = [StringEntry(y, toString(aQ))]
527+
528+
529+func bB () = {
530+ let W = getString(z)
531+ if ($isInstanceOf(W, "String"))
532+ then {
533+ let X = W
534+ parseBigIntValue(X)
535+ }
536+ else Q
537+ }
538+
539+
540+func bC (aQ) = [StringEntry(z, toString(aQ))]
541+
542+
543+func bD () = {
544+ let W = getString(I)
545+ if ($isInstanceOf(W, "String"))
546+ then {
547+ let X = W
548+ parseBigIntValue(X)
549+ }
550+ else Q
551+ }
552+
553+
554+func bE (aQ) = [StringEntry(I, toString(aQ))]
555+
556+
557+func bF (aK) = {
558+ let W = getString(makeString([r, aK], a))
559+ if ($isInstanceOf(W, "String"))
560+ then {
561+ let X = W
562+ parseBigIntValue(X)
563+ }
564+ else Q
565+ }
566+
567+
568+func bG (aK,aQ) = [StringEntry(makeString([r, aK], a), toString(aQ))]
569+
570+
571+func bH (aK) = {
572+ let W = getString(makeString([u, aK], a))
573+ if ($isInstanceOf(W, "String"))
574+ then {
575+ let X = W
576+ parseBigIntValue(X)
577+ }
578+ else Q
579+ }
580+
581+
582+func bI (aK,aQ) = [StringEntry(makeString([u, aK], a), toString(aQ))]
583+
584+
585+func bJ () = {
586+ let W = getString(h)
587+ if ($isInstanceOf(W, "String"))
588+ then {
589+ let X = W
590+ addressFromStringValue(X)
591+ }
592+ else Address(base58'')
593+ }
594+
595+
596+func bK (bL) = [StringEntry(h, toString(bL))]
597+
598+
599+func bM (bN) = {
600+ let W = getString(makeString([i, bN], a))
601+ if ($isInstanceOf(W, "String"))
602+ then {
603+ let X = W
604+ X
605+ }
606+ else throw("_loadReferer: revert")
607+ }
608+
609+
610+func bO (bN,U) = [StringEntry(makeString([i, bN], a), U)]
611+
612+
613+func bP (bN) = {
614+ let W = getString(makeString([i, bN], a))
615+ if ($isInstanceOf(W, "String"))
616+ then {
617+ let X = W
618+ true
619+ }
620+ else false
621+ }
622+
623+
624+func bQ (aH) = if ((aH != this))
418625 then throw("_onlyThisContract: revert")
419626 else true
420627
421628
422-func bd () = if ((ah() == Address(base58'')))
629+func bR () = if ((aw() == Address(base58'')))
423630 then throw("_whenMultisigSet: revert")
424631 else true
425632
426633
427-func be () = if (Y())
634+func bS () = if (an())
428635 then throw("_whenNotInitialized: revert")
429636 else true
430637
431638
432-func bf () = if (!(Y()))
639+func bT () = if (!(an()))
433640 then throw("_whenInitialized: revert")
434641 else true
435642
436643
437-func bg () = if (ab())
644+func bU () = if (aq())
438645 then throw("_whenNotPaused: revert")
439646 else true
440647
441648
442-func bh () = if (!(ab()))
649+func bV () = if (!(aq()))
443650 then throw("_whenPaused: revert")
444651 else true
445652
446653
447-func bi (as) = if ((as != ae()))
654+func bW (aH) = if ((aH != at()))
448655 then throw("_onlyPauser: revert")
449656 else true
450657
451658
452-func bj (N,J) = if ((N != ak()))
453- then throw(J)
659+func bX (aH) = if ((aH != bJ()))
660+ then throw("_onlyManager: revert")
454661 else true
455662
456663
457-func bk (N,J) = if ((N != aq()))
458- then throw(J)
664+func bY (Z,V) = if ((Z != az()))
665+ then throw(V)
459666 else true
460667
461668
462-func bl (au) = {
463- let K = getString(an(), makeString([k, au], a))
464- if ($isInstanceOf(K, "String"))
669+func bZ (Z,V) = if ((Z != aF()))
670+ then throw(V)
671+ else true
672+
673+
674+func ca (aJ) = {
675+ let W = getString(aC(), makeString([m, aJ], a))
676+ if ($isInstanceOf(W, "String"))
465677 then {
466- let L = K
467- parseBigIntValue(L)
678+ let X = W
679+ parseBigIntValue(X)
468680 }
469- else throw(("_getTokenRate: no rate for token=" + au))
681+ else throw(("_getTokenRate: no rate for token=" + aJ))
470682 }
471683
472684
473-func bm () = {
474- let bn = aC()
475- let bo = max([aK(), aG()])
476- let bp = aQ()
477- let bq = min([toBigInt(height), aM()])
478- if ((bo >= bq))
479- then $Tuple2(nil, bn)
685+func cb () = {
686+ let cc = aT()
687+ let cd = max([bd(), aX()])
688+ let ce = bh()
689+ let cf = bv()
690+ let cg = bx()
691+ let ch = min([toBigInt(height), bf()])
692+ if ((cd >= ch))
693+ then $Tuple3(nil, cc, cf)
480694 else {
481- let br = (aO() * (bq - aK()))
482- let bs = ((((E * (bq - bo)) * (br - bp)) / aU()) + bn)
483- $Tuple2(((aD(bs) ++ aH(bq)) ++ aR(br)), bs)
695+ let ci = fraction((bz() - ce), (ch - cd), (bf() - cd))
696+ let cj = (((P * ci) / bl()) + cc)
697+ let ck = if ((bD() > Q))
698+ then {
699+ let cl = fraction((bB() - cg), (ch - cd), (bf() - cd))
700+ let cm = (((P * cl) / bD()) + cf)
701+ $Tuple2(cl, cm)
702+ }
703+ else $Tuple2(Q, Q)
704+ let cl = ck._1
705+ let cm = ck._2
706+ $Tuple3(((((aY(ch) ++ aU(cj)) ++ bi((ci + ce))) ++ bw(cm)) ++ by((cl + cg))), cj, cm)
484707 }
485708 }
486709
487710
488-func bt (av,bu) = {
489- let bv = bm()
490- let bw = bv._1
491- let bs = bv._2
492- let bx = aE(av)
493- let by = max([aK(), aI(av)])
494- let bz = aS(av)
495- let bq = min([toBigInt(height), aM()])
496- if ((by >= bq))
497- then $Tuple2(bw, bz)
711+func cn (aK,co,cp) = {
712+ let cq = cb()
713+ let cr = cq._1
714+ let cj = cq._2
715+ let cm = cq._3
716+ let cs = aV(aK)
717+ let ct = max([bd(), aZ(aK)])
718+ let cu = bj(aK)
719+ let cv = bF(aK)
720+ let cw = bH(aK)
721+ let ch = min([toBigInt(height), bf()])
722+ if ((ct >= ch))
723+ then $Tuple3(cr, cu, cw)
498724 else {
499- let bA = ((((bu * (bs - bx)) / (bq - by)) / E) + bz)
500- $Tuple2((((bw ++ aF(av, bs)) ++ aJ(av, bq)) ++ aT(av, bA)), bA)
725+ let cx = (((co * (cj - cs)) / P) + cu)
726+ let cy = (((cp * (cm - cv)) / P) + cw)
727+ $Tuple3((((((cr ++ ba(aK, ch)) ++ aW(aK, cj)) ++ bk(aK, cx)) ++ bG(aK, cm)) ++ bI(aK, cy)), cx, cy)
501728 }
502729 }
503730
504731
505-@Callable(bB)
506-func init (am,ap,ag,bC) = {
507- let bD = if (if (if (if (if (if (bc(bB.caller))
508- then be()
732+@Callable(cz)
733+func init (aB,aE,av,cA) = {
734+ let cB = if (if (if (if (if (if (bQ(cz.caller))
735+ then bS()
509736 else false)
510- then bd()
737+ then bR()
511738 else false)
512- then H(am, "init: invalid executor")
739+ then T(aB, "init: invalid executor")
513740 else false)
514- then H(ap, "init: invalid oracle")
741+ then T(aE, "init: invalid oracle")
515742 else false)
516- then H(ag, "init: invalid pauser")
743+ then T(av, "init: invalid pauser")
517744 else false)
518- then H(bC, "init: invalid sWavesContract")
745+ then T(cA, "init: invalid sWavesContract")
519746 else false
520- if ((bD == bD))
521- then $Tuple2(((((Z(true) ++ al(addressFromStringValue(am))) ++ ao(addressFromStringValue(ap))) ++ af(addressFromStringValue(ag))) ++ aX(addressFromStringValue(bC))), unit)
747+ if ((cB == cB))
748+ then $Tuple2(((((ao(true) ++ aA(addressFromStringValue(aB))) ++ aD(addressFromStringValue(aE))) ++ au(addressFromStringValue(av))) ++ bo(addressFromStringValue(cA))), unit)
522749 else throw("Strict value is not equal to itself.")
523750 }
524751
525752
526753
527-@Callable(bB)
528-func deposit (bE,bF,au,bG,bH) = {
529- let bI = valueOrErrorMessage(parseInt(bG), "deposit: amount is not Int")
530- let bD = if (if (if (if (bf())
531- then bg()
754+@Callable(cz)
755+func deposit (cC,cD,aJ,cE,cF) = {
756+ let cG = valueOrErrorMessage(parseInt(cE), "deposit: amount is not Int")
757+ let cB = if (if (if (if (bT())
758+ then bU()
532759 else false)
533- then bj(bB.caller, "deposit: invalid executor")
760+ then bY(cz.caller, "deposit: invalid executor")
534761 else false)
535- then bk(bE, "deposit: invalid caller")
762+ then bZ(cC, "deposit: invalid caller")
536763 else false)
537- then M(bI, 0, D, "deposit: invalid amount")
764+ then Y(cG, 0, O, "deposit: invalid amount")
538765 else false
539- if ((bD == bD))
766+ if ((cB == cB))
540767 then {
541- let bJ = bl(au)
542- let bK = at(au, bF)
543- let bL = bK._1
544- let bM = bK._2
545- let bN = az(bF)
546- let bO = bt(bF, bN)
547- let bw = bO._1
548- let bA = bO._2
549- let bP = (bL + toBigInt(bI))
550- let bQ = fraction(bP, bJ, E, DOWN)
551- let bR = ((bN - bM) + bQ)
552- let bS = ((aU() - bM) + bQ)
553- $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) + toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), bA)
768+ let cH = ca(aJ)
769+ let cI = aI(aJ, cD)
770+ let cJ = cI._1
771+ let cK = cI._2
772+ let cL = aO(cD)
773+ let cM = aR(cD)
774+ let cN = cn(cD, cL, cM)
775+ let cr = cN._1
776+ let cO = cN._2
777+ let cy = cN._3
778+ let cP = (cJ + toBigInt(cG))
779+ let cQ = fraction(cP, cH, P, DOWN)
780+ let cR = ((cL - cK) + cQ)
781+ let cS = ((bl() - cK) + cQ)
782+ let cT = if ((cL == Q))
783+ then (bt() + R)
784+ else bt()
785+ let cU = if (if ((size(cF) > 0))
786+ then bP(cF)
787+ else false)
788+ then {
789+ let cV = bM(cF)
790+ let cW = fraction(toBigInt(cG), cH, P, DOWN)
791+ let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN)
792+ let cY = (cW - cX)
793+ let cZ = (cM + cX)
794+ let da = aR(cV)
795+ let db = (da + cY)
796+ let dc = (bD() + cW)
797+ let dd = cn(cV, aO(cV), da)
798+ let de = dd._1
799+ let df = dd._2
800+ let dg = dd._3
801+ (((de ++ aS(cD, cZ)) ++ aS(cV, db)) ++ bE(dc))
802+ }
803+ else nil
804+ $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(aJ, (br(aJ) + toBigInt(cG)))) ++ aP(cD, cR)) ++ bu(cT)) ++ aM(aJ, cD, $Tuple2(cP, cQ))), cO)
554805 }
555806 else throw("Strict value is not equal to itself.")
556807 }
557808
558809
559810
560-@Callable(bB)
561-func withdraw (bE,bF,au,bG) = {
562- let bI = valueOrErrorMessage(parseInt(bG), "withdraw: amount is not Int")
563- let bD = if (if (if (if (bf())
564- then bg()
811+@Callable(cz)
812+func depositWaves (cF) = {
813+ let cB = if (if (if (if (bT())
814+ then bU()
565815 else false)
566- then bj(bB.caller, "withdraw: invalid executor")
816+ then ad(cz.payments, 1, "depositWaves: no payment")
567817 else false)
568- then bk(bE, "withdraw: invalid caller")
818+ then ag(cz.payments[0], "depositWaves: invalid asset")
569819 else false)
570- then M(bI, 0, D, "withdraw: invalid amount")
820+ then Y((cz.payments[0].amount / 100), 0, O, "depositWaves: invalid amount")
571821 else false
572- if ((bD == bD))
822+ if ((cB == cB))
573823 then {
574- let bJ = bl(au)
575- let bT = at(au, bF)
576- let bL = bT._1
577- let bM = bT._2
578- let bN = az(bF)
579- let bU = bt(bF, bN)
580- let bw = bU._1
581- let bA = bU._2
582- let bP = (bL - toBigInt(bI))
583- let bV = M(toInt(bP), 0, D, "withdraw: insufficient token amount")
584- if ((bV == bV))
824+ let cG = (cz.payments[0].amount / 100)
825+ let dh = toString(cz.caller)
826+ let di = b
827+ let cH = ca(di)
828+ let dj = aI(di, dh)
829+ let cJ = dj._1
830+ let cK = dj._2
831+ let cL = aO(dh)
832+ let cM = aR(dh)
833+ let dk = cn(dh, cL, cM)
834+ let cr = dk._1
835+ let cO = dk._2
836+ let cy = dk._3
837+ let cP = (cJ + toBigInt(cG))
838+ let cQ = fraction(cP, cH, P, DOWN)
839+ let cR = ((cL - cK) + cQ)
840+ let cS = ((bl() - cK) + cQ)
841+ let cT = if ((cL == Q))
842+ then (bt() + R)
843+ else bt()
844+ let cU = if (if ((size(cF) > 0))
845+ then bP(cF)
846+ else false)
585847 then {
586- let bQ = fraction(bP, bJ, E, DOWN)
587- let bR = ((bN - bM) + bQ)
588- let bS = ((aU() - bM) + bQ)
589- $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) - toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), unit)
848+ let cV = bM(cF)
849+ let cW = fraction(toBigInt(cG), cH, P, DOWN)
850+ let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN)
851+ let cY = (cW - cX)
852+ let cZ = (cM + cX)
853+ let da = aR(cV)
854+ let db = (da + cY)
855+ let dc = (bD() + cW)
856+ let dl = cn(cV, aO(cV), da)
857+ let de = dl._1
858+ let df = dl._2
859+ let dg = dl._3
860+ (((de ++ aS(dh, cZ)) ++ aS(cV, db)) ++ bE(dc))
590861 }
862+ else nil
863+ let dm = invoke(bn(), L, nil, [AttachedPayment(unit, cz.payments[0].amount)])
864+ if ((dm == dm))
865+ then $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(b, (br(b) + toBigInt(cG)))) ++ aP(dh, cR)) ++ bu(cT)) ++ aM(di, dh, $Tuple2(cP, cQ))), cO)
591866 else throw("Strict value is not equal to itself.")
592867 }
593868 else throw("Strict value is not equal to itself.")
595870
596871
597872
598-@Callable(bB)
599-func depositWaves () = {
600- let bD = if (if (if (if (bf())
601- then bg()
873+@Callable(cz)
874+func withdrawWaves (cE) = {
875+ let cB = if (if (if (bT())
876+ then bU()
602877 else false)
603- then Q(bB.payments, 1, "depositWaves: no payment")
878+ then Y((cE / 100), 0, O, "withdrawWaves: invalid amount")
604879 else false)
605- then T(bB.payments[0], "depositWaves: invalid asset")
606- else false)
607- then M(bB.payments[0].amount, 0, D, "depositWaves: invalid amount")
880+ then if ((bf() >= toBigInt(height)))
881+ then throw("withdrawWaves: not allowed")
882+ else true
608883 else false
609- if ((bD == bD))
884+ if ((cB == cB))
610885 then {
611- let bI = bB.payments[0].amount
612- let bW = toString(bB.caller)
613- let bX = b
614- let bJ = bl(bX)
615- let bY = at(bX, bW)
616- let bL = bY._1
617- let bM = bY._2
618- let bN = az(bW)
619- let bZ = bt(bW, bN)
620- let bw = bZ._1
621- let bA = bZ._2
622- let bP = (bL + toBigInt(bI))
623- let bQ = fraction(bP, bJ, E, DOWN)
624- let bR = ((bN - bM) + bQ)
625- let bS = ((aU() - bM) + bQ)
626- let ca = invoke(aW(), A, nil, [AttachedPayment(unit, bI)])
627- if ((ca == ca))
628- then $Tuple2(((((bw ++ aV(bS)) ++ bb(b, (ba(b) + toBigInt(bI)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), bA)
629- else throw("Strict value is not equal to itself.")
630- }
631- else throw("Strict value is not equal to itself.")
632- }
633-
634-
635-
636-@Callable(bB)
637-func withdrawWaves (bG) = {
638- let bD = if (if (bf())
639- then bg()
640- else false)
641- then M(bG, 0, D, "withdrawWaves: invalid amount")
642- else false
643- if ((bD == bD))
644- then {
645- let bW = toString(bB.caller)
646- let bX = b
647- let bJ = bl(bX)
648- let cb = at(bX, bW)
649- let bL = cb._1
650- let bM = cb._2
651- let bN = az(bW)
652- let cc = bt(bW, bN)
653- let bw = cc._1
654- let bA = cc._2
655- let bP = (bL - toBigInt(bG))
656- let bV = M(toInt(bP), 0, D, "withdrawWaves: insufficient token amount")
657- if ((bV == bV))
886+ let dn = (cE / 100)
887+ let dh = toString(cz.caller)
888+ let di = b
889+ let cH = ca(di)
890+ let do = aI(di, dh)
891+ let cJ = do._1
892+ let cK = do._2
893+ let cL = aO(dh)
894+ let cM = aR(dh)
895+ let dp = cn(dh, cL, cM)
896+ let cr = dp._1
897+ let cO = dp._2
898+ let cy = dp._3
899+ let cP = (cJ - toBigInt(dn))
900+ let dq = Y(toInt(cP), 0, O, "withdrawWaves: insufficient token amount")
901+ if ((dq == dq))
658902 then {
659- let bQ = fraction(bP, bJ, E, DOWN)
660- let bR = ((bN - bM) + bQ)
661- let bS = ((aU() - bM) + bQ)
662- let cd = aW()
663- let ce = aZ(cd)
664- let ca = invoke(cd, B, nil, nil)
665- let cf = {
666- let K = ca
667- if ($isInstanceOf(K, "String"))
903+ let cQ = fraction(cP, cH, P, DOWN)
904+ let cR = ((cL - cK) + cQ)
905+ let cS = ((bl() - cK) + cQ)
906+ let dr = bn()
907+ let ds = bq(dr)
908+ let dm = invoke(dr, M, nil, nil)
909+ let dt = {
910+ let W = dm
911+ if ($isInstanceOf(W, "String"))
668912 then {
669- let L = K
670- parseBigIntValue(L)
913+ let X = W
914+ parseBigIntValue(X)
671915 }
672916 else throw("withdrawWaves: sWaves getRate() revert")
673917 }
674- let cg = toInt(fraction(toBigInt(bG), G, cf, CEILING))
675- let ch = invoke(cd, C, nil, [AttachedPayment(ce, cg)])
676- if ((ch == ch))
677- then $Tuple2(((((([ScriptTransfer(bB.caller, bG, unit)] ++ bw) ++ aV(bS)) ++ bb(b, (ba(b) - toBigInt(bG)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), unit)
918+ let du = toInt(fraction(toBigInt(cE), S, dt, CEILING))
919+ let dv = invoke(dr, N, nil, [AttachedPayment(ds, du)])
920+ if ((dv == dv))
921+ then $Tuple2(((((([ScriptTransfer(cz.caller, cE, unit)] ++ cr) ++ bm(cS)) ++ bs(b, (br(b) - toBigInt(dn)))) ++ aP(dh, cR)) ++ aM(di, dh, $Tuple2(cP, cQ))), unit)
678922 else throw("Strict value is not equal to itself.")
679923 }
680924 else throw("Strict value is not equal to itself.")
684928
685929
686930
687-@Callable(bB)
688-func startRetrodrop (bG,ci) = {
689- let bD = if (if (if (if (if (bc(bB.caller))
690- then bf()
931+@Callable(cz)
932+func startRetrodrop (dw,dx,dy,dz) = {
933+ let cB = if (if (if (if (if (if (if (bQ(cz.caller))
934+ then bT()
691935 else false)
692- then bg()
936+ then bU()
693937 else false)
694- then M(bG, 1, D, "startRetrodrop: invalid amount")
938+ then al(dw, "startRetrodrop: invalid units asset")
695939 else false)
696- then M(ci, 1, D, "startRetrodrop: invalid blocksAt")
940+ then Y(dx, 0, O, "startRetrodrop: invalid amountForLP")
697941 else false)
698- then V(aK(), F, "startRetrodrop: already started")
942+ then Y(dy, 0, O, "startRetrodrop: invalid amountForReferal")
943+ else false)
944+ then Y(dz, 1, O, "startRetrodrop: invalid blocksAt")
945+ else false)
946+ then ai(bd(), Q, "startRetrodrop: already started")
699947 else false
700- if ((bD == bD))
948+ if ((cB == cB))
701949 then {
702- let cj = toBigInt(height)
703- let ck = (cj + toBigInt(ci))
704- let cl = fraction(toBigInt(bG), E, toBigInt(ci))
705- $Tuple2(((aL(cj) ++ aN(ck)) ++ aP(cl)), unit)
950+ let dA = toBigInt(height)
951+ let dB = (dA + toBigInt(dz))
952+ let dq = if (((dx + dy) > assetBalance(this, fromBase58String(dw))))
953+ then throw("startRetrodrop: insufficient funds")
954+ else true
955+ if ((dq == dq))
956+ then $Tuple2(((((bc(fromBase58String(dw)) ++ be(dA)) ++ bg(dB)) ++ bA(toBigInt(dx))) ++ bC(toBigInt(dy))), unit)
957+ else throw("Strict value is not equal to itself.")
706958 }
707959 else throw("Strict value is not equal to itself.")
708960 }
709961
710962
711963
712-@Callable(bB)
713-func getUnits (av) = {
714- let cm = bt(av, az(av))
715- let cn = cm._1
716- let bA = cm._2
717- $Tuple2(nil, bA)
718- }
719-
720-
721-
722-@Callable(bB)
723-func updateCallerContract (bE) = {
724- let bD = if (bc(bB.caller))
725- then bf()
964+@Callable(cz)
965+func increaseUnitsSupply (dx,dy) = {
966+ let cB = if (if (if (if (bT())
967+ then bU()
968+ else false)
969+ then Y(dx, 0, O, "increaseUnitsSupply: invalid amountForLP")
970+ else false)
971+ then Y(dy, 0, O, "increaseUnitsSupply: invalid amountForReferal")
972+ else false)
973+ then ac(toBigInt(height), (bd() + R), (bf() - R), "increaseUnitsSupply: drop not active")
726974 else false
727- if ((bD == bD))
728- then $Tuple2(ar(bE), unit)
975+ if ((cB == cB))
976+ then {
977+ let dC = (bz() + toBigInt(dx))
978+ let dD = (bB() + toBigInt(dy))
979+ let dq = if (((dC + dD) > toBigInt(assetBalance(this, bb()))))
980+ then throw("increaseUnitsSupply: insufficient funds")
981+ else true
982+ if ((dq == dq))
983+ then $Tuple2((bA(dC) ++ bC(dD)), unit)
984+ else throw("Strict value is not equal to itself.")
985+ }
729986 else throw("Strict value is not equal to itself.")
730987 }
731988
732989
733990
734-@Callable(bB)
735-func pause () = {
736- let bD = if (if (bi(bB.caller))
737- then bf()
738- else false)
739- then bg()
991+@Callable(cz)
992+func checkpoint (aK) = {
993+ let dE = cn(aK, aO(aK), aR(aK))
994+ let dF = dE._1
995+ let cO = dE._2
996+ let cy = dE._3
997+ $Tuple2(dF, $Tuple2(cO, cy))
998+ }
999+
1000+
1001+
1002+@Callable(cz)
1003+func getUnits (aK) = {
1004+ let dG = cn(aK, aO(aK), aR(aK))
1005+ let dF = dG._1
1006+ let cO = dG._2
1007+ let cy = dG._3
1008+ $Tuple2(nil, $Tuple2(cO, cy))
1009+ }
1010+
1011+
1012+
1013+@Callable(cz)
1014+func setReferer (bN,U) = {
1015+ let cB = if (bX(cz.caller))
1016+ then bT()
7401017 else false
741- if ((bD == bD))
742- then $Tuple2(ac(true), unit)
1018+ if ((cB == cB))
1019+ then $Tuple2(bO(bN, U), unit)
7431020 else throw("Strict value is not equal to itself.")
7441021 }
7451022
7461023
7471024
748-@Callable(bB)
749-func unpause () = {
750- let bD = if (if (bi(bB.caller))
751- then bf()
1025+@Callable(cz)
1026+func setManager (bL) = {
1027+ let cB = if (if (bQ(cz.caller))
1028+ then bT()
7521029 else false)
753- then bh()
1030+ then T(bL, "setManager: invalid manager")
7541031 else false
755- if ((bD == bD))
756- then $Tuple2(ac(false), unit)
1032+ if ((cB == cB))
1033+ then $Tuple2(bK(addressFromStringValue(bL)), unit)
7571034 else throw("Strict value is not equal to itself.")
7581035 }
7591036
7601037
7611038
762-@Callable(bB)
763-func updatePauser (ag) = {
764- let bD = if (if (bc(bB.caller))
765- then bf()
766- else false)
767- then H(ag, "updatePauser: invalid pauser")
1039+@Callable(cz)
1040+func updateCallerContract (cC) = {
1041+ let cB = if (bQ(cz.caller))
1042+ then bT()
7681043 else false
769- if ((bD == bD))
770- then $Tuple2(af(addressFromStringValue(ag)), unit)
1044+ if ((cB == cB))
1045+ then $Tuple2(aG(cC), unit)
7711046 else throw("Strict value is not equal to itself.")
7721047 }
7731048
7741049
7751050
776-@Callable(bB)
777-func setMultisig (aj) = {
778- let bD = if (bc(bB.caller))
779- then H(aj, "setMultisig: invalid multisig")
1051+@Callable(cz)
1052+func pause () = {
1053+ let cB = if (if (bW(cz.caller))
1054+ then bT()
1055+ else false)
1056+ then bU()
7801057 else false
781- if ((bD == bD))
782- then $Tuple2(ai(addressFromStringValue(aj)), unit)
1058+ if ((cB == cB))
1059+ then $Tuple2(ar(true), unit)
7831060 else throw("Strict value is not equal to itself.")
7841061 }
7851062
7861063
787-@Verifier(co)
788-func cp () = {
789- let K = getString(c)
790- if ($isInstanceOf(K, "String"))
1064+
1065+@Callable(cz)
1066+func unpause () = {
1067+ let cB = if (if (bW(cz.caller))
1068+ then bT()
1069+ else false)
1070+ then bV()
1071+ else false
1072+ if ((cB == cB))
1073+ then $Tuple2(ar(false), unit)
1074+ else throw("Strict value is not equal to itself.")
1075+ }
1076+
1077+
1078+
1079+@Callable(cz)
1080+func updatePauser (av) = {
1081+ let cB = if (if (bQ(cz.caller))
1082+ then bT()
1083+ else false)
1084+ then T(av, "updatePauser: invalid pauser")
1085+ else false
1086+ if ((cB == cB))
1087+ then $Tuple2(au(addressFromStringValue(av)), unit)
1088+ else throw("Strict value is not equal to itself.")
1089+ }
1090+
1091+
1092+
1093+@Callable(cz)
1094+func setMultisig (ay) = {
1095+ let cB = if (bQ(cz.caller))
1096+ then T(ay, "setMultisig: invalid multisig")
1097+ else false
1098+ if ((cB == cB))
1099+ then $Tuple2(ax(addressFromStringValue(ay)), unit)
1100+ else throw("Strict value is not equal to itself.")
1101+ }
1102+
1103+
1104+@Verifier(dH)
1105+func dI () = {
1106+ let W = getString(c)
1107+ if ($isInstanceOf(W, "String"))
7911108 then {
792- let cq = K
793- valueOrElse(getBoolean(addressFromStringValue(cq), makeString([d, toString(this), toBase58String(co.id)], a)), false)
1109+ let dJ = W
1110+ valueOrElse(getBoolean(addressFromStringValue(dJ), makeString([d, toString(this), toBase58String(dH.id)], a)), false)
7941111 }
795- else sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
1112+ else sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey)
7961113 }
7971114
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "WAVES"
77
88 let c = "MULTISIG"
99
1010 let d = "STATUS"
1111
1212 let e = "INIT"
1313
1414 let f = "PAUSED"
1515
1616 let g = "PAUSER"
1717
18-let h = "EXECUTOR"
18+let h = "MANAGER"
1919
20-let i = "ORACLE"
20+let i = "REFERER"
2121
22-let j = "CALLER_CONTRACT"
22+let j = "EXECUTOR"
2323
24-let k = "PRICE"
24+let k = "ORACLE"
2525
26-let l = "USER_POSITION"
26+let l = "CALLER_CONTRACT"
2727
28-let m = "USER_USD_BALANCE"
28+let m = "PRICE"
2929
30-let n = "USER_UNITS_PER_USD_BALANCE_INTEGRAL"
30+let n = "UNITS_ASSET"
3131
32-let o = "USER_CHECKPOINT_AT"
32+let o = "USER_POSITION"
3333
34-let p = "USER_UNITS_BALANCE"
34+let p = "USER_USD_BALANCE"
3535
36-let q = "START_BLOCK"
36+let q = "USER_UNITS_PER_USD_BALANCE_INTEGRAL"
3737
38-let r = "FINISH_BLOCK"
38+let r = "USER_UNITS_PER_REFERAL_SHARE_INTEGRAL"
3939
40-let s = "UNITS_PER_BLOCK"
40+let s = "USER_CHECKPOINT_AT"
4141
42-let t = "TOTAL_USD_BALANCE"
42+let t = "USER_UNITS_BALANCE_DISTRIBUTED"
4343
44-let u = "UNITS_PER_USD_BALANCE_INTEGRAL"
44+let u = "USER_UNITS_SHARES_REFERAL"
4545
46-let v = "CHECKPOINT_AT"
46+let v = "USER_SHARES_REFERAL"
4747
48-let w = "UNITS_BALANCE"
48+let w = "START_BLOCK"
4949
50-let x = "TOKEN_BALANCE"
50+let x = "FINISH_BLOCK"
5151
52-let y = "SWAVES_CONTRACT"
52+let y = "TOTAL_UNITS_FOR_LP"
5353
54-let z = "ASSET"
54+let z = "TOTAL_UNITS_FOR_REFERAL"
5555
56-let A = "deposit"
56+let A = "TOTAL_USD_BALANCE"
5757
58-let B = "getRate"
58+let B = "UNITS_PER_USD_BALANCE_INTEGRAL"
5959
60-let C = "withdraw"
60+let C = "CHECKPOINT_AT"
6161
62-let D = 9223372036854775807
62+let D = "UNITS_BALANCE_DISTRIBUTED"
6363
64-let E = toBigInt(1000000000000)
64+let E = "TOKEN_BALANCE"
6565
66-let F = toBigInt(0)
66+let F = "USERS_COUNT"
6767
68-let G = toBigInt(1000000000000)
68+let G = "UNITS_PER_REFERAL_SHARE_INTEGRAL"
6969
70-func H (I,J) = {
71- let K = addressFromString(I)
72- if ($isInstanceOf(K, "Address"))
70+let H = "UNITS_SHARES_REFERAL"
71+
72+let I = "TOTAL_SHARES_REFERAL"
73+
74+let J = "SWAVES_CONTRACT"
75+
76+let K = "ASSET"
77+
78+let L = "deposit"
79+
80+let M = "getRate"
81+
82+let N = "withdraw"
83+
84+let O = 9223372036854775807
85+
86+let P = toBigInt(1000000000000)
87+
88+let Q = toBigInt(0)
89+
90+let R = toBigInt(1)
91+
92+let S = toBigInt(1000000000000)
93+
94+func T (U,V) = {
95+ let W = addressFromString(U)
96+ if ($isInstanceOf(W, "Address"))
7397 then {
74- let L = K
98+ let X = W
7599 true
76100 }
77- else throw(J)
101+ else throw(V)
78102 }
79103
80104
81-func M (N,O,P,J) = if (if ((O > N))
105+func Y (Z,aa,ab,V) = if (if ((aa > Z))
82106 then true
83- else (N > P))
84- then throw(J)
107+ else (Z > ab))
108+ then throw(V)
85109 else true
86110
87111
88-func Q (R,S,J) = if ((size(R) != S))
89- then throw(J)
112+func ac (Z,aa,ab,V) = if (if ((aa > Z))
113+ then true
114+ else (Z > ab))
115+ then throw(V)
90116 else true
91117
92118
93-func T (U,J) = {
94- let K = U.assetId
95- if ($isInstanceOf(K, "ByteVector"))
119+func ad (ae,af,V) = if ((size(ae) != af))
120+ then throw(V)
121+ else true
122+
123+
124+func ag (ah,V) = {
125+ let W = ah.assetId
126+ if ($isInstanceOf(W, "ByteVector"))
96127 then {
97- let L = K
98- throw(J)
128+ let X = W
129+ throw(V)
99130 }
100- else if ($isInstanceOf(K, "Unit"))
131+ else if ($isInstanceOf(W, "Unit"))
101132 then true
102133 else throw("Match error")
103134 }
104135
105136
106-func V (W,X,J) = if ((W != X))
107- then throw(J)
137+func ai (aj,ak,V) = if ((aj != ak))
138+ then throw(V)
108139 else true
109140
110141
111-func Y () = {
112- let K = getBoolean(e)
113- if ($isInstanceOf(K, "Boolean"))
142+func al (am,V) = {
143+ let W = assetInfo(fromBase58String(am))
144+ if ($isInstanceOf(W, "Asset"))
114145 then {
115- let L = K
116- L
146+ let X = W
147+ true
148+ }
149+ else throw(V)
150+ }
151+
152+
153+func an () = {
154+ let W = getBoolean(e)
155+ if ($isInstanceOf(W, "Boolean"))
156+ then {
157+ let X = W
158+ X
117159 }
118160 else false
119161 }
120162
121163
122-func Z (aa) = [BooleanEntry(e, aa)]
164+func ao (ap) = [BooleanEntry(e, ap)]
123165
124166
125-func ab () = {
126- let K = getBoolean(f)
127- if ($isInstanceOf(K, "Boolean"))
167+func aq () = {
168+ let W = getBoolean(f)
169+ if ($isInstanceOf(W, "Boolean"))
128170 then {
129- let L = K
130- L
171+ let X = W
172+ X
131173 }
132174 else false
133175 }
134176
135177
136-func ac (ad) = [BooleanEntry(f, ad)]
178+func ar (as) = [BooleanEntry(f, as)]
137179
138180
139-func ae () = {
140- let K = getString(g)
141- if ($isInstanceOf(K, "String"))
181+func at () = {
182+ let W = getString(g)
183+ if ($isInstanceOf(W, "String"))
142184 then {
143- let L = K
144- addressFromStringValue(L)
185+ let X = W
186+ addressFromStringValue(X)
145187 }
146188 else Address(base58'')
147189 }
148190
149191
150-func af (ag) = [StringEntry(g, toString(ag))]
192+func au (av) = [StringEntry(g, toString(av))]
151193
152194
153-func ah () = {
154- let K = getString(c)
155- if ($isInstanceOf(K, "String"))
195+func aw () = {
196+ let W = getString(c)
197+ if ($isInstanceOf(W, "String"))
156198 then {
157- let L = K
158- addressFromStringValue(L)
199+ let X = W
200+ addressFromStringValue(X)
159201 }
160202 else Address(base58'')
161203 }
162204
163205
164-func ai (aj) = [StringEntry(c, toString(aj))]
206+func ax (ay) = [StringEntry(c, toString(ay))]
165207
166208
167-func ak () = {
168- let K = getString(h)
169- if ($isInstanceOf(K, "String"))
209+func az () = {
210+ let W = getString(j)
211+ if ($isInstanceOf(W, "String"))
170212 then {
171- let L = K
172- addressFromStringValue(L)
213+ let X = W
214+ addressFromStringValue(X)
173215 }
174216 else Address(base58'')
175217 }
176218
177219
178-func al (am) = [StringEntry(h, toString(am))]
220+func aA (aB) = [StringEntry(j, toString(aB))]
179221
180222
181-func an () = {
182- let K = getString(i)
183- if ($isInstanceOf(K, "String"))
223+func aC () = {
224+ let W = getString(k)
225+ if ($isInstanceOf(W, "String"))
184226 then {
185- let L = K
186- addressFromStringValue(L)
227+ let X = W
228+ addressFromStringValue(X)
187229 }
188230 else Address(base58'')
189231 }
190232
191233
192-func ao (ap) = [StringEntry(i, toString(ap))]
234+func aD (aE) = [StringEntry(k, toString(aE))]
193235
194236
195-func aq () = {
196- let K = getString(j)
197- if ($isInstanceOf(K, "String"))
237+func aF () = {
238+ let W = getString(l)
239+ if ($isInstanceOf(W, "String"))
198240 then {
199- let L = K
200- L
241+ let X = W
242+ X
201243 }
202244 else ""
203245 }
204246
205247
206-func ar (as) = [StringEntry(j, as)]
248+func aG (aH) = [StringEntry(l, aH)]
207249
208250
209-func at (au,av) = {
210- let K = getString(makeString([l, au, av], a))
211- if ($isInstanceOf(K, "String"))
251+func aI (aJ,aK) = {
252+ let W = getString(makeString([o, aJ, aK], a))
253+ if ($isInstanceOf(W, "String"))
212254 then {
213- let L = K
214- let aw = split_51C(L, a)
215- $Tuple2(parseBigIntValue(aw[0]), parseBigIntValue(aw[1]))
255+ let X = W
256+ let aL = split_51C(X, a)
257+ $Tuple2(parseBigIntValue(aL[0]), parseBigIntValue(aL[1]))
216258 }
217- else $Tuple2(F, F)
259+ else $Tuple2(Q, Q)
218260 }
219261
220262
221-func ax (au,av,ay) = [StringEntry(makeString([l, au, av], a), makeString_11C([toString(ay._1), toString(ay._2)], a))]
263+func aM (aJ,aK,aN) = [StringEntry(makeString([o, aJ, aK], a), makeString_11C([toString(aN._1), toString(aN._2)], a))]
222264
223265
224-func az (av) = {
225- let K = getString(makeString([m, av], a))
226- if ($isInstanceOf(K, "String"))
266+func aO (aK) = {
267+ let W = getString(makeString([p, aK], a))
268+ if ($isInstanceOf(W, "String"))
227269 then {
228- let L = K
229- parseBigIntValue(L)
270+ let X = W
271+ parseBigIntValue(X)
230272 }
231- else F
273+ else Q
232274 }
233275
234276
235-func aA (av,aB) = [StringEntry(makeString([m, av], a), toString(aB))]
277+func aP (aK,aQ) = [StringEntry(makeString([p, aK], a), toString(aQ))]
236278
237279
238-func aC () = {
239- let K = getString(u)
240- if ($isInstanceOf(K, "String"))
280+func aR (aK) = {
281+ let W = getString(makeString([v, aK], a))
282+ if ($isInstanceOf(W, "String"))
241283 then {
242- let L = K
243- parseBigIntValue(L)
284+ let X = W
285+ parseBigIntValue(X)
244286 }
245- else F
287+ else Q
246288 }
247289
248290
249-func aD (aB) = [StringEntry(u, toString(aB))]
291+func aS (aK,aQ) = [StringEntry(makeString([v, aK], a), toString(aQ))]
250292
251293
252-func aE (av) = {
253- let K = getString(makeString([n, av], a))
254- if ($isInstanceOf(K, "String"))
294+func aT () = {
295+ let W = getString(B)
296+ if ($isInstanceOf(W, "String"))
255297 then {
256- let L = K
257- parseBigIntValue(L)
298+ let X = W
299+ parseBigIntValue(X)
258300 }
259- else F
301+ else Q
260302 }
261303
262304
263-func aF (av,aB) = [StringEntry(makeString([n, av], a), toString(aB))]
305+func aU (aQ) = [StringEntry(B, toString(aQ))]
264306
265307
266-func aG () = {
267- let K = getString(v)
268- if ($isInstanceOf(K, "String"))
308+func aV (aK) = {
309+ let W = getString(makeString([q, aK], a))
310+ if ($isInstanceOf(W, "String"))
269311 then {
270- let L = K
271- parseBigIntValue(L)
312+ let X = W
313+ parseBigIntValue(X)
272314 }
273- else F
315+ else Q
274316 }
275317
276318
277-func aH (aB) = [StringEntry(v, toString(aB))]
319+func aW (aK,aQ) = [StringEntry(makeString([q, aK], a), toString(aQ))]
278320
279321
280-func aI (av) = {
281- let K = getString(makeString([o, av], a))
282- if ($isInstanceOf(K, "String"))
322+func aX () = {
323+ let W = getString(C)
324+ if ($isInstanceOf(W, "String"))
283325 then {
284- let L = K
285- parseBigIntValue(L)
326+ let X = W
327+ parseBigIntValue(X)
286328 }
287- else F
329+ else Q
288330 }
289331
290332
291-func aJ (av,aB) = [StringEntry(makeString([o, av], a), toString(aB))]
333+func aY (aQ) = [StringEntry(C, toString(aQ))]
292334
293335
294-func aK () = {
295- let K = getString(q)
296- if ($isInstanceOf(K, "String"))
336+func aZ (aK) = {
337+ let W = getString(makeString([s, aK], a))
338+ if ($isInstanceOf(W, "String"))
297339 then {
298- let L = K
299- parseBigIntValue(L)
340+ let X = W
341+ parseBigIntValue(X)
300342 }
301- else F
343+ else Q
302344 }
303345
304346
305-func aL (aB) = [StringEntry(q, toString(aB))]
347+func ba (aK,aQ) = [StringEntry(makeString([s, aK], a), toString(aQ))]
306348
307349
308-func aM () = {
309- let K = getString(r)
310- if ($isInstanceOf(K, "String"))
350+func bb () = {
351+ let W = getString(n)
352+ if ($isInstanceOf(W, "String"))
311353 then {
312- let L = K
313- parseBigIntValue(L)
354+ let X = W
355+ fromBase58String(X)
314356 }
315- else F
357+ else base58''
316358 }
317359
318360
319-func aN (aB) = [StringEntry(r, toString(aB))]
361+func bc (am) = [StringEntry(n, toBase58String(am))]
320362
321363
322-func aO () = {
323- let K = getString(s)
324- if ($isInstanceOf(K, "String"))
364+func bd () = {
365+ let W = getString(w)
366+ if ($isInstanceOf(W, "String"))
325367 then {
326- let L = K
327- parseBigIntValue(L)
368+ let X = W
369+ parseBigIntValue(X)
328370 }
329- else F
371+ else Q
330372 }
331373
332374
333-func aP (aB) = [StringEntry(s, toString(aB))]
375+func be (aQ) = [StringEntry(w, toString(aQ))]
334376
335377
336-func aQ () = {
337- let K = getString(w)
338- if ($isInstanceOf(K, "String"))
378+func bf () = {
379+ let W = getString(x)
380+ if ($isInstanceOf(W, "String"))
339381 then {
340- let L = K
341- parseBigIntValue(L)
382+ let X = W
383+ parseBigIntValue(X)
342384 }
343- else F
385+ else Q
344386 }
345387
346388
347-func aR (aB) = [StringEntry(w, toString(aB))]
389+func bg (aQ) = [StringEntry(x, toString(aQ))]
348390
349391
350-func aS (av) = {
351- let K = getString(makeString([p, av], a))
352- if ($isInstanceOf(K, "String"))
392+func bh () = {
393+ let W = getString(D)
394+ if ($isInstanceOf(W, "String"))
353395 then {
354- let L = K
355- parseBigIntValue(L)
396+ let X = W
397+ parseBigIntValue(X)
356398 }
357- else F
399+ else Q
358400 }
359401
360402
361-func aT (av,aB) = [StringEntry(makeString([p, av], a), toString(aB))]
403+func bi (aQ) = [StringEntry(D, toString(aQ))]
362404
363405
364-func aU () = {
365- let K = getString(t)
366- if ($isInstanceOf(K, "String"))
406+func bj (aK) = {
407+ let W = getString(makeString([t, aK], a))
408+ if ($isInstanceOf(W, "String"))
367409 then {
368- let L = K
369- parseBigIntValue(L)
410+ let X = W
411+ parseBigIntValue(X)
370412 }
371- else F
413+ else Q
372414 }
373415
374416
375-func aV (aB) = [StringEntry(t, toString(aB))]
417+func bk (aK,aQ) = [StringEntry(makeString([t, aK], a), toString(aQ))]
376418
377419
378-func aW () = {
379- let K = getString(y)
380- if ($isInstanceOf(K, "String"))
420+func bl () = {
421+ let W = getString(A)
422+ if ($isInstanceOf(W, "String"))
381423 then {
382- let L = K
383- addressFromStringValue(L)
424+ let X = W
425+ parseBigIntValue(X)
426+ }
427+ else Q
428+ }
429+
430+
431+func bm (aQ) = [StringEntry(A, toString(aQ))]
432+
433+
434+func bn () = {
435+ let W = getString(J)
436+ if ($isInstanceOf(W, "String"))
437+ then {
438+ let X = W
439+ addressFromStringValue(X)
384440 }
385441 else Address(base58'')
386442 }
387443
388444
389-func aX (aY) = [StringEntry(y, toString(aY))]
445+func bo (bp) = [StringEntry(J, toString(bp))]
390446
391447
392-func aZ (aY) = {
393- let K = getString(aY, z)
394- if ($isInstanceOf(K, "String"))
448+func bq (bp) = {
449+ let W = getString(bp, K)
450+ if ($isInstanceOf(W, "String"))
395451 then {
396- let L = K
397- fromBase58String(L)
452+ let X = W
453+ fromBase58String(X)
398454 }
399455 else throw("_loadSWavesAsset: revert")
400456 }
401457
402458
403-func ba (au) = {
404- let K = getString(makeString([x, au], a))
405- if ($isInstanceOf(K, "String"))
459+func br (aJ) = {
460+ let W = getString(makeString([E, aJ], a))
461+ if ($isInstanceOf(W, "String"))
406462 then {
407- let L = K
408- parseBigIntValue(L)
463+ let X = W
464+ parseBigIntValue(X)
409465 }
410- else F
466+ else Q
411467 }
412468
413469
414-func bb (au,aB) = [StringEntry(makeString([x, au], a), toString(aB))]
470+func bs (aJ,aQ) = [StringEntry(makeString([E, aJ], a), toString(aQ))]
415471
416472
417-func bc (as) = if ((as != this))
473+func bt () = {
474+ let W = getString(F)
475+ if ($isInstanceOf(W, "String"))
476+ then {
477+ let X = W
478+ parseBigIntValue(X)
479+ }
480+ else Q
481+ }
482+
483+
484+func bu (aQ) = [StringEntry(F, toString(aQ))]
485+
486+
487+func bv () = {
488+ let W = getString(G)
489+ if ($isInstanceOf(W, "String"))
490+ then {
491+ let X = W
492+ parseBigIntValue(X)
493+ }
494+ else Q
495+ }
496+
497+
498+func bw (aQ) = [StringEntry(G, toString(aQ))]
499+
500+
501+func bx () = {
502+ let W = getString(H)
503+ if ($isInstanceOf(W, "String"))
504+ then {
505+ let X = W
506+ parseBigIntValue(X)
507+ }
508+ else Q
509+ }
510+
511+
512+func by (aQ) = [StringEntry(H, toString(aQ))]
513+
514+
515+func bz () = {
516+ let W = getString(y)
517+ if ($isInstanceOf(W, "String"))
518+ then {
519+ let X = W
520+ parseBigIntValue(X)
521+ }
522+ else Q
523+ }
524+
525+
526+func bA (aQ) = [StringEntry(y, toString(aQ))]
527+
528+
529+func bB () = {
530+ let W = getString(z)
531+ if ($isInstanceOf(W, "String"))
532+ then {
533+ let X = W
534+ parseBigIntValue(X)
535+ }
536+ else Q
537+ }
538+
539+
540+func bC (aQ) = [StringEntry(z, toString(aQ))]
541+
542+
543+func bD () = {
544+ let W = getString(I)
545+ if ($isInstanceOf(W, "String"))
546+ then {
547+ let X = W
548+ parseBigIntValue(X)
549+ }
550+ else Q
551+ }
552+
553+
554+func bE (aQ) = [StringEntry(I, toString(aQ))]
555+
556+
557+func bF (aK) = {
558+ let W = getString(makeString([r, aK], a))
559+ if ($isInstanceOf(W, "String"))
560+ then {
561+ let X = W
562+ parseBigIntValue(X)
563+ }
564+ else Q
565+ }
566+
567+
568+func bG (aK,aQ) = [StringEntry(makeString([r, aK], a), toString(aQ))]
569+
570+
571+func bH (aK) = {
572+ let W = getString(makeString([u, aK], a))
573+ if ($isInstanceOf(W, "String"))
574+ then {
575+ let X = W
576+ parseBigIntValue(X)
577+ }
578+ else Q
579+ }
580+
581+
582+func bI (aK,aQ) = [StringEntry(makeString([u, aK], a), toString(aQ))]
583+
584+
585+func bJ () = {
586+ let W = getString(h)
587+ if ($isInstanceOf(W, "String"))
588+ then {
589+ let X = W
590+ addressFromStringValue(X)
591+ }
592+ else Address(base58'')
593+ }
594+
595+
596+func bK (bL) = [StringEntry(h, toString(bL))]
597+
598+
599+func bM (bN) = {
600+ let W = getString(makeString([i, bN], a))
601+ if ($isInstanceOf(W, "String"))
602+ then {
603+ let X = W
604+ X
605+ }
606+ else throw("_loadReferer: revert")
607+ }
608+
609+
610+func bO (bN,U) = [StringEntry(makeString([i, bN], a), U)]
611+
612+
613+func bP (bN) = {
614+ let W = getString(makeString([i, bN], a))
615+ if ($isInstanceOf(W, "String"))
616+ then {
617+ let X = W
618+ true
619+ }
620+ else false
621+ }
622+
623+
624+func bQ (aH) = if ((aH != this))
418625 then throw("_onlyThisContract: revert")
419626 else true
420627
421628
422-func bd () = if ((ah() == Address(base58'')))
629+func bR () = if ((aw() == Address(base58'')))
423630 then throw("_whenMultisigSet: revert")
424631 else true
425632
426633
427-func be () = if (Y())
634+func bS () = if (an())
428635 then throw("_whenNotInitialized: revert")
429636 else true
430637
431638
432-func bf () = if (!(Y()))
639+func bT () = if (!(an()))
433640 then throw("_whenInitialized: revert")
434641 else true
435642
436643
437-func bg () = if (ab())
644+func bU () = if (aq())
438645 then throw("_whenNotPaused: revert")
439646 else true
440647
441648
442-func bh () = if (!(ab()))
649+func bV () = if (!(aq()))
443650 then throw("_whenPaused: revert")
444651 else true
445652
446653
447-func bi (as) = if ((as != ae()))
654+func bW (aH) = if ((aH != at()))
448655 then throw("_onlyPauser: revert")
449656 else true
450657
451658
452-func bj (N,J) = if ((N != ak()))
453- then throw(J)
659+func bX (aH) = if ((aH != bJ()))
660+ then throw("_onlyManager: revert")
454661 else true
455662
456663
457-func bk (N,J) = if ((N != aq()))
458- then throw(J)
664+func bY (Z,V) = if ((Z != az()))
665+ then throw(V)
459666 else true
460667
461668
462-func bl (au) = {
463- let K = getString(an(), makeString([k, au], a))
464- if ($isInstanceOf(K, "String"))
669+func bZ (Z,V) = if ((Z != aF()))
670+ then throw(V)
671+ else true
672+
673+
674+func ca (aJ) = {
675+ let W = getString(aC(), makeString([m, aJ], a))
676+ if ($isInstanceOf(W, "String"))
465677 then {
466- let L = K
467- parseBigIntValue(L)
678+ let X = W
679+ parseBigIntValue(X)
468680 }
469- else throw(("_getTokenRate: no rate for token=" + au))
681+ else throw(("_getTokenRate: no rate for token=" + aJ))
470682 }
471683
472684
473-func bm () = {
474- let bn = aC()
475- let bo = max([aK(), aG()])
476- let bp = aQ()
477- let bq = min([toBigInt(height), aM()])
478- if ((bo >= bq))
479- then $Tuple2(nil, bn)
685+func cb () = {
686+ let cc = aT()
687+ let cd = max([bd(), aX()])
688+ let ce = bh()
689+ let cf = bv()
690+ let cg = bx()
691+ let ch = min([toBigInt(height), bf()])
692+ if ((cd >= ch))
693+ then $Tuple3(nil, cc, cf)
480694 else {
481- let br = (aO() * (bq - aK()))
482- let bs = ((((E * (bq - bo)) * (br - bp)) / aU()) + bn)
483- $Tuple2(((aD(bs) ++ aH(bq)) ++ aR(br)), bs)
695+ let ci = fraction((bz() - ce), (ch - cd), (bf() - cd))
696+ let cj = (((P * ci) / bl()) + cc)
697+ let ck = if ((bD() > Q))
698+ then {
699+ let cl = fraction((bB() - cg), (ch - cd), (bf() - cd))
700+ let cm = (((P * cl) / bD()) + cf)
701+ $Tuple2(cl, cm)
702+ }
703+ else $Tuple2(Q, Q)
704+ let cl = ck._1
705+ let cm = ck._2
706+ $Tuple3(((((aY(ch) ++ aU(cj)) ++ bi((ci + ce))) ++ bw(cm)) ++ by((cl + cg))), cj, cm)
484707 }
485708 }
486709
487710
488-func bt (av,bu) = {
489- let bv = bm()
490- let bw = bv._1
491- let bs = bv._2
492- let bx = aE(av)
493- let by = max([aK(), aI(av)])
494- let bz = aS(av)
495- let bq = min([toBigInt(height), aM()])
496- if ((by >= bq))
497- then $Tuple2(bw, bz)
711+func cn (aK,co,cp) = {
712+ let cq = cb()
713+ let cr = cq._1
714+ let cj = cq._2
715+ let cm = cq._3
716+ let cs = aV(aK)
717+ let ct = max([bd(), aZ(aK)])
718+ let cu = bj(aK)
719+ let cv = bF(aK)
720+ let cw = bH(aK)
721+ let ch = min([toBigInt(height), bf()])
722+ if ((ct >= ch))
723+ then $Tuple3(cr, cu, cw)
498724 else {
499- let bA = ((((bu * (bs - bx)) / (bq - by)) / E) + bz)
500- $Tuple2((((bw ++ aF(av, bs)) ++ aJ(av, bq)) ++ aT(av, bA)), bA)
725+ let cx = (((co * (cj - cs)) / P) + cu)
726+ let cy = (((cp * (cm - cv)) / P) + cw)
727+ $Tuple3((((((cr ++ ba(aK, ch)) ++ aW(aK, cj)) ++ bk(aK, cx)) ++ bG(aK, cm)) ++ bI(aK, cy)), cx, cy)
501728 }
502729 }
503730
504731
505-@Callable(bB)
506-func init (am,ap,ag,bC) = {
507- let bD = if (if (if (if (if (if (bc(bB.caller))
508- then be()
732+@Callable(cz)
733+func init (aB,aE,av,cA) = {
734+ let cB = if (if (if (if (if (if (bQ(cz.caller))
735+ then bS()
509736 else false)
510- then bd()
737+ then bR()
511738 else false)
512- then H(am, "init: invalid executor")
739+ then T(aB, "init: invalid executor")
513740 else false)
514- then H(ap, "init: invalid oracle")
741+ then T(aE, "init: invalid oracle")
515742 else false)
516- then H(ag, "init: invalid pauser")
743+ then T(av, "init: invalid pauser")
517744 else false)
518- then H(bC, "init: invalid sWavesContract")
745+ then T(cA, "init: invalid sWavesContract")
519746 else false
520- if ((bD == bD))
521- then $Tuple2(((((Z(true) ++ al(addressFromStringValue(am))) ++ ao(addressFromStringValue(ap))) ++ af(addressFromStringValue(ag))) ++ aX(addressFromStringValue(bC))), unit)
747+ if ((cB == cB))
748+ then $Tuple2(((((ao(true) ++ aA(addressFromStringValue(aB))) ++ aD(addressFromStringValue(aE))) ++ au(addressFromStringValue(av))) ++ bo(addressFromStringValue(cA))), unit)
522749 else throw("Strict value is not equal to itself.")
523750 }
524751
525752
526753
527-@Callable(bB)
528-func deposit (bE,bF,au,bG,bH) = {
529- let bI = valueOrErrorMessage(parseInt(bG), "deposit: amount is not Int")
530- let bD = if (if (if (if (bf())
531- then bg()
754+@Callable(cz)
755+func deposit (cC,cD,aJ,cE,cF) = {
756+ let cG = valueOrErrorMessage(parseInt(cE), "deposit: amount is not Int")
757+ let cB = if (if (if (if (bT())
758+ then bU()
532759 else false)
533- then bj(bB.caller, "deposit: invalid executor")
760+ then bY(cz.caller, "deposit: invalid executor")
534761 else false)
535- then bk(bE, "deposit: invalid caller")
762+ then bZ(cC, "deposit: invalid caller")
536763 else false)
537- then M(bI, 0, D, "deposit: invalid amount")
764+ then Y(cG, 0, O, "deposit: invalid amount")
538765 else false
539- if ((bD == bD))
766+ if ((cB == cB))
540767 then {
541- let bJ = bl(au)
542- let bK = at(au, bF)
543- let bL = bK._1
544- let bM = bK._2
545- let bN = az(bF)
546- let bO = bt(bF, bN)
547- let bw = bO._1
548- let bA = bO._2
549- let bP = (bL + toBigInt(bI))
550- let bQ = fraction(bP, bJ, E, DOWN)
551- let bR = ((bN - bM) + bQ)
552- let bS = ((aU() - bM) + bQ)
553- $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) + toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), bA)
768+ let cH = ca(aJ)
769+ let cI = aI(aJ, cD)
770+ let cJ = cI._1
771+ let cK = cI._2
772+ let cL = aO(cD)
773+ let cM = aR(cD)
774+ let cN = cn(cD, cL, cM)
775+ let cr = cN._1
776+ let cO = cN._2
777+ let cy = cN._3
778+ let cP = (cJ + toBigInt(cG))
779+ let cQ = fraction(cP, cH, P, DOWN)
780+ let cR = ((cL - cK) + cQ)
781+ let cS = ((bl() - cK) + cQ)
782+ let cT = if ((cL == Q))
783+ then (bt() + R)
784+ else bt()
785+ let cU = if (if ((size(cF) > 0))
786+ then bP(cF)
787+ else false)
788+ then {
789+ let cV = bM(cF)
790+ let cW = fraction(toBigInt(cG), cH, P, DOWN)
791+ let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN)
792+ let cY = (cW - cX)
793+ let cZ = (cM + cX)
794+ let da = aR(cV)
795+ let db = (da + cY)
796+ let dc = (bD() + cW)
797+ let dd = cn(cV, aO(cV), da)
798+ let de = dd._1
799+ let df = dd._2
800+ let dg = dd._3
801+ (((de ++ aS(cD, cZ)) ++ aS(cV, db)) ++ bE(dc))
802+ }
803+ else nil
804+ $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(aJ, (br(aJ) + toBigInt(cG)))) ++ aP(cD, cR)) ++ bu(cT)) ++ aM(aJ, cD, $Tuple2(cP, cQ))), cO)
554805 }
555806 else throw("Strict value is not equal to itself.")
556807 }
557808
558809
559810
560-@Callable(bB)
561-func withdraw (bE,bF,au,bG) = {
562- let bI = valueOrErrorMessage(parseInt(bG), "withdraw: amount is not Int")
563- let bD = if (if (if (if (bf())
564- then bg()
811+@Callable(cz)
812+func depositWaves (cF) = {
813+ let cB = if (if (if (if (bT())
814+ then bU()
565815 else false)
566- then bj(bB.caller, "withdraw: invalid executor")
816+ then ad(cz.payments, 1, "depositWaves: no payment")
567817 else false)
568- then bk(bE, "withdraw: invalid caller")
818+ then ag(cz.payments[0], "depositWaves: invalid asset")
569819 else false)
570- then M(bI, 0, D, "withdraw: invalid amount")
820+ then Y((cz.payments[0].amount / 100), 0, O, "depositWaves: invalid amount")
571821 else false
572- if ((bD == bD))
822+ if ((cB == cB))
573823 then {
574- let bJ = bl(au)
575- let bT = at(au, bF)
576- let bL = bT._1
577- let bM = bT._2
578- let bN = az(bF)
579- let bU = bt(bF, bN)
580- let bw = bU._1
581- let bA = bU._2
582- let bP = (bL - toBigInt(bI))
583- let bV = M(toInt(bP), 0, D, "withdraw: insufficient token amount")
584- if ((bV == bV))
824+ let cG = (cz.payments[0].amount / 100)
825+ let dh = toString(cz.caller)
826+ let di = b
827+ let cH = ca(di)
828+ let dj = aI(di, dh)
829+ let cJ = dj._1
830+ let cK = dj._2
831+ let cL = aO(dh)
832+ let cM = aR(dh)
833+ let dk = cn(dh, cL, cM)
834+ let cr = dk._1
835+ let cO = dk._2
836+ let cy = dk._3
837+ let cP = (cJ + toBigInt(cG))
838+ let cQ = fraction(cP, cH, P, DOWN)
839+ let cR = ((cL - cK) + cQ)
840+ let cS = ((bl() - cK) + cQ)
841+ let cT = if ((cL == Q))
842+ then (bt() + R)
843+ else bt()
844+ let cU = if (if ((size(cF) > 0))
845+ then bP(cF)
846+ else false)
585847 then {
586- let bQ = fraction(bP, bJ, E, DOWN)
587- let bR = ((bN - bM) + bQ)
588- let bS = ((aU() - bM) + bQ)
589- $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) - toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), unit)
848+ let cV = bM(cF)
849+ let cW = fraction(toBigInt(cG), cH, P, DOWN)
850+ let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN)
851+ let cY = (cW - cX)
852+ let cZ = (cM + cX)
853+ let da = aR(cV)
854+ let db = (da + cY)
855+ let dc = (bD() + cW)
856+ let dl = cn(cV, aO(cV), da)
857+ let de = dl._1
858+ let df = dl._2
859+ let dg = dl._3
860+ (((de ++ aS(dh, cZ)) ++ aS(cV, db)) ++ bE(dc))
590861 }
862+ else nil
863+ let dm = invoke(bn(), L, nil, [AttachedPayment(unit, cz.payments[0].amount)])
864+ if ((dm == dm))
865+ then $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(b, (br(b) + toBigInt(cG)))) ++ aP(dh, cR)) ++ bu(cT)) ++ aM(di, dh, $Tuple2(cP, cQ))), cO)
591866 else throw("Strict value is not equal to itself.")
592867 }
593868 else throw("Strict value is not equal to itself.")
594869 }
595870
596871
597872
598-@Callable(bB)
599-func depositWaves () = {
600- let bD = if (if (if (if (bf())
601- then bg()
873+@Callable(cz)
874+func withdrawWaves (cE) = {
875+ let cB = if (if (if (bT())
876+ then bU()
602877 else false)
603- then Q(bB.payments, 1, "depositWaves: no payment")
878+ then Y((cE / 100), 0, O, "withdrawWaves: invalid amount")
604879 else false)
605- then T(bB.payments[0], "depositWaves: invalid asset")
606- else false)
607- then M(bB.payments[0].amount, 0, D, "depositWaves: invalid amount")
880+ then if ((bf() >= toBigInt(height)))
881+ then throw("withdrawWaves: not allowed")
882+ else true
608883 else false
609- if ((bD == bD))
884+ if ((cB == cB))
610885 then {
611- let bI = bB.payments[0].amount
612- let bW = toString(bB.caller)
613- let bX = b
614- let bJ = bl(bX)
615- let bY = at(bX, bW)
616- let bL = bY._1
617- let bM = bY._2
618- let bN = az(bW)
619- let bZ = bt(bW, bN)
620- let bw = bZ._1
621- let bA = bZ._2
622- let bP = (bL + toBigInt(bI))
623- let bQ = fraction(bP, bJ, E, DOWN)
624- let bR = ((bN - bM) + bQ)
625- let bS = ((aU() - bM) + bQ)
626- let ca = invoke(aW(), A, nil, [AttachedPayment(unit, bI)])
627- if ((ca == ca))
628- then $Tuple2(((((bw ++ aV(bS)) ++ bb(b, (ba(b) + toBigInt(bI)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), bA)
629- else throw("Strict value is not equal to itself.")
630- }
631- else throw("Strict value is not equal to itself.")
632- }
633-
634-
635-
636-@Callable(bB)
637-func withdrawWaves (bG) = {
638- let bD = if (if (bf())
639- then bg()
640- else false)
641- then M(bG, 0, D, "withdrawWaves: invalid amount")
642- else false
643- if ((bD == bD))
644- then {
645- let bW = toString(bB.caller)
646- let bX = b
647- let bJ = bl(bX)
648- let cb = at(bX, bW)
649- let bL = cb._1
650- let bM = cb._2
651- let bN = az(bW)
652- let cc = bt(bW, bN)
653- let bw = cc._1
654- let bA = cc._2
655- let bP = (bL - toBigInt(bG))
656- let bV = M(toInt(bP), 0, D, "withdrawWaves: insufficient token amount")
657- if ((bV == bV))
886+ let dn = (cE / 100)
887+ let dh = toString(cz.caller)
888+ let di = b
889+ let cH = ca(di)
890+ let do = aI(di, dh)
891+ let cJ = do._1
892+ let cK = do._2
893+ let cL = aO(dh)
894+ let cM = aR(dh)
895+ let dp = cn(dh, cL, cM)
896+ let cr = dp._1
897+ let cO = dp._2
898+ let cy = dp._3
899+ let cP = (cJ - toBigInt(dn))
900+ let dq = Y(toInt(cP), 0, O, "withdrawWaves: insufficient token amount")
901+ if ((dq == dq))
658902 then {
659- let bQ = fraction(bP, bJ, E, DOWN)
660- let bR = ((bN - bM) + bQ)
661- let bS = ((aU() - bM) + bQ)
662- let cd = aW()
663- let ce = aZ(cd)
664- let ca = invoke(cd, B, nil, nil)
665- let cf = {
666- let K = ca
667- if ($isInstanceOf(K, "String"))
903+ let cQ = fraction(cP, cH, P, DOWN)
904+ let cR = ((cL - cK) + cQ)
905+ let cS = ((bl() - cK) + cQ)
906+ let dr = bn()
907+ let ds = bq(dr)
908+ let dm = invoke(dr, M, nil, nil)
909+ let dt = {
910+ let W = dm
911+ if ($isInstanceOf(W, "String"))
668912 then {
669- let L = K
670- parseBigIntValue(L)
913+ let X = W
914+ parseBigIntValue(X)
671915 }
672916 else throw("withdrawWaves: sWaves getRate() revert")
673917 }
674- let cg = toInt(fraction(toBigInt(bG), G, cf, CEILING))
675- let ch = invoke(cd, C, nil, [AttachedPayment(ce, cg)])
676- if ((ch == ch))
677- then $Tuple2(((((([ScriptTransfer(bB.caller, bG, unit)] ++ bw) ++ aV(bS)) ++ bb(b, (ba(b) - toBigInt(bG)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), unit)
918+ let du = toInt(fraction(toBigInt(cE), S, dt, CEILING))
919+ let dv = invoke(dr, N, nil, [AttachedPayment(ds, du)])
920+ if ((dv == dv))
921+ then $Tuple2(((((([ScriptTransfer(cz.caller, cE, unit)] ++ cr) ++ bm(cS)) ++ bs(b, (br(b) - toBigInt(dn)))) ++ aP(dh, cR)) ++ aM(di, dh, $Tuple2(cP, cQ))), unit)
678922 else throw("Strict value is not equal to itself.")
679923 }
680924 else throw("Strict value is not equal to itself.")
681925 }
682926 else throw("Strict value is not equal to itself.")
683927 }
684928
685929
686930
687-@Callable(bB)
688-func startRetrodrop (bG,ci) = {
689- let bD = if (if (if (if (if (bc(bB.caller))
690- then bf()
931+@Callable(cz)
932+func startRetrodrop (dw,dx,dy,dz) = {
933+ let cB = if (if (if (if (if (if (if (bQ(cz.caller))
934+ then bT()
691935 else false)
692- then bg()
936+ then bU()
693937 else false)
694- then M(bG, 1, D, "startRetrodrop: invalid amount")
938+ then al(dw, "startRetrodrop: invalid units asset")
695939 else false)
696- then M(ci, 1, D, "startRetrodrop: invalid blocksAt")
940+ then Y(dx, 0, O, "startRetrodrop: invalid amountForLP")
697941 else false)
698- then V(aK(), F, "startRetrodrop: already started")
942+ then Y(dy, 0, O, "startRetrodrop: invalid amountForReferal")
943+ else false)
944+ then Y(dz, 1, O, "startRetrodrop: invalid blocksAt")
945+ else false)
946+ then ai(bd(), Q, "startRetrodrop: already started")
699947 else false
700- if ((bD == bD))
948+ if ((cB == cB))
701949 then {
702- let cj = toBigInt(height)
703- let ck = (cj + toBigInt(ci))
704- let cl = fraction(toBigInt(bG), E, toBigInt(ci))
705- $Tuple2(((aL(cj) ++ aN(ck)) ++ aP(cl)), unit)
950+ let dA = toBigInt(height)
951+ let dB = (dA + toBigInt(dz))
952+ let dq = if (((dx + dy) > assetBalance(this, fromBase58String(dw))))
953+ then throw("startRetrodrop: insufficient funds")
954+ else true
955+ if ((dq == dq))
956+ then $Tuple2(((((bc(fromBase58String(dw)) ++ be(dA)) ++ bg(dB)) ++ bA(toBigInt(dx))) ++ bC(toBigInt(dy))), unit)
957+ else throw("Strict value is not equal to itself.")
706958 }
707959 else throw("Strict value is not equal to itself.")
708960 }
709961
710962
711963
712-@Callable(bB)
713-func getUnits (av) = {
714- let cm = bt(av, az(av))
715- let cn = cm._1
716- let bA = cm._2
717- $Tuple2(nil, bA)
718- }
719-
720-
721-
722-@Callable(bB)
723-func updateCallerContract (bE) = {
724- let bD = if (bc(bB.caller))
725- then bf()
964+@Callable(cz)
965+func increaseUnitsSupply (dx,dy) = {
966+ let cB = if (if (if (if (bT())
967+ then bU()
968+ else false)
969+ then Y(dx, 0, O, "increaseUnitsSupply: invalid amountForLP")
970+ else false)
971+ then Y(dy, 0, O, "increaseUnitsSupply: invalid amountForReferal")
972+ else false)
973+ then ac(toBigInt(height), (bd() + R), (bf() - R), "increaseUnitsSupply: drop not active")
726974 else false
727- if ((bD == bD))
728- then $Tuple2(ar(bE), unit)
975+ if ((cB == cB))
976+ then {
977+ let dC = (bz() + toBigInt(dx))
978+ let dD = (bB() + toBigInt(dy))
979+ let dq = if (((dC + dD) > toBigInt(assetBalance(this, bb()))))
980+ then throw("increaseUnitsSupply: insufficient funds")
981+ else true
982+ if ((dq == dq))
983+ then $Tuple2((bA(dC) ++ bC(dD)), unit)
984+ else throw("Strict value is not equal to itself.")
985+ }
729986 else throw("Strict value is not equal to itself.")
730987 }
731988
732989
733990
734-@Callable(bB)
735-func pause () = {
736- let bD = if (if (bi(bB.caller))
737- then bf()
738- else false)
739- then bg()
991+@Callable(cz)
992+func checkpoint (aK) = {
993+ let dE = cn(aK, aO(aK), aR(aK))
994+ let dF = dE._1
995+ let cO = dE._2
996+ let cy = dE._3
997+ $Tuple2(dF, $Tuple2(cO, cy))
998+ }
999+
1000+
1001+
1002+@Callable(cz)
1003+func getUnits (aK) = {
1004+ let dG = cn(aK, aO(aK), aR(aK))
1005+ let dF = dG._1
1006+ let cO = dG._2
1007+ let cy = dG._3
1008+ $Tuple2(nil, $Tuple2(cO, cy))
1009+ }
1010+
1011+
1012+
1013+@Callable(cz)
1014+func setReferer (bN,U) = {
1015+ let cB = if (bX(cz.caller))
1016+ then bT()
7401017 else false
741- if ((bD == bD))
742- then $Tuple2(ac(true), unit)
1018+ if ((cB == cB))
1019+ then $Tuple2(bO(bN, U), unit)
7431020 else throw("Strict value is not equal to itself.")
7441021 }
7451022
7461023
7471024
748-@Callable(bB)
749-func unpause () = {
750- let bD = if (if (bi(bB.caller))
751- then bf()
1025+@Callable(cz)
1026+func setManager (bL) = {
1027+ let cB = if (if (bQ(cz.caller))
1028+ then bT()
7521029 else false)
753- then bh()
1030+ then T(bL, "setManager: invalid manager")
7541031 else false
755- if ((bD == bD))
756- then $Tuple2(ac(false), unit)
1032+ if ((cB == cB))
1033+ then $Tuple2(bK(addressFromStringValue(bL)), unit)
7571034 else throw("Strict value is not equal to itself.")
7581035 }
7591036
7601037
7611038
762-@Callable(bB)
763-func updatePauser (ag) = {
764- let bD = if (if (bc(bB.caller))
765- then bf()
766- else false)
767- then H(ag, "updatePauser: invalid pauser")
1039+@Callable(cz)
1040+func updateCallerContract (cC) = {
1041+ let cB = if (bQ(cz.caller))
1042+ then bT()
7681043 else false
769- if ((bD == bD))
770- then $Tuple2(af(addressFromStringValue(ag)), unit)
1044+ if ((cB == cB))
1045+ then $Tuple2(aG(cC), unit)
7711046 else throw("Strict value is not equal to itself.")
7721047 }
7731048
7741049
7751050
776-@Callable(bB)
777-func setMultisig (aj) = {
778- let bD = if (bc(bB.caller))
779- then H(aj, "setMultisig: invalid multisig")
1051+@Callable(cz)
1052+func pause () = {
1053+ let cB = if (if (bW(cz.caller))
1054+ then bT()
1055+ else false)
1056+ then bU()
7801057 else false
781- if ((bD == bD))
782- then $Tuple2(ai(addressFromStringValue(aj)), unit)
1058+ if ((cB == cB))
1059+ then $Tuple2(ar(true), unit)
7831060 else throw("Strict value is not equal to itself.")
7841061 }
7851062
7861063
787-@Verifier(co)
788-func cp () = {
789- let K = getString(c)
790- if ($isInstanceOf(K, "String"))
1064+
1065+@Callable(cz)
1066+func unpause () = {
1067+ let cB = if (if (bW(cz.caller))
1068+ then bT()
1069+ else false)
1070+ then bV()
1071+ else false
1072+ if ((cB == cB))
1073+ then $Tuple2(ar(false), unit)
1074+ else throw("Strict value is not equal to itself.")
1075+ }
1076+
1077+
1078+
1079+@Callable(cz)
1080+func updatePauser (av) = {
1081+ let cB = if (if (bQ(cz.caller))
1082+ then bT()
1083+ else false)
1084+ then T(av, "updatePauser: invalid pauser")
1085+ else false
1086+ if ((cB == cB))
1087+ then $Tuple2(au(addressFromStringValue(av)), unit)
1088+ else throw("Strict value is not equal to itself.")
1089+ }
1090+
1091+
1092+
1093+@Callable(cz)
1094+func setMultisig (ay) = {
1095+ let cB = if (bQ(cz.caller))
1096+ then T(ay, "setMultisig: invalid multisig")
1097+ else false
1098+ if ((cB == cB))
1099+ then $Tuple2(ax(addressFromStringValue(ay)), unit)
1100+ else throw("Strict value is not equal to itself.")
1101+ }
1102+
1103+
1104+@Verifier(dH)
1105+func dI () = {
1106+ let W = getString(c)
1107+ if ($isInstanceOf(W, "String"))
7911108 then {
792- let cq = K
793- valueOrElse(getBoolean(addressFromStringValue(cq), makeString([d, toString(this), toBase58String(co.id)], a)), false)
1109+ let dJ = W
1110+ valueOrElse(getBoolean(addressFromStringValue(dJ), makeString([d, toString(this), toBase58String(dH.id)], a)), false)
7941111 }
795- else sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
1112+ else sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey)
7961113 }
7971114

github/deemru/w8io/c3f4982 
777.40 ms