tx · DFGgByrUGKfhXoGKggvZCC1NjhiFkCW6K6ixAS3Cy7Vz

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.01800000 Waves

2023.09.21 20:55 [2765466] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "DFGgByrUGKfhXoGKggvZCC1NjhiFkCW6K6ixAS3Cy7Vz", "fee": 1800000, "feeAssetId": null, "timestamp": 1695318922265, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "37aVJbnFNYgGzsfyEfynnVcv9wENsH2qtiRhta6e4VqtRu3JFUbduWRaJYLso6goBWachLYQkAMHNyaMKiLe57K9" ], "script": "base64:BgIiCAISBgoECAgICBIDCgEBEgMKAQESABIDCgEIEgUKAwgIAV8AAk02AMCEPQACTTgAgMLXLwAITUlMTElPTjYAgIDpg7HeFgAOTUFSS0VUSU5HU0hBUkUAoI0GAAlURUFNU0hBUkUAwJoMAA1BQ1RJVklUWVNIQVJFAKCNBgALUExBWUVSU0hBUkUAgLUYAApZRUFSTUlMTElTAICG68d1AAlDSEVDS1RJTUUAgMngq7ABAANEQVkAgLiZKQAQbWFya2V0aW5nQWRkcktleQINbWFya2V0aW5nQWRkcgALdGVhbUFkZHJLZXkCCHRlYW1BZGRyABRsYXN0TWFya2V0aW5nVGltZUtleQIZbGFzdENsYWltZWRUaW1lX21hcmtldGluZwAWbWFya2V0aW5nQW1vdW50TGVmdEtleQITbWFya2V0aW5nQW1vdW50TGVmdAAPbGFzdFRlYW1UaW1lS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQARdGVhbUFtb3VudExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABVsYXN0QWN0aXZpdGllc1RpbWVLZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzABBhY3RBbW91bnRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARhrZXlMYXN0Q2xhaW1lZFRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQZwZXJpb2QJAGsDBQhNSUxMSU9ONgkAaAIFC1BMQVlFUlNIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFAk02AA93bGdJc3N1ZVRpbWVLZXkCDXdsZ19pc3N1ZVRpbWUAEndsZ0lzc3VlZEFtb3VudEtleQIQd2xnX2lzc3VlZEFtb3VudAARemJJc3N1ZWRBbW91bnRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABNhY3Jlc1N0YWtlZFRvdGFsS2V5AhZhY3Jlc1N0YWtlZEFtb3VudFRvdGFsAAxpZHhXbGdBbW91bnQAAAALaWR4V2xnUHJpY2UAAQALaWR4V2xnRnVuZHMAAgAPaWR4V2xnSXNzdWVUaW1lAAcAFWlkeFdsZ01hcmtldGluZ0FtTGVmdAAKABlpZHhXbGdNYXJrZXRpbmdBbUF2YWlsTm93AAsAEGlkeFdsZ1RlYW1BbUxlZnQADgAUaWR4V2xnVGVhbUFtQXZhaWxOb3cADwAPaWR4V2xnQWN0QW1MZWZ0ABIAE2lkeFdsZ0FjdEFtQXZhaWxOb3cAEwARaWR4V2xnQW1MZWZ0VG90YWwAFgAUaWR4V2xnVXNlckFtQXZhaWxOb3cAGQAUaWR4V2xnVXNlclRvdGFsQXZhaWwAHAARaWR4V2xnRWZmVXNlclRpbWUAHQAIZGFwcFJlc3QAAAALZGFwcFN0YWtpbmcAAQALZGFwcEVjb25vbXkAAgAHZGFwcFdsZwADAApkYXBwUHV6emxlAAQADmRhcHBJbnZlc3RGdW5kAAUACWRhcHBBY3JlcwAGAQhnZXRMYW5kcwMSdXNlckFkZHJTdHJPckVtcHR5D3N0YWtpbmdDb250cmFjdA1hY3Jlc0NvbnRyYWN0BAVwcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAITcmVzVHlwZXNQcm9wb3J0aW9ucwILMF8wXzBfMF8wXzACAV8KAQVhZGRlcgIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQLdG90YWxQaWVjZXMKAAIkbAUFcHJvcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAp1c2VyUGllY2VzCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUSdXNlckFkZHJTdHJPckVtcHR5AAAECnRvdGFsQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAUTYWNyZXNTdGFrZWRUb3RhbEtleQAABAl1c2VyQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAJAMwIAgULdG90YWxQaWVjZXMJAMwIAgUKdXNlclBpZWNlcwkAzAgCBQp0b3RhbEFjcmVzCQDMCAIFCXVzZXJBY3JlcwUDbmlsAA5pZHhUb3RhbFBpZWNlcwAAAA1pZHhVc2VyUGllY2VzAAEADWlkeFRvdGFsQWNyZXMAAgAMaWR4VXNlckFjcmVzAAMBC2dldFdsZ1N0YXRzBQt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbg91c2VyUHJvcG9ydGlvbjYEDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRJ3bGdJc3N1ZWRBbW91bnRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQKZWNvbm9teVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwULZGFwcEVjb25vbXkFBnVzZHRJZAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcFJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUGdXNkdElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ECXB1enpsZVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUKZGFwcFB1enpsZQUGdXNkdElkBBJpbnZlc3RGdW5kQ29udHJhY3QJAJEDAgUJY29udHJhY3RzBQ5kYXBwSW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRJpbnZlc3RGdW5kQ29udHJhY3QFBnVzZHRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJpbnZlc3RGdW5kQ29udHJhY3QFEXpiSXNzdWVkQW1vdW50S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUKZWNvbm9teVVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUPd2xnSXNzdWVUaW1lS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEDm1hcmtldGluZ1RvdGFsCQBrAwUITUlMTElPTjYFDk1BUktFVElOR1NIQVJFBQJNNgQTbWFya2V0aW5nQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUWbWFya2V0aW5nQW1vdW50TGVmdEtleQUObWFya2V0aW5nVG90YWwEEWxhc3RNYXJrZXRpbmdUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRRsYXN0TWFya2V0aW5nVGltZUtleQUJaXNzdWVUaW1lBA1tYXJrZXRpbmdBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRBtYXJrZXRpbmdBZGRyS2V5BBttYXJrZXRpbmdBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUObWFya2V0aW5nVG90YWwJAGUCBQNub3cFEWxhc3RNYXJrZXRpbmdUaW1lBQpZRUFSTUlMTElTCQDMCAIFE21hcmtldGluZ0Ftb3VudExlZnQFA25pbAQPbWFya2V0aW5nV2xnb2xkCQDwBwIFDW1hcmtldGluZ0FkZHIFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQhNSUxMSU9ONgUJVEVBTVNIQVJFBQJNNgQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEXRlYW1BbW91bnRMZWZ0S2V5BQl0ZWFtVG90YWwEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUPbGFzdFRlYW1UaW1lS2V5BQlpc3N1ZVRpbWUECHRlYW1BZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBQt0ZWFtQWRkcktleQQWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQl0ZWFtVG90YWwJAGUCBQNub3cFDGxhc3RUZWFtVGltZQkAaAIAAwUKWUVBUk1JTExJUwkAzAgCBQ50ZWFtQW1vdW50TGVmdAUDbmlsBAp0ZWFtV2xnb2xkCQDwBwIFCHRlYW1BZGRyBQV3bGdJZAQIYWN0VG90YWwJAGsDBQhNSUxMSU9ONgUNQUNUSVZJVFlTSEFSRQUCTTYEDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEGFjdEFtb3VudExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFFWxhc3RBY3Rpdml0aWVzVGltZUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwUKWUVBUk1JTExJUwkAzAgCBQ1hY3RBbW91bnRMZWZ0BQNuaWwECWFjdFdsZ29sZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcFJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcJARhrZXlMYXN0Q2xhaW1lZFRpbWVCeVVzZXIBBQt1c2VyQWRkck9wdAUJaXNzdWVUaW1lBA5sYXN0VXNlclBlcmlvZAkAaQIJAGUCBQxsYXN0VXNlclRpbWUFCWlzc3VlVGltZQUKWUVBUk1JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQpZRUFSTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFCllFQVJNSUxMSVMJAMwIAgACBQNuaWwEA2VmZgkBCGdldExhbmRzAwULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQtkYXBwU3Rha2luZwkAkQMCBQljb250cmFjdHMFCWRhcHBBY3JlcwQVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBBQljdXJQZXJpb2QECCR0MDc5MTQyAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQpZRUFSTUlMTElTBAh1c2VyUGFydAkAawMFAmEwBQ91c2VyUHJvcG9ydGlvbjYFAk02BAdlZmZUaW1lCQBkAgUMbGFzdFVzZXJUaW1lCQBrAwkAZQIFCm5vd0xpbWl0ZWQFDGxhc3RVc2VyVGltZQUPdXNlclByb3BvcnRpb242BQJNNgkAlQoDBQh1c2VyUGFydAUCYTAFB2VmZlRpbWUDCQAAAgUObGFzdFVzZXJQZXJpb2QJAGUCBQljdXJQZXJpb2QAAQQCYTEJAGsDCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEJAGUCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kBQxsYXN0VXNlclRpbWUFCllFQVJNSUxMSVMEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAUKWUVBUk1JTExJUwQFYXZhaWwJAGQCBQJhMQUCYTAECHVzZXJQYXJ0CQBrAwUFYXZhaWwFD3VzZXJQcm9wb3J0aW9uNgUCTTYEB2VmZlRpbWUDCQBnAgUCYTEFCHVzZXJQYXJ0CQBkAgUMbGFzdFVzZXJUaW1lCQBrAwUKWUVBUk1JTExJUwUIdXNlclBhcnQJARRkaXN0cmlidXRpb25CeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQlpc3N1ZVRpbWUJAGgCBQpZRUFSTUlMTElTBQljdXJQZXJpb2QJAGsDBQpZRUFSTUlMTElTCQBlAgUIdXNlclBhcnQFAmExBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAJUKAwUIdXNlclBhcnQFBWF2YWlsBQdlZmZUaW1lBAJhMgkAawMJARRkaXN0cmlidXRpb25CeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAgkAZQIJAGQCBQlpc3N1ZVRpbWUJAGgCBQpZRUFSTUlMTElTCQBlAgUJY3VyUGVyaW9kAAEFDGxhc3RVc2VyVGltZQUKWUVBUk1JTExJUwQCYTEJARRkaXN0cmlidXRpb25CeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQQCYTAJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kBQpZRUFSTUlMTElTBAVhdmFpbAkAZAIJAGQCBQJhMgUCYTEFAmEwBAh1c2VyUGFydAkAawMFBWF2YWlsBQ91c2VyUHJvcG9ydGlvbjYFAk02BAdlZmZUaW1lAwkAZwIFAmEyBQh1c2VyUGFydAkAZAIFDGxhc3RVc2VyVGltZQkAawMFCllFQVJNSUxMSVMFCHVzZXJQYXJ0CQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAIDCQBnAgkAZAIFAmEyBQJhMQUIdXNlclBhcnQJAGQCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwkAZQIFCWN1clBlcmlvZAABCQBrAwUKWUVBUk1JTExJUwkAZQIFCHVzZXJQYXJ0BQJhMgkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQkAZQIFCWN1clBlcmlvZAABCQBkAgkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAkAawMFCllFQVJNSUxMSVMJAGUCCQBlAgUIdXNlclBhcnQFAmEyBQJhMQUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQCVCgMFCHVzZXJQYXJ0BQVhdmFpbAUHZWZmVGltZQQKdXNlckFtb3VudAgFCCR0MDc5MTQyAl8xBA11c2VyQXZhaWxhYmxlCAUIJHQwNzkxNDICXzIEC2VmZkxhc3RUaW1lCAUIJHQwNzkxNDICXzMEEHNMYW5kRGFpbHlBbW91bnQJAGsDCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uBQNEQVkFCllFQVJNSUxMSVMAGQkAkQMCBQNlZmYFDmlkeFRvdGFsUGllY2VzBA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFFHN0YWtlcnNBbW91bnRMZWZ0S2V5AAAECnJvYmJlZFVzZXIJAGsDBQp1c2VyQW1vdW50CQBkAgkAaAIJAJEDAgUDZWZmBQ1pZHhVc2VyUGllY2VzBQJNOAkAkQMCBQNlZmYFDGlkeFVzZXJBY3JlcwkAZAIJAGgCCQCRAwIFA2VmZgUOaWR4VG90YWxQaWVjZXMFAk04CQCRAwIFA2VmZgUNaWR4VG90YWxBY3JlcwQMdW5yb2JiZWRVc2VyCQBrAwUNdXNlckF2YWlsYWJsZQkAZAIJAGgCCQCRAwIFA2VmZgUNaWR4VXNlclBpZWNlcwUCTTgJAJEDAgUDZWZmBQxpZHhVc2VyQWNyZXMJAGQCCQBoAgkAkQMCBQNlZmYFDmlkeFRvdGFsUGllY2VzBQJNOAkAkQMCBQNlZmYFDWlkeFRvdGFsQWNyZXMJAMwIAgUMaXNzdWVkQW1vdW50CQDMCAIJAGsDBQ10b3RhbEZ1bmRzVXNkBQJNOAUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUKZWNvbm9teVVzZAkAzAgCBQdyZXN0VXNkCQDMCAIFBndsZ1VzZAkAzAgCBQlwdXp6bGVVc2QJAMwIAgUJaXNzdWVUaW1lCQDMCAIFEWxhc3RNYXJrZXRpbmdUaW1lCQDMCAIFDm1hcmtldGluZ1RvdGFsCQDMCAIFE21hcmtldGluZ0Ftb3VudExlZnQJAMwIAgUbbWFya2V0aW5nQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFD21hcmtldGluZ1dsZ29sZAkAzAgCBQl0ZWFtVG90YWwJAMwIAgUOdGVhbUFtb3VudExlZnQJAMwIAgUWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQp0ZWFtV2xnb2xkCQDMCAIFCGFjdFRvdGFsCQDMCAIFDWFjdEFtb3VudExlZnQJAMwIAgUVYWN0QW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCWFjdFdsZ29sZAkAzAgCBQljdXJQZXJpb2QJAMwIAgUPYW1vdW50TGVmdFRvdGFsCQDMCAIFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAzAgCBQxsYXN0VXNlclRpbWUJAMwIAgUKcm9iYmVkVXNlcgkAzAgCBRBzTGFuZERhaWx5QW1vdW50CQDMCAIFD2ludmVzdEZ1bmRUb3RhbAkAzAgCBQx1bnJvYmJlZFVzZXIJAMwIAgULZWZmTGFzdFRpbWUFA25pbAAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1B1enpsZVBvb2xEYXBwAAUAFElkeENmZ0ludmVzdEZ1bmREYXBwAAYAD0lkeENmZ0FjcmVzRGFwcAAIAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJwdXp6bGVQb29sQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAKSWR4RWZmVXNlcgABARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBDmdldFZvdGluZ1Bvd2VyARJ1c2VyQWRkclN0ck9yRW1wdHkEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAJAMwIAgUKdG90YWxQb3dlcgkAzAgCBQp1c2Vyc1Bvd2VyBQNuaWwBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AA1wcm9maXRBZGRyS2V5Agpwcm9maXRBZGRyABlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AhZzdGFrZXJzQW1vdW50UGFpZFRvdGFsARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBGFkZHIJAKwCAgIWc3Rha2Vyc0Ftb3VudFBhaWRVc2VyXwUEYWRkcgEGcHJvbG9nAAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsAQ9nZXRTd2FwTGltaXRXbGcBBGFkZHIECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQ5hcmJpdHJhZ2VEZWxheQkAZQIFA25vdwUIbGFzdFRpbWUJAAIBCQCsAgIJAKwCAgIfQXJiaXRyYWdlcyBhcmUgcG9zc2libGUgb25jZSBhIAkApAMBCQBpAgUOYXJiaXRyYWdlRGVsYXkA4NQDAgNtaW4EBnBpZWNlcwkAkQMCCQEOZ2V0Vm90aW5nUG93ZXIBBQRhZGRyBQpJZHhFZmZVc2VyBAthY3Jlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1hY3Jlc0NvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAJAGQCCQBoAgUGcGllY2VzBQVNVUxUOAULYWNyZXNBbW91bnQBDWNsYWltSW50ZXJuYWwCBGFkZHILcHJvcG9ydGlvbjYEBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgQIY3VyU3RhdHMJAQtnZXRXbGdTdGF0cwUFBGFkZHIJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFD3N0YWtpbmdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAFC3Byb3BvcnRpb242BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJAJEDAgUIY3VyU3RhdHMFD2lkeFdsZ0lzc3VlVGltZQQTbWFya2V0aW5nQW1vdW50TGVmdAkAkQMCBQhjdXJTdGF0cwUVaWR4V2xnTWFya2V0aW5nQW1MZWZ0BA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFGWlkeFdsZ01hcmtldGluZ0FtQXZhaWxOb3cEDnRlYW1BbW91bnRMZWZ0CQCRAwIFCGN1clN0YXRzBRBpZHhXbGdUZWFtQW1MZWZ0BAp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRRpZHhXbGdUZWFtQW1BdmFpbE5vdwQNYWN0QW1vdW50TGVmdAkAkQMCBQhjdXJTdGF0cwUPaWR4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFE2lkeFdsZ0FjdEFtQXZhaWxOb3cDCQBmAgkAZQIFA25vdwUJaXNzdWVUaW1lBQlDSEVDS1RJTUUJAAIBAj1QbGVhc2UgbW9kaWZ5IGNvbnRyYWN0IGZvciBuZXh0IDEuNSB5ZWFycywgYWNjb3JkaW5nIHRvIHN0YXRzBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRRpZHhXbGdVc2VyQW1BdmFpbE5vdwQHdXNlcktleQkBGGtleVN0YWtlcnNBbW91bnRQYWlkVXNlcgEFBGFkZHIECXVzZXJUb3RhbAkAkQMCBQhjdXJTdGF0cwUUaWR4V2xnVXNlclRvdGFsQXZhaWwEC3VzZXJFZmZUaW1lCQCRAwIFCGN1clN0YXRzBRFpZHhXbGdFZmZVc2VyVGltZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUQbWFya2V0aW5nQWRkcktleQUPbWFya2V0aW5nQW1vdW50BQp3bGdBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQULdGVhbUFkZHJLZXkFCnRlYW1BbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQl1c2VyVG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBlAgkAkQMCBQhjdXJTdGF0cwURaWR4V2xnQW1MZWZ0VG90YWwFCXVzZXJUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWbWFya2V0aW5nQW1vdW50TGVmdEtleQkAZQIFE21hcmtldGluZ0Ftb3VudExlZnQFD21hcmtldGluZ0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUbGFzdE1hcmtldGluZ1RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgURdGVhbUFtb3VudExlZnRLZXkJAGUCBQ50ZWFtQW1vdW50TGVmdAUKdGVhbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPbGFzdFRlYW1UaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFEGFjdEFtb3VudExlZnRLZXkJAGUCBQ1hY3RBbW91bnRMZWZ0BQlhY3RBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFWxhc3RBY3Rpdml0aWVzVGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdENsYWltZWRUaW1lQnlVc2VyAQUEYWRkcgULdXNlckVmZlRpbWUFA25pbAkAlAoCBQp1c2VyQW1vdW50BQl1c2VyVG90YWwGAWkBDWNvbnN0cnVjdG9yVjEECHJlc3RBZGRyDW1hcmtldGluZ0FkZHIIdGVhbUFkZHIKcHJvZml0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKEIAQUNd2xnQXNzZXRJZEtleQkAAgECE0FscmVhZHkgaW5pdGlhbGl6ZWQEDGlzc3VlZEFtb3VudAUITUlMTElPTjYEBWlzc3VlCQDDCAcCBldMR09MRAIgV2F2ZXNMYW5kcyBHb2xkIGludmVzdG1lbnQgdG9rZW4FDGlzc3VlZEFtb3VudAAIBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ93bGdJc3N1ZVRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDGlzc3VlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAawMFCE1JTExJT042BQtQTEFZRVJTSEFSRQUFTVVMVDYJAMwIAgkBC0JpbmFyeUVudHJ5AgUNd2xnQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBRBtYXJrZXRpbmdBZGRyS2V5BQ1tYXJrZXRpbmdBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFC3RlYW1BZGRyS2V5BQh0ZWFtQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ1wcm9maXRBZGRyS2V5BQpwcm9maXRBZGRyBQNuaWwBaQEGYnV5V2xnAQltaW5BbW91bnQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUBAhjdXJTdGF0cwkBC2dldFdsZ1N0YXRzBQIACQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQFBU1VTFQ2BAxjdXJXbGdBbW91bnQJAJEDAgUIY3VyU3RhdHMFDGlkeFdsZ0Ftb3VudAQIZnVuZHNVc2QJAJEDAgUIY3VyU3RhdHMFC2lkeFdsZ0Z1bmRzBAh3bGdQcmljZQkAawMFCGZ1bmRzVXNkBQVNVUxUOAUMY3VyV2xnQW1vdW50BAhidXlQcmljZQkAawMFCHdsZ1ByaWNlAAYABQQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJAQ9nZXRTd2FwTGltaXRXbGcBBQRhZGRyAwkAZgIFCXdsZ0Ftb3VudAUGbWF4V2xnCQACAQkArAICCQCsAgICEFlvdSBjYW4gZ2V0IG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCByBXTEdPTEQDCQBmAgUJbWluQW1vdW50BQl3bGdBbW91bnQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgQKZGVsdGFGdW5kcwkAZQIFB3VzZHRBbXQFDHByb2ZpdEFtb3VudAQIcmVpc3N1ZWQJAGsDBQxjdXJXbGdBbW91bnQFCmRlbHRhRnVuZHMFCGZ1bmRzVXNkCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQhyZWlzc3VlZAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUIcmVpc3N1ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXdsZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQBaQEHc2VsbFdsZwEJbWluQW1vdW50BAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgQGbWF4V2xnCQEPZ2V0U3dhcExpbWl0V2xnAQUEYWRkcgMJAGYCBQZ3bGdBbXQFBm1heFdsZwkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHNwZW5kIG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCByBXTEdPTEQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAhVXTEdPTEQgcGF5bWVudHMgb25seSEDCQECIT0CBQpwbXRBc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAhjdXJTdGF0cwkBC2dldFdsZ1N0YXRzBQIACQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAUFTVVMVDYEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwUMaWR4V2xnQW1vdW50BAlzZWxsUHJpY2UJAGsDCQCRAwIFCGN1clN0YXRzBQtpZHhXbGdQcmljZQAEAAUEB3VzZHRBbXQJAGsDBQZ3bGdBbXQFCXNlbGxQcmljZQUFTVVMVDgDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUAwkAZgIFCW1pbkFtb3VudAUHdXNkdEFtdAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAEBAZidXJuZWQJAGsDCQBkAgUHdXNkdEFtdAUMcHJvZml0QW1vdW50BQxjdXJXbGdBbW91bnQJAJEDAgUIY3VyU3RhdHMFC2lkeFdsZ0Z1bmRzCQCUCgIJAMwIAgkBBEJ1cm4CBQp3bGdBc3NldElkBQZidXJuZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZQIFDGN1cldsZ0Ftb3VudAUGYnVybmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFDXByb2ZpdEFkZHJLZXkFDHByb2ZpdEFtb3VudAULdXNkdEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQd1c2R0QW10BQt1c2R0QXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQBaQEFY2xhaW0ABAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEAXIJAQ1jbGFpbUludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFBU1VTFQ2BAdhY3Rpb25zCAUBcgJfMQkAlAoCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcggIBQFyAl8yAl8xBQp3bGdBc3NldElkBQxwcm9sb2dSZXN1bHQBaQESb25TdGFrZVVuc3Rha2VMYW5kAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBcgkBDWNsYWltSW50ZXJuYWwCBQRhZGRyBQVNVUxUNgQHYWN0aW9ucwgFAXICXzEJAJQKAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyCAgFAXICXzICXzEFCndsZ0Fzc2V0SWQIBQFyAl8yAWkBCGNsYWltUm9iAwVvd25lcgZyb2JiZXIQb3duZXJQcm9wb3J0aW9uNgMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAXIJAQ1jbGFpbUludGVybmFsAgUFb3duZXIFEG93bmVyUHJvcG9ydGlvbjYJAJQKAgkAzQgCCAUBcgJfMQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUGcm9iYmVyCQBlAggIBQFyAl8yAl8yCAgFAXICXzICXzEFCndsZ0Fzc2V0SWQIBQFyAl8yAH1Ry2A=", "height": 2765466, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9VQuDGFLUrBnd7APVrPU87TzweDG9s16mdxpEYBkoRwF Next: BMMddS311xDH9XWxdgzgbDBjA6YghZ4suizwnGtrXEVV Diff:
OldNewDifferences
5454
5555 let A = "zbill_issuedAmount"
5656
57-let B = 0
57+func B (u) = ("acresStakedAmountByUser_" + u)
5858
59-let C = 1
6059
61-let D = 2
60+let C = "acresStakedAmountTotal"
6261
63-let E = 7
62+let D = 0
6463
65-let F = 10
64+let E = 1
6665
67-let G = 11
66+let F = 2
6867
69-let H = 14
68+let G = 7
7069
71-let I = 15
70+let H = 10
7271
73-let J = 18
72+let I = 11
7473
75-let K = 19
74+let J = 14
7675
77-let L = 22
76+let K = 15
7877
79-let M = 25
78+let L = 18
8079
81-let N = 28
80+let M = 19
8281
83-let O = 29
82+let N = 22
8483
85-let P = 0
84+let O = 25
8685
87-let Q = 1
86+let P = 28
8887
89-let R = 2
88+let Q = 29
9089
91-let S = 3
90+let R = 0
9291
93-let T = 4
92+let S = 1
9493
95-let U = 5
94+let T = 2
9695
97-func V (W,X) = {
98- let Y = split(valueOrElse(getString(X, "resTypesProportions"), "0_0_0_0_0_0"), "_")
99- func Z (aa,ab) = (aa + parseIntValue(ab))
96+let U = 3
10097
101- let ac = {
102- let ad = Y
103- let ae = size(ad)
104- let af = 0
105- func ag (ah,ai) = if ((ai >= ae))
106- then ah
107- else Z(ah, ad[ai])
98+let V = 4
10899
109- func aj (ah,ai) = if ((ai >= ae))
110- then ah
100+let W = 5
101+
102+let X = 6
103+
104+func Y (Z,aa,ab) = {
105+ let ac = split(valueOrElse(getString(aa, "resTypesProportions"), "0_0_0_0_0_0"), "_")
106+ func ad (ae,af) = (ae + parseIntValue(af))
107+
108+ let ag = {
109+ let ah = ac
110+ let ai = size(ah)
111+ let aj = 0
112+ func ak (al,am) = if ((am >= ai))
113+ then al
114+ else ad(al, ah[am])
115+
116+ func an (al,am) = if ((am >= ai))
117+ then al
111118 else throw("List size exceeds 6")
112119
113- aj(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6)
120+ an(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6)
114121 }
115- let ak = valueOrElse(getInteger(X, ("stakedPiecesByOwner_" + W)), 0)
116-[ac, ak]
122+ let ao = valueOrElse(getInteger(aa, ("stakedPiecesByOwner_" + Z)), 0)
123+ let ap = valueOrElse(getInteger(ab, C), 0)
124+ let aq = valueOrElse(getInteger(ab, B(Z)), 0)
125+[ag, ao, ap, aq]
117126 }
118127
119128
120-func al (am,an,ao,ap,aq) = {
121- let ar = valueOrErrorMessage(getInteger(an[S], z), "WLGOLD is not issued yet")
122- let as = assetBalance(an[R], ao)
123- let at = assetBalance(an[P], ao)
124- let au = (assetBalance(an[S], ao) - ap)
125- let av = assetBalance(an[T], ao)
126- let aw = an[U]
127- let ax = (assetBalance(aw, ao) + valueOrElse(getInteger(aw, A), 0))
128- let ay = ((as + au) + ax)
129- let az = valueOrErrorMessage(getBinary(an[S], "wlg_assetId"), "Not initialized yet")
130- let aA = lastBlock.timestamp
131- let aB = valueOrErrorMessage(getInteger(an[S], y), "Not initialized")
132- let aC = fraction(c, d, a)
133- let aD = valueOrElse(getInteger(an[S], n), aC)
134- let aE = valueOrElse(getInteger(an[S], m), aB)
135- let aF = addressFromStringValue(value(getString(an[S], k)))
136- let aG = min([fraction(aC, (aA - aE), h), aD])
137- let aH = assetBalance(aF, az)
138- let aI = fraction(c, e, a)
139- let aJ = valueOrElse(getInteger(an[S], p), aI)
140- let aK = valueOrElse(getInteger(an[S], o), aB)
141- let aL = addressFromStringValue(value(getString(an[S], l)))
142- let aM = min([fraction(aI, (aA - aK), (3 * h)), aJ])
143- let aN = assetBalance(aL, az)
144- let aO = fraction(c, f, a)
145- let aP = valueOrElse(getInteger(an[S], r), aO)
146- let aQ = valueOrElse(getInteger(an[S], q), aB)
147- let aR = min([fraction(aO, (aA - aQ), (3 * h)), aP])
148- let aS = assetBalance(an[P], az)
149- let aT = valueOrElse(getInteger(an[S], t(am)), aB)
150- let aU = ((aT - aB) / h)
151- let aV = min([aA, (aB + (3 * h))])
152- let aW = min([((aA - aB) / h), 2])
153- let aX = V(am, an[Q])
154- let aY = w(aW)
155- let aZ = if ((aU == aW))
129+let ar = 0
130+
131+let as = 1
132+
133+let at = 2
134+
135+let au = 3
136+
137+func av (aw,ax,ay,az,aA) = {
138+ let aB = valueOrErrorMessage(getInteger(ax[U], z), "WLGOLD is not issued yet")
139+ let aC = assetBalance(ax[T], ay)
140+ let aD = assetBalance(ax[R], ay)
141+ let aE = (assetBalance(ax[U], ay) - az)
142+ let aF = assetBalance(ax[V], ay)
143+ let aG = ax[W]
144+ let aH = (assetBalance(aG, ay) + valueOrElse(getInteger(aG, A), 0))
145+ let aI = ((aC + aE) + aH)
146+ let aJ = valueOrErrorMessage(getBinary(ax[U], "wlg_assetId"), "Not initialized yet")
147+ let aK = lastBlock.timestamp
148+ let aL = valueOrErrorMessage(getInteger(ax[U], y), "Not initialized")
149+ let aM = fraction(c, d, a)
150+ let aN = valueOrElse(getInteger(ax[U], n), aM)
151+ let aO = valueOrElse(getInteger(ax[U], m), aL)
152+ let aP = addressFromStringValue(value(getString(ax[U], k)))
153+ let aQ = min([fraction(aM, (aK - aO), h), aN])
154+ let aR = assetBalance(aP, aJ)
155+ let aS = fraction(c, e, a)
156+ let aT = valueOrElse(getInteger(ax[U], p), aS)
157+ let aU = valueOrElse(getInteger(ax[U], o), aL)
158+ let aV = addressFromStringValue(value(getString(ax[U], l)))
159+ let aW = min([fraction(aS, (aK - aU), (3 * h)), aT])
160+ let aX = assetBalance(aV, aJ)
161+ let aY = fraction(c, f, a)
162+ let aZ = valueOrElse(getInteger(ax[U], r), aY)
163+ let ba = valueOrElse(getInteger(ax[U], q), aL)
164+ let bb = min([fraction(aY, (aK - ba), (3 * h)), aZ])
165+ let bc = assetBalance(ax[R], aJ)
166+ let bd = valueOrElse(getInteger(ax[U], t(aw)), aL)
167+ let be = ((bd - aL) / h)
168+ let bf = min([aK, (aL + (3 * h))])
169+ let bg = min([((aK - aL) / h), 2])
170+ let bh = Y(aw, ax[S], ax[X])
171+ let bi = w(bg)
172+ let bj = if ((be == bg))
156173 then {
157- let ba = fraction(aY, (aV - aT), h)
158- let bb = fraction(ba, aq, a)
159- let bc = (aT + fraction((aV - aT), aq, a))
160- $Tuple3(bb, ba, bc)
174+ let bk = fraction(bi, (bf - bd), h)
175+ let bl = fraction(bk, aA, a)
176+ let bm = (bd + fraction((bf - bd), aA, a))
177+ $Tuple3(bl, bk, bm)
161178 }
162- else if ((aU == (aW - 1)))
179+ else if ((be == (bg - 1)))
163180 then {
164- let bd = fraction(w((aW - 1)), ((aB + (h * aW)) - aT), h)
165- let ba = fraction(aY, (aV - (aB + (h * aW))), h)
166- let be = (bd + ba)
167- let bb = fraction(be, aq, a)
168- let bc = if ((bd >= bb))
169- then (aT + fraction(h, bb, w((aW - 1))))
170- else ((aB + (h * aW)) + fraction(h, (bb - bd), aY))
171- $Tuple3(bb, be, bc)
181+ let bn = fraction(w((bg - 1)), ((aL + (h * bg)) - bd), h)
182+ let bk = fraction(bi, (bf - (aL + (h * bg))), h)
183+ let bo = (bn + bk)
184+ let bl = fraction(bo, aA, a)
185+ let bm = if ((bn >= bl))
186+ then (bd + fraction(h, bl, w((bg - 1))))
187+ else ((aL + (h * bg)) + fraction(h, (bl - bn), bi))
188+ $Tuple3(bl, bo, bm)
172189 }
173190 else {
174- let bf = fraction(w((aW - 2)), ((aB + (h * (aW - 1))) - aT), h)
175- let bd = w((aW - 1))
176- let ba = fraction(aY, (aV - (aB + (h * aW))), h)
177- let be = ((bf + bd) + ba)
178- let bb = fraction(be, aq, a)
179- let bc = if ((bf >= bb))
180- then (aT + fraction(h, bb, w((aW - 2))))
181- else if (((bf + bd) >= bb))
182- then ((aB + (h * (aW - 1))) + fraction(h, (bb - bf), w((aW - 1))))
183- else ((aB + (h * aW)) + fraction(h, ((bb - bf) - bd), aY))
184- $Tuple3(bb, be, bc)
191+ let bp = fraction(w((bg - 2)), ((aL + (h * (bg - 1))) - bd), h)
192+ let bn = w((bg - 1))
193+ let bk = fraction(bi, (bf - (aL + (h * bg))), h)
194+ let bo = ((bp + bn) + bk)
195+ let bl = fraction(bo, aA, a)
196+ let bm = if ((bp >= bl))
197+ then (bd + fraction(h, bl, w((bg - 2))))
198+ else if (((bp + bn) >= bl))
199+ then ((aL + (h * (bg - 1))) + fraction(h, (bl - bp), w((bg - 1))))
200+ else ((aL + (h * bg)) + fraction(h, ((bl - bp) - bn), bi))
201+ $Tuple3(bl, bo, bm)
185202 }
186- let bg = aZ._1
187- let bh = aZ._2
188- let bi = aZ._3
189- let bj = fraction(fraction(aY, j, h), 25, aX[0])
190- let bk = valueOrElse(getInteger(an[S], s), 0)
191-[ar, fraction(ay, b, ar), ay, as, at, au, av, aB, aE, aC, aD, aG, aH, aI, aJ, aM, aN, aO, aP, aR, aS, aW, bk, aY, aT, fraction(bg, aX[1], aX[0]), bj, ax, fraction(bh, aX[1], aX[0]), bi]
203+ let bq = bj._1
204+ let br = bj._2
205+ let bs = bj._3
206+ let bt = fraction(fraction(bi, j, h), 25, bh[ar])
207+ let bu = valueOrElse(getInteger(ax[U], s), 0)
208+ let bv = fraction(bq, ((bh[as] * b) + bh[au]), ((bh[ar] * b) + bh[at]))
209+ let bw = fraction(br, ((bh[as] * b) + bh[au]), ((bh[ar] * b) + bh[at]))
210+[aB, fraction(aI, b, aB), aI, aC, aD, aE, aF, aL, aO, aM, aN, aQ, aR, aS, aT, aW, aX, aY, aZ, bb, bc, bg, bu, bi, bd, bv, bt, aH, bw, bs]
192211 }
193212
194213
195-let bl = take(drop(this.bytes, 1), 1)
214+let bx = take(drop(this.bytes, 1), 1)
196215
197-let bm = {
198- let bn = bl
199- if ((base58'2W' == bn))
216+let by = {
217+ let bz = bx
218+ if ((base58'2W' == bz))
200219 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
201- else if ((base58'2T' == bn))
220+ else if ((base58'2T' == bz))
202221 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
203222 else throw("Unknown chain")
204223 }
205224
206-let bo = {
207- let bn = bl
208- if ((base58'2W' == bn))
225+let bA = {
226+ let bz = bx
227+ if ((base58'2W' == bz))
209228 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
210- else if ((base58'2T' == bn))
229+ else if ((base58'2T' == bz))
211230 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
212231 else throw("Unknown chain")
213232 }
214233
215-let bp = {
216- let bn = bl
217- if ((base58'2W' == bn))
234+let bB = {
235+ let bz = bx
236+ if ((base58'2W' == bz))
218237 then 86400000
219- else if ((base58'2T' == bn))
238+ else if ((base58'2T' == bz))
220239 then 60000
221240 else throw("Unknown chain")
222241 }
223242
224-let bq = "__"
243+let bC = "__"
225244
226-let br = 1000000
245+let bD = 1000000
227246
228-let bs = 100000000
247+let bE = 100000000
229248
230-let bt = 100000
249+let bF = 100000
231250
232-func bu (bv,bw) = valueOrErrorMessage(getString(bv, bw), makeString(["mandatory ", toString(bv), ".", bw, " is not defined"], ""))
251+func bG (bH,bI) = valueOrErrorMessage(getString(bH, bI), makeString(["mandatory ", toString(bH), ".", bI, " is not defined"], ""))
233252
234253
235-let bx = 1
254+let bJ = 1
236255
237-let by = 2
256+let bK = 2
238257
239-let bz = 4
258+let bL = 4
240259
241-let bA = 5
260+let bM = 5
242261
243-let bB = 6
262+let bN = 6
244263
245-func bC () = "%s__restConfig"
264+let bO = 8
265+
266+func bP () = "%s__restConfig"
246267
247268
248-func bD () = "%s__restAddr"
269+func bQ () = "%s__restAddr"
249270
250271
251-func bE (bF) = split_4C(bu(bF, bC()), bq)
272+func bR (bS) = split_4C(bG(bS, bP()), bC)
252273
253274
254-func bG (bH,bI) = valueOrErrorMessage(addressFromString(bH[bI]), ("Rest cfg doesn't contain address at index " + toString(bI)))
275+func bT (bU,bV) = valueOrErrorMessage(addressFromString(bU[bV]), ("Rest cfg doesn't contain address at index " + toString(bV)))
255276
256277
257-let bJ = addressFromStringValue(valueOrElse(getString(this, bD()), bo))
278+let bW = addressFromStringValue(valueOrElse(getString(this, bQ()), bA))
258279
259-let bH = bE(bJ)
280+let bU = bR(bW)
260281
261-let X = bG(bH, bx)
282+let aa = bT(bU, bJ)
262283
263-let bK = bG(bH, by)
284+let bX = bT(bU, bK)
264285
265-let bL = bG(bH, bz)
286+let bY = bT(bU, bL)
266287
267-let bM = bG(bH, bA)
288+let bZ = bT(bU, bM)
268289
269-let aw = bG(bH, bB)
290+let aG = bT(bU, bN)
270291
271-let bN = "wlg_assetId"
292+let ab = bT(bU, bO)
272293
273-let bO = valueOrErrorMessage(getBinary(bL, bN), "Not initialized yet")
294+let ca = "wlg_assetId"
274295
275-let bP = 1
296+let cb = valueOrErrorMessage(getBinary(bY, ca), "WLGOLD is not issued yet")
276297
277-func bQ () = "resTypesProportions"
298+let cc = 1
299+
300+func cd () = "resTypesProportions"
278301
279302
280-func bR (bS) = ("stakedPiecesByOwner_" + bS)
303+func ce (cf) = ("stakedPiecesByOwner_" + cf)
281304
282305
283-func bT (bU) = {
284- let bn = bU
285- if ($isInstanceOf(bn, "Int"))
306+func cg (ch) = {
307+ let bz = ch
308+ if ($isInstanceOf(bz, "Int"))
286309 then {
287- let bV = bn
288- bV
310+ let ci = bz
311+ ci
289312 }
290313 else throw("fail to cast into Int")
291314 }
292315
293316
294-func bW (W) = {
295- let Y = split(valueOrElse(getString(X, bQ()), "0_0_0_0_0_0"), "_")
296- func Z (aa,ab) = (aa + parseIntValue(ab))
317+func cj (Z) = {
318+ let ac = split(valueOrElse(getString(aa, cd()), "0_0_0_0_0_0"), "_")
319+ func ad (ae,af) = (ae + parseIntValue(af))
297320
298- let ac = {
299- let ad = Y
300- let ae = size(ad)
301- let af = 0
302- func ag (ah,ai) = if ((ai >= ae))
303- then ah
304- else Z(ah, ad[ai])
321+ let ck = {
322+ let ah = ac
323+ let ai = size(ah)
324+ let aj = 0
325+ func ak (al,am) = if ((am >= ai))
326+ then al
327+ else ad(al, ah[am])
305328
306- func aj (ah,ai) = if ((ai >= ae))
307- then ah
329+ func an (al,am) = if ((am >= ai))
330+ then al
308331 else throw("List size exceeds 6")
309332
310- aj(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6)
333+ an(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6)
311334 }
312- let ak = valueOrElse(getInteger(X, bR(W)), 0)
313-[ac, ak]
335+ let cl = valueOrElse(getInteger(aa, ce(Z)), 0)
336+[ck, cl]
314337 }
315338
316339
317-func bX (bY,bZ) = {
318- let ca = pow(10, 0, bZ, 0, 0, DOWN)
319- let cb = toString((bY % ca))
320- let cc = drop(toString(ca), (1 + size(cb)))
321- (((toString((bY / ca)) + ".") + cc) + cb)
340+func cm (cn,co) = {
341+ let cp = pow(10, 0, co, 0, 0, DOWN)
342+ let cq = toString((cn % cp))
343+ let cr = drop(toString(cp), (1 + size(cq)))
344+ (((toString((cn / cp)) + ".") + cr) + cq)
322345 }
323346
324347
325-let cd = "profitAddr"
348+let cs = "profitAddr"
326349
327-let ce = "stakersAmountPaidTotal"
350+let ct = "stakersAmountPaidTotal"
328351
329-func cf (u) = ("stakersAmountPaidUser_" + u)
352+func cu (u) = ("stakersAmountPaidUser_" + u)
330353
331354
332-func cg () = bT(invoke(X, "saveLastTx", nil, nil))
355+func cv () = cg(invoke(aa, "saveLastTx", nil, nil))
333356
334357
335-func ch (u) = {
336- let ci = valueOrElse(getInteger(v(u)), 0)
337- let aA = lastBlock.timestamp
338- if ((bp > (aA - ci)))
339- then throw((("Arbitrages are possible once a " + toString((bp / 60000))) + "min"))
358+func cw (u) = {
359+ let cx = valueOrElse(getInteger(v(u)), 0)
360+ let aK = lastBlock.timestamp
361+ if ((bB > (aK - cx)))
362+ then throw((("Arbitrages are possible once a " + toString((bB / 60000))) + "min"))
340363 else {
341- let cj = bW(u)[bP]
342- (cj * bs)
364+ let cy = cj(u)[cc]
365+ let cz = valueOrElse(getInteger(ab, B(u)), 0)
366+ ((cy * bE) + cz)
343367 }
344368 }
345369
346370
347-func ck (u,cl) = {
348- let cm = addressFromStringValue(u)
349- let cn = al(u, [bJ, X, bK, bL, bM, aw], bm, 0, cl)
350- let aA = lastBlock.timestamp
351- let aB = cn[E]
352- let aD = cn[F]
353- let co = cn[G]
354- let aJ = cn[H]
355- let cp = cn[I]
356- let aP = cn[J]
357- let cq = cn[K]
358- if (((aA - aB) > i))
371+func cA (u,cB) = {
372+ let cC = addressFromStringValue(u)
373+ let cD = av(u, [bW, aa, bX, bY, bZ, aG, ab], by, 0, cB)
374+ let aK = lastBlock.timestamp
375+ let aL = cD[G]
376+ let aN = cD[H]
377+ let cE = cD[I]
378+ let aT = cD[J]
379+ let cF = cD[K]
380+ let aZ = cD[L]
381+ let cG = cD[M]
382+ if (((aK - aL) > i))
359383 then throw("Please modify contract for next 1.5 years, according to stats")
360384 else {
361- let bg = cn[M]
362- let cr = cf(u)
363- let cs = cn[N]
364- let ct = cn[O]
365- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), co, bO), ScriptTransfer(addressFromStringValue(value(getString(l))), cp, bO), ScriptTransfer(bJ, cq, bO), IntegerEntry(cr, (valueOrElse(getInteger(cr), 0) + bg)), IntegerEntry(ce, (valueOrElse(getInteger(ce), 0) + cs)), IntegerEntry(s, (cn[L] - cs)), IntegerEntry(n, (aD - co)), IntegerEntry(m, aA), IntegerEntry(p, (aJ - cp)), IntegerEntry(o, aA), IntegerEntry(r, (aP - cq)), IntegerEntry(q, aA), IntegerEntry(t(u), ct)], $Tuple2(bg, cs))
385+ let bq = cD[O]
386+ let cH = cu(u)
387+ let cI = cD[P]
388+ let cJ = cD[Q]
389+ $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), cE, cb), ScriptTransfer(addressFromStringValue(value(getString(l))), cF, cb), ScriptTransfer(bW, cG, cb), IntegerEntry(cH, (valueOrElse(getInteger(cH), 0) + bq)), IntegerEntry(ct, (valueOrElse(getInteger(ct), 0) + cI)), IntegerEntry(s, (cD[N] - cI)), IntegerEntry(n, (aN - cE)), IntegerEntry(m, aK), IntegerEntry(p, (aT - cF)), IntegerEntry(o, aK), IntegerEntry(r, (aZ - cG)), IntegerEntry(q, aK), IntegerEntry(t(u), cJ)], $Tuple2(bq, cI))
366390 }
367391 }
368392
369393
370-@Callable(cu)
371-func constructorV1 (cv,aF,aL,cw) = if ((cu.caller != this))
394+@Callable(cK)
395+func constructorV1 (cL,aP,aV,cM) = if ((cK.caller != this))
372396 then throw("Permission denied")
373- else if (isDefined(getBinary(bN)))
397+ else if (isDefined(getBinary(ca)))
374398 then throw("Already initialized")
375399 else {
376- let ar = c
377- let cx = Issue("WLGOLD", "WavesLands Gold investment token", ar, 8, true, unit, 0)
378- let cy = calculateAssetId(cx)
379-[cx, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, ar), IntegerEntry(ce, 0), IntegerEntry(s, fraction(c, g, br)), BinaryEntry(bN, cy), StringEntry(bD(), cv), StringEntry(k, aF), StringEntry(l, aL), StringEntry(cd, cw)]
400+ let aB = c
401+ let cN = Issue("WLGOLD", "WavesLands Gold investment token", aB, 8, true, unit, 0)
402+ let cO = calculateAssetId(cN)
403+[cN, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, aB), IntegerEntry(ct, 0), IntegerEntry(s, fraction(c, g, bD)), BinaryEntry(ca, cO), StringEntry(bQ(), cL), StringEntry(k, aP), StringEntry(l, aV), StringEntry(cs, cM)]
380404 }
381405
382406
383407
384-@Callable(cu)
385-func buyWlg (cz) = {
386- let cA = cg()
387- if ((size(cu.payments) != 1))
408+@Callable(cK)
409+func buyWlg (cP) = {
410+ let cQ = cv()
411+ if ((size(cK.payments) != 1))
388412 then throw("exactly 1 payment must be attached")
389413 else {
390- let cB = cu.payments[0]
391- let cC = cB.amount
392- let cD = valueOrErrorMessage(cB.assetId, "USDT payments only!")
393- if ((cD != bm))
414+ let cR = cK.payments[0]
415+ let cS = cR.amount
416+ let cT = valueOrErrorMessage(cR.assetId, "USDT payments only!")
417+ if ((cT != by))
394418 then throw("USDT payments only!")
395419 else {
396- let cm = cu.caller
397- let u = toString(cm)
398- if ((bt > cC))
399- then throw((("You can trade min " + bX(bt, 6)) + " USDT"))
420+ let cC = cK.caller
421+ let u = toString(cC)
422+ if ((bF > cS))
423+ then throw((("You can trade min " + cm(bF, 6)) + " USDT"))
400424 else {
401- let cn = al("", [bJ, X, bK, bL, bM, aw], bm, cC, br)
402- let cE = cn[B]
403- let cF = cn[D]
404- let cG = fraction(cF, bs, cE)
405- let cH = fraction(cG, 6, 5)
406- let cI = fraction(cC, bs, cH)
407- let cJ = ch(u)
408- if ((cI > cJ))
409- then throw((("You can get max " + bX(cJ, 8)) + " WLGOLD"))
410- else if ((cz > cI))
425+ let cD = av("", [bW, aa, bX, bY, bZ, aG], by, cS, bD)
426+ let cU = cD[D]
427+ let cV = cD[F]
428+ let cW = fraction(cV, bE, cU)
429+ let cX = fraction(cW, 6, 5)
430+ let cY = fraction(cS, bE, cX)
431+ let cZ = cw(u)
432+ if ((cY > cZ))
433+ then throw((("You can get max " + cm(cZ, 8)) + " WLGOLD"))
434+ else if ((cP > cY))
411435 then throw("Price changed during operation, please try again")
412436 else {
413- let cK = (cC / 6)
414- let cL = (cC - cK)
415- let cM = fraction(cE, cL, cF)
416- $Tuple2([Reissue(bO, cM, true), IntegerEntry(z, (cE + cM)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cd))), cK, bm), ScriptTransfer(cm, cI, bO)], cA)
437+ let da = (cS / 6)
438+ let db = (cS - da)
439+ let dc = fraction(cU, db, cV)
440+ $Tuple2([Reissue(cb, dc, true), IntegerEntry(z, (cU + dc)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cs))), da, by), ScriptTransfer(cC, cY, cb)], cQ)
417441 }
418442 }
419443 }
422446
423447
424448
425-@Callable(cu)
426-func sellWlg (cz) = {
427- let cA = cg()
428- if ((size(cu.payments) != 1))
449+@Callable(cK)
450+func sellWlg (cP) = {
451+ let cQ = cv()
452+ if ((size(cK.payments) != 1))
429453 then throw("exactly 1 payment must be attached")
430454 else {
431- let cB = cu.payments[0]
432- let cN = cB.amount
433- let cm = cu.caller
434- let u = toString(cm)
435- let cJ = ch(u)
436- if ((cN > cJ))
437- then throw((("You can spend max " + bX(cJ, 8)) + " WLGOLD"))
455+ let cR = cK.payments[0]
456+ let dd = cR.amount
457+ let cC = cK.caller
458+ let u = toString(cC)
459+ let cZ = cw(u)
460+ if ((dd > cZ))
461+ then throw((("You can spend max " + cm(cZ, 8)) + " WLGOLD"))
438462 else {
439- let cD = valueOrErrorMessage(cB.assetId, "WLGOLD payments only!")
440- if ((cD != bO))
463+ let cT = valueOrErrorMessage(cR.assetId, "WLGOLD payments only!")
464+ if ((cT != cb))
441465 then throw("WLGOLD payments only!")
442466 else {
443- let cn = al("", [bJ, X, bK, bL, bM, aw], bm, 0, br)
444- let cE = cn[B]
445- let cO = fraction(cn[C], 4, 5)
446- let cC = fraction(cN, cO, bs)
447- if ((bt > cC))
448- then throw((("You can trade min " + bX(bt, 6)) + " USDT"))
449- else if ((cz > cC))
467+ let cD = av("", [bW, aa, bX, bY, bZ, aG], by, 0, bD)
468+ let cU = cD[D]
469+ let de = fraction(cD[E], 4, 5)
470+ let cS = fraction(dd, de, bE)
471+ if ((bF > cS))
472+ then throw((("You can trade min " + cm(bF, 6)) + " USDT"))
473+ else if ((cP > cS))
450474 then throw("Price changed during operation, please try again")
451475 else {
452- let cK = (cC / 4)
453- let cP = fraction((cC + cK), cE, cn[D])
454- $Tuple2([Burn(bO, cP), IntegerEntry(z, (cE - cP)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cd))), cK, bm), ScriptTransfer(cm, cC, bm)], cA)
476+ let da = (cS / 4)
477+ let df = fraction((cS + da), cU, cD[F])
478+ $Tuple2([Burn(cb, df), IntegerEntry(z, (cU - df)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cs))), da, by), ScriptTransfer(cC, cS, by)], cQ)
455479 }
456480 }
457481 }
460484
461485
462486
463-@Callable(cu)
487+@Callable(cK)
464488 func claim () = {
465- let cA = cg()
466- if ((size(cu.payments) != 0))
489+ let cQ = cv()
490+ if ((size(cK.payments) != 0))
467491 then throw("No payments required")
468492 else {
469- let cQ = ck(toString(cu.caller), br)
470- let cR = cQ._1
471- $Tuple2((cR :+ ScriptTransfer(cu.caller, cQ._2._1, bO)), cA)
493+ let dg = cA(toString(cK.caller), bD)
494+ let dh = dg._1
495+ $Tuple2((dh :+ ScriptTransfer(cK.caller, dg._2._1, cb)), cQ)
472496 }
473497 }
474498
475499
476500
477-@Callable(cu)
478-func onStakeUnstakeLand (u) = if ((cu.caller != X))
501+@Callable(cK)
502+func onStakeUnstakeLand (u) = if ((cK.caller != aa))
479503 then throw("Permission denied")
480504 else {
481- let cQ = ck(u, br)
482- let cR = cQ._1
483- $Tuple2((cR :+ ScriptTransfer(addressFromStringValue(u), cQ._2._1, bO)), cQ._2)
505+ let dg = cA(u, bD)
506+ let dh = dg._1
507+ $Tuple2((dh :+ ScriptTransfer(addressFromStringValue(u), dg._2._1, cb)), dg._2)
484508 }
485509
486510
487511
488-@Callable(cu)
489-func claimRob (cS,cT,cU) = if ((cu.caller != X))
512+@Callable(cK)
513+func claimRob (di,dj,dk) = if ((cK.caller != aa))
490514 then throw("Permission denied")
491515 else {
492- let cQ = ck(cS, cU)
493- $Tuple2((cQ._1 :+ ScriptTransfer(addressFromStringValue(cT), (cQ._2._2 - cQ._2._1), bO)), cQ._2)
516+ let dg = cA(di, dk)
517+ $Tuple2((dg._1 :+ ScriptTransfer(addressFromStringValue(dj), (dg._2._2 - dg._2._1), cb)), dg._2)
494518 }
495519
496520
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000000
55
66 let b = 100000000
77
88 let c = 100000000000000
99
1010 let d = 100000
1111
1212 let e = 200000
1313
1414 let f = 100000
1515
1616 let g = 400000
1717
1818 let h = 31557600000
1919
2020 let i = 47336400000
2121
2222 let j = 86400000
2323
2424 let k = "marketingAddr"
2525
2626 let l = "teamAddr"
2727
2828 let m = "lastClaimedTime_marketing"
2929
3030 let n = "marketingAmountLeft"
3131
3232 let o = "lastClaimedTime_team"
3333
3434 let p = "teamAmountLeft"
3535
3636 let q = "lastClaimedTime_activities"
3737
3838 let r = "activitiesAmountLeft"
3939
4040 let s = "stakersAmountLeft"
4141
4242 func t (u) = ("lastClaimedTimeUser_" + u)
4343
4444
4545 func v (u) = ("lastArbTimeUser_" + u)
4646
4747
4848 func w (x) = fraction(c, (g * (x + 1)), (6 * a))
4949
5050
5151 let y = "wlg_issueTime"
5252
5353 let z = "wlg_issuedAmount"
5454
5555 let A = "zbill_issuedAmount"
5656
57-let B = 0
57+func B (u) = ("acresStakedAmountByUser_" + u)
5858
59-let C = 1
6059
61-let D = 2
60+let C = "acresStakedAmountTotal"
6261
63-let E = 7
62+let D = 0
6463
65-let F = 10
64+let E = 1
6665
67-let G = 11
66+let F = 2
6867
69-let H = 14
68+let G = 7
7069
71-let I = 15
70+let H = 10
7271
73-let J = 18
72+let I = 11
7473
75-let K = 19
74+let J = 14
7675
77-let L = 22
76+let K = 15
7877
79-let M = 25
78+let L = 18
8079
81-let N = 28
80+let M = 19
8281
83-let O = 29
82+let N = 22
8483
85-let P = 0
84+let O = 25
8685
87-let Q = 1
86+let P = 28
8887
89-let R = 2
88+let Q = 29
9089
91-let S = 3
90+let R = 0
9291
93-let T = 4
92+let S = 1
9493
95-let U = 5
94+let T = 2
9695
97-func V (W,X) = {
98- let Y = split(valueOrElse(getString(X, "resTypesProportions"), "0_0_0_0_0_0"), "_")
99- func Z (aa,ab) = (aa + parseIntValue(ab))
96+let U = 3
10097
101- let ac = {
102- let ad = Y
103- let ae = size(ad)
104- let af = 0
105- func ag (ah,ai) = if ((ai >= ae))
106- then ah
107- else Z(ah, ad[ai])
98+let V = 4
10899
109- func aj (ah,ai) = if ((ai >= ae))
110- then ah
100+let W = 5
101+
102+let X = 6
103+
104+func Y (Z,aa,ab) = {
105+ let ac = split(valueOrElse(getString(aa, "resTypesProportions"), "0_0_0_0_0_0"), "_")
106+ func ad (ae,af) = (ae + parseIntValue(af))
107+
108+ let ag = {
109+ let ah = ac
110+ let ai = size(ah)
111+ let aj = 0
112+ func ak (al,am) = if ((am >= ai))
113+ then al
114+ else ad(al, ah[am])
115+
116+ func an (al,am) = if ((am >= ai))
117+ then al
111118 else throw("List size exceeds 6")
112119
113- aj(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6)
120+ an(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6)
114121 }
115- let ak = valueOrElse(getInteger(X, ("stakedPiecesByOwner_" + W)), 0)
116-[ac, ak]
122+ let ao = valueOrElse(getInteger(aa, ("stakedPiecesByOwner_" + Z)), 0)
123+ let ap = valueOrElse(getInteger(ab, C), 0)
124+ let aq = valueOrElse(getInteger(ab, B(Z)), 0)
125+[ag, ao, ap, aq]
117126 }
118127
119128
120-func al (am,an,ao,ap,aq) = {
121- let ar = valueOrErrorMessage(getInteger(an[S], z), "WLGOLD is not issued yet")
122- let as = assetBalance(an[R], ao)
123- let at = assetBalance(an[P], ao)
124- let au = (assetBalance(an[S], ao) - ap)
125- let av = assetBalance(an[T], ao)
126- let aw = an[U]
127- let ax = (assetBalance(aw, ao) + valueOrElse(getInteger(aw, A), 0))
128- let ay = ((as + au) + ax)
129- let az = valueOrErrorMessage(getBinary(an[S], "wlg_assetId"), "Not initialized yet")
130- let aA = lastBlock.timestamp
131- let aB = valueOrErrorMessage(getInteger(an[S], y), "Not initialized")
132- let aC = fraction(c, d, a)
133- let aD = valueOrElse(getInteger(an[S], n), aC)
134- let aE = valueOrElse(getInteger(an[S], m), aB)
135- let aF = addressFromStringValue(value(getString(an[S], k)))
136- let aG = min([fraction(aC, (aA - aE), h), aD])
137- let aH = assetBalance(aF, az)
138- let aI = fraction(c, e, a)
139- let aJ = valueOrElse(getInteger(an[S], p), aI)
140- let aK = valueOrElse(getInteger(an[S], o), aB)
141- let aL = addressFromStringValue(value(getString(an[S], l)))
142- let aM = min([fraction(aI, (aA - aK), (3 * h)), aJ])
143- let aN = assetBalance(aL, az)
144- let aO = fraction(c, f, a)
145- let aP = valueOrElse(getInteger(an[S], r), aO)
146- let aQ = valueOrElse(getInteger(an[S], q), aB)
147- let aR = min([fraction(aO, (aA - aQ), (3 * h)), aP])
148- let aS = assetBalance(an[P], az)
149- let aT = valueOrElse(getInteger(an[S], t(am)), aB)
150- let aU = ((aT - aB) / h)
151- let aV = min([aA, (aB + (3 * h))])
152- let aW = min([((aA - aB) / h), 2])
153- let aX = V(am, an[Q])
154- let aY = w(aW)
155- let aZ = if ((aU == aW))
129+let ar = 0
130+
131+let as = 1
132+
133+let at = 2
134+
135+let au = 3
136+
137+func av (aw,ax,ay,az,aA) = {
138+ let aB = valueOrErrorMessage(getInteger(ax[U], z), "WLGOLD is not issued yet")
139+ let aC = assetBalance(ax[T], ay)
140+ let aD = assetBalance(ax[R], ay)
141+ let aE = (assetBalance(ax[U], ay) - az)
142+ let aF = assetBalance(ax[V], ay)
143+ let aG = ax[W]
144+ let aH = (assetBalance(aG, ay) + valueOrElse(getInteger(aG, A), 0))
145+ let aI = ((aC + aE) + aH)
146+ let aJ = valueOrErrorMessage(getBinary(ax[U], "wlg_assetId"), "Not initialized yet")
147+ let aK = lastBlock.timestamp
148+ let aL = valueOrErrorMessage(getInteger(ax[U], y), "Not initialized")
149+ let aM = fraction(c, d, a)
150+ let aN = valueOrElse(getInteger(ax[U], n), aM)
151+ let aO = valueOrElse(getInteger(ax[U], m), aL)
152+ let aP = addressFromStringValue(value(getString(ax[U], k)))
153+ let aQ = min([fraction(aM, (aK - aO), h), aN])
154+ let aR = assetBalance(aP, aJ)
155+ let aS = fraction(c, e, a)
156+ let aT = valueOrElse(getInteger(ax[U], p), aS)
157+ let aU = valueOrElse(getInteger(ax[U], o), aL)
158+ let aV = addressFromStringValue(value(getString(ax[U], l)))
159+ let aW = min([fraction(aS, (aK - aU), (3 * h)), aT])
160+ let aX = assetBalance(aV, aJ)
161+ let aY = fraction(c, f, a)
162+ let aZ = valueOrElse(getInteger(ax[U], r), aY)
163+ let ba = valueOrElse(getInteger(ax[U], q), aL)
164+ let bb = min([fraction(aY, (aK - ba), (3 * h)), aZ])
165+ let bc = assetBalance(ax[R], aJ)
166+ let bd = valueOrElse(getInteger(ax[U], t(aw)), aL)
167+ let be = ((bd - aL) / h)
168+ let bf = min([aK, (aL + (3 * h))])
169+ let bg = min([((aK - aL) / h), 2])
170+ let bh = Y(aw, ax[S], ax[X])
171+ let bi = w(bg)
172+ let bj = if ((be == bg))
156173 then {
157- let ba = fraction(aY, (aV - aT), h)
158- let bb = fraction(ba, aq, a)
159- let bc = (aT + fraction((aV - aT), aq, a))
160- $Tuple3(bb, ba, bc)
174+ let bk = fraction(bi, (bf - bd), h)
175+ let bl = fraction(bk, aA, a)
176+ let bm = (bd + fraction((bf - bd), aA, a))
177+ $Tuple3(bl, bk, bm)
161178 }
162- else if ((aU == (aW - 1)))
179+ else if ((be == (bg - 1)))
163180 then {
164- let bd = fraction(w((aW - 1)), ((aB + (h * aW)) - aT), h)
165- let ba = fraction(aY, (aV - (aB + (h * aW))), h)
166- let be = (bd + ba)
167- let bb = fraction(be, aq, a)
168- let bc = if ((bd >= bb))
169- then (aT + fraction(h, bb, w((aW - 1))))
170- else ((aB + (h * aW)) + fraction(h, (bb - bd), aY))
171- $Tuple3(bb, be, bc)
181+ let bn = fraction(w((bg - 1)), ((aL + (h * bg)) - bd), h)
182+ let bk = fraction(bi, (bf - (aL + (h * bg))), h)
183+ let bo = (bn + bk)
184+ let bl = fraction(bo, aA, a)
185+ let bm = if ((bn >= bl))
186+ then (bd + fraction(h, bl, w((bg - 1))))
187+ else ((aL + (h * bg)) + fraction(h, (bl - bn), bi))
188+ $Tuple3(bl, bo, bm)
172189 }
173190 else {
174- let bf = fraction(w((aW - 2)), ((aB + (h * (aW - 1))) - aT), h)
175- let bd = w((aW - 1))
176- let ba = fraction(aY, (aV - (aB + (h * aW))), h)
177- let be = ((bf + bd) + ba)
178- let bb = fraction(be, aq, a)
179- let bc = if ((bf >= bb))
180- then (aT + fraction(h, bb, w((aW - 2))))
181- else if (((bf + bd) >= bb))
182- then ((aB + (h * (aW - 1))) + fraction(h, (bb - bf), w((aW - 1))))
183- else ((aB + (h * aW)) + fraction(h, ((bb - bf) - bd), aY))
184- $Tuple3(bb, be, bc)
191+ let bp = fraction(w((bg - 2)), ((aL + (h * (bg - 1))) - bd), h)
192+ let bn = w((bg - 1))
193+ let bk = fraction(bi, (bf - (aL + (h * bg))), h)
194+ let bo = ((bp + bn) + bk)
195+ let bl = fraction(bo, aA, a)
196+ let bm = if ((bp >= bl))
197+ then (bd + fraction(h, bl, w((bg - 2))))
198+ else if (((bp + bn) >= bl))
199+ then ((aL + (h * (bg - 1))) + fraction(h, (bl - bp), w((bg - 1))))
200+ else ((aL + (h * bg)) + fraction(h, ((bl - bp) - bn), bi))
201+ $Tuple3(bl, bo, bm)
185202 }
186- let bg = aZ._1
187- let bh = aZ._2
188- let bi = aZ._3
189- let bj = fraction(fraction(aY, j, h), 25, aX[0])
190- let bk = valueOrElse(getInteger(an[S], s), 0)
191-[ar, fraction(ay, b, ar), ay, as, at, au, av, aB, aE, aC, aD, aG, aH, aI, aJ, aM, aN, aO, aP, aR, aS, aW, bk, aY, aT, fraction(bg, aX[1], aX[0]), bj, ax, fraction(bh, aX[1], aX[0]), bi]
203+ let bq = bj._1
204+ let br = bj._2
205+ let bs = bj._3
206+ let bt = fraction(fraction(bi, j, h), 25, bh[ar])
207+ let bu = valueOrElse(getInteger(ax[U], s), 0)
208+ let bv = fraction(bq, ((bh[as] * b) + bh[au]), ((bh[ar] * b) + bh[at]))
209+ let bw = fraction(br, ((bh[as] * b) + bh[au]), ((bh[ar] * b) + bh[at]))
210+[aB, fraction(aI, b, aB), aI, aC, aD, aE, aF, aL, aO, aM, aN, aQ, aR, aS, aT, aW, aX, aY, aZ, bb, bc, bg, bu, bi, bd, bv, bt, aH, bw, bs]
192211 }
193212
194213
195-let bl = take(drop(this.bytes, 1), 1)
214+let bx = take(drop(this.bytes, 1), 1)
196215
197-let bm = {
198- let bn = bl
199- if ((base58'2W' == bn))
216+let by = {
217+ let bz = bx
218+ if ((base58'2W' == bz))
200219 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
201- else if ((base58'2T' == bn))
220+ else if ((base58'2T' == bz))
202221 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
203222 else throw("Unknown chain")
204223 }
205224
206-let bo = {
207- let bn = bl
208- if ((base58'2W' == bn))
225+let bA = {
226+ let bz = bx
227+ if ((base58'2W' == bz))
209228 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
210- else if ((base58'2T' == bn))
229+ else if ((base58'2T' == bz))
211230 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
212231 else throw("Unknown chain")
213232 }
214233
215-let bp = {
216- let bn = bl
217- if ((base58'2W' == bn))
234+let bB = {
235+ let bz = bx
236+ if ((base58'2W' == bz))
218237 then 86400000
219- else if ((base58'2T' == bn))
238+ else if ((base58'2T' == bz))
220239 then 60000
221240 else throw("Unknown chain")
222241 }
223242
224-let bq = "__"
243+let bC = "__"
225244
226-let br = 1000000
245+let bD = 1000000
227246
228-let bs = 100000000
247+let bE = 100000000
229248
230-let bt = 100000
249+let bF = 100000
231250
232-func bu (bv,bw) = valueOrErrorMessage(getString(bv, bw), makeString(["mandatory ", toString(bv), ".", bw, " is not defined"], ""))
251+func bG (bH,bI) = valueOrErrorMessage(getString(bH, bI), makeString(["mandatory ", toString(bH), ".", bI, " is not defined"], ""))
233252
234253
235-let bx = 1
254+let bJ = 1
236255
237-let by = 2
256+let bK = 2
238257
239-let bz = 4
258+let bL = 4
240259
241-let bA = 5
260+let bM = 5
242261
243-let bB = 6
262+let bN = 6
244263
245-func bC () = "%s__restConfig"
264+let bO = 8
265+
266+func bP () = "%s__restConfig"
246267
247268
248-func bD () = "%s__restAddr"
269+func bQ () = "%s__restAddr"
249270
250271
251-func bE (bF) = split_4C(bu(bF, bC()), bq)
272+func bR (bS) = split_4C(bG(bS, bP()), bC)
252273
253274
254-func bG (bH,bI) = valueOrErrorMessage(addressFromString(bH[bI]), ("Rest cfg doesn't contain address at index " + toString(bI)))
275+func bT (bU,bV) = valueOrErrorMessage(addressFromString(bU[bV]), ("Rest cfg doesn't contain address at index " + toString(bV)))
255276
256277
257-let bJ = addressFromStringValue(valueOrElse(getString(this, bD()), bo))
278+let bW = addressFromStringValue(valueOrElse(getString(this, bQ()), bA))
258279
259-let bH = bE(bJ)
280+let bU = bR(bW)
260281
261-let X = bG(bH, bx)
282+let aa = bT(bU, bJ)
262283
263-let bK = bG(bH, by)
284+let bX = bT(bU, bK)
264285
265-let bL = bG(bH, bz)
286+let bY = bT(bU, bL)
266287
267-let bM = bG(bH, bA)
288+let bZ = bT(bU, bM)
268289
269-let aw = bG(bH, bB)
290+let aG = bT(bU, bN)
270291
271-let bN = "wlg_assetId"
292+let ab = bT(bU, bO)
272293
273-let bO = valueOrErrorMessage(getBinary(bL, bN), "Not initialized yet")
294+let ca = "wlg_assetId"
274295
275-let bP = 1
296+let cb = valueOrErrorMessage(getBinary(bY, ca), "WLGOLD is not issued yet")
276297
277-func bQ () = "resTypesProportions"
298+let cc = 1
299+
300+func cd () = "resTypesProportions"
278301
279302
280-func bR (bS) = ("stakedPiecesByOwner_" + bS)
303+func ce (cf) = ("stakedPiecesByOwner_" + cf)
281304
282305
283-func bT (bU) = {
284- let bn = bU
285- if ($isInstanceOf(bn, "Int"))
306+func cg (ch) = {
307+ let bz = ch
308+ if ($isInstanceOf(bz, "Int"))
286309 then {
287- let bV = bn
288- bV
310+ let ci = bz
311+ ci
289312 }
290313 else throw("fail to cast into Int")
291314 }
292315
293316
294-func bW (W) = {
295- let Y = split(valueOrElse(getString(X, bQ()), "0_0_0_0_0_0"), "_")
296- func Z (aa,ab) = (aa + parseIntValue(ab))
317+func cj (Z) = {
318+ let ac = split(valueOrElse(getString(aa, cd()), "0_0_0_0_0_0"), "_")
319+ func ad (ae,af) = (ae + parseIntValue(af))
297320
298- let ac = {
299- let ad = Y
300- let ae = size(ad)
301- let af = 0
302- func ag (ah,ai) = if ((ai >= ae))
303- then ah
304- else Z(ah, ad[ai])
321+ let ck = {
322+ let ah = ac
323+ let ai = size(ah)
324+ let aj = 0
325+ func ak (al,am) = if ((am >= ai))
326+ then al
327+ else ad(al, ah[am])
305328
306- func aj (ah,ai) = if ((ai >= ae))
307- then ah
329+ func an (al,am) = if ((am >= ai))
330+ then al
308331 else throw("List size exceeds 6")
309332
310- aj(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6)
333+ an(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6)
311334 }
312- let ak = valueOrElse(getInteger(X, bR(W)), 0)
313-[ac, ak]
335+ let cl = valueOrElse(getInteger(aa, ce(Z)), 0)
336+[ck, cl]
314337 }
315338
316339
317-func bX (bY,bZ) = {
318- let ca = pow(10, 0, bZ, 0, 0, DOWN)
319- let cb = toString((bY % ca))
320- let cc = drop(toString(ca), (1 + size(cb)))
321- (((toString((bY / ca)) + ".") + cc) + cb)
340+func cm (cn,co) = {
341+ let cp = pow(10, 0, co, 0, 0, DOWN)
342+ let cq = toString((cn % cp))
343+ let cr = drop(toString(cp), (1 + size(cq)))
344+ (((toString((cn / cp)) + ".") + cr) + cq)
322345 }
323346
324347
325-let cd = "profitAddr"
348+let cs = "profitAddr"
326349
327-let ce = "stakersAmountPaidTotal"
350+let ct = "stakersAmountPaidTotal"
328351
329-func cf (u) = ("stakersAmountPaidUser_" + u)
352+func cu (u) = ("stakersAmountPaidUser_" + u)
330353
331354
332-func cg () = bT(invoke(X, "saveLastTx", nil, nil))
355+func cv () = cg(invoke(aa, "saveLastTx", nil, nil))
333356
334357
335-func ch (u) = {
336- let ci = valueOrElse(getInteger(v(u)), 0)
337- let aA = lastBlock.timestamp
338- if ((bp > (aA - ci)))
339- then throw((("Arbitrages are possible once a " + toString((bp / 60000))) + "min"))
358+func cw (u) = {
359+ let cx = valueOrElse(getInteger(v(u)), 0)
360+ let aK = lastBlock.timestamp
361+ if ((bB > (aK - cx)))
362+ then throw((("Arbitrages are possible once a " + toString((bB / 60000))) + "min"))
340363 else {
341- let cj = bW(u)[bP]
342- (cj * bs)
364+ let cy = cj(u)[cc]
365+ let cz = valueOrElse(getInteger(ab, B(u)), 0)
366+ ((cy * bE) + cz)
343367 }
344368 }
345369
346370
347-func ck (u,cl) = {
348- let cm = addressFromStringValue(u)
349- let cn = al(u, [bJ, X, bK, bL, bM, aw], bm, 0, cl)
350- let aA = lastBlock.timestamp
351- let aB = cn[E]
352- let aD = cn[F]
353- let co = cn[G]
354- let aJ = cn[H]
355- let cp = cn[I]
356- let aP = cn[J]
357- let cq = cn[K]
358- if (((aA - aB) > i))
371+func cA (u,cB) = {
372+ let cC = addressFromStringValue(u)
373+ let cD = av(u, [bW, aa, bX, bY, bZ, aG, ab], by, 0, cB)
374+ let aK = lastBlock.timestamp
375+ let aL = cD[G]
376+ let aN = cD[H]
377+ let cE = cD[I]
378+ let aT = cD[J]
379+ let cF = cD[K]
380+ let aZ = cD[L]
381+ let cG = cD[M]
382+ if (((aK - aL) > i))
359383 then throw("Please modify contract for next 1.5 years, according to stats")
360384 else {
361- let bg = cn[M]
362- let cr = cf(u)
363- let cs = cn[N]
364- let ct = cn[O]
365- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), co, bO), ScriptTransfer(addressFromStringValue(value(getString(l))), cp, bO), ScriptTransfer(bJ, cq, bO), IntegerEntry(cr, (valueOrElse(getInteger(cr), 0) + bg)), IntegerEntry(ce, (valueOrElse(getInteger(ce), 0) + cs)), IntegerEntry(s, (cn[L] - cs)), IntegerEntry(n, (aD - co)), IntegerEntry(m, aA), IntegerEntry(p, (aJ - cp)), IntegerEntry(o, aA), IntegerEntry(r, (aP - cq)), IntegerEntry(q, aA), IntegerEntry(t(u), ct)], $Tuple2(bg, cs))
385+ let bq = cD[O]
386+ let cH = cu(u)
387+ let cI = cD[P]
388+ let cJ = cD[Q]
389+ $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(k))), cE, cb), ScriptTransfer(addressFromStringValue(value(getString(l))), cF, cb), ScriptTransfer(bW, cG, cb), IntegerEntry(cH, (valueOrElse(getInteger(cH), 0) + bq)), IntegerEntry(ct, (valueOrElse(getInteger(ct), 0) + cI)), IntegerEntry(s, (cD[N] - cI)), IntegerEntry(n, (aN - cE)), IntegerEntry(m, aK), IntegerEntry(p, (aT - cF)), IntegerEntry(o, aK), IntegerEntry(r, (aZ - cG)), IntegerEntry(q, aK), IntegerEntry(t(u), cJ)], $Tuple2(bq, cI))
366390 }
367391 }
368392
369393
370-@Callable(cu)
371-func constructorV1 (cv,aF,aL,cw) = if ((cu.caller != this))
394+@Callable(cK)
395+func constructorV1 (cL,aP,aV,cM) = if ((cK.caller != this))
372396 then throw("Permission denied")
373- else if (isDefined(getBinary(bN)))
397+ else if (isDefined(getBinary(ca)))
374398 then throw("Already initialized")
375399 else {
376- let ar = c
377- let cx = Issue("WLGOLD", "WavesLands Gold investment token", ar, 8, true, unit, 0)
378- let cy = calculateAssetId(cx)
379-[cx, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, ar), IntegerEntry(ce, 0), IntegerEntry(s, fraction(c, g, br)), BinaryEntry(bN, cy), StringEntry(bD(), cv), StringEntry(k, aF), StringEntry(l, aL), StringEntry(cd, cw)]
400+ let aB = c
401+ let cN = Issue("WLGOLD", "WavesLands Gold investment token", aB, 8, true, unit, 0)
402+ let cO = calculateAssetId(cN)
403+[cN, IntegerEntry(y, lastBlock.timestamp), IntegerEntry(z, aB), IntegerEntry(ct, 0), IntegerEntry(s, fraction(c, g, bD)), BinaryEntry(ca, cO), StringEntry(bQ(), cL), StringEntry(k, aP), StringEntry(l, aV), StringEntry(cs, cM)]
380404 }
381405
382406
383407
384-@Callable(cu)
385-func buyWlg (cz) = {
386- let cA = cg()
387- if ((size(cu.payments) != 1))
408+@Callable(cK)
409+func buyWlg (cP) = {
410+ let cQ = cv()
411+ if ((size(cK.payments) != 1))
388412 then throw("exactly 1 payment must be attached")
389413 else {
390- let cB = cu.payments[0]
391- let cC = cB.amount
392- let cD = valueOrErrorMessage(cB.assetId, "USDT payments only!")
393- if ((cD != bm))
414+ let cR = cK.payments[0]
415+ let cS = cR.amount
416+ let cT = valueOrErrorMessage(cR.assetId, "USDT payments only!")
417+ if ((cT != by))
394418 then throw("USDT payments only!")
395419 else {
396- let cm = cu.caller
397- let u = toString(cm)
398- if ((bt > cC))
399- then throw((("You can trade min " + bX(bt, 6)) + " USDT"))
420+ let cC = cK.caller
421+ let u = toString(cC)
422+ if ((bF > cS))
423+ then throw((("You can trade min " + cm(bF, 6)) + " USDT"))
400424 else {
401- let cn = al("", [bJ, X, bK, bL, bM, aw], bm, cC, br)
402- let cE = cn[B]
403- let cF = cn[D]
404- let cG = fraction(cF, bs, cE)
405- let cH = fraction(cG, 6, 5)
406- let cI = fraction(cC, bs, cH)
407- let cJ = ch(u)
408- if ((cI > cJ))
409- then throw((("You can get max " + bX(cJ, 8)) + " WLGOLD"))
410- else if ((cz > cI))
425+ let cD = av("", [bW, aa, bX, bY, bZ, aG], by, cS, bD)
426+ let cU = cD[D]
427+ let cV = cD[F]
428+ let cW = fraction(cV, bE, cU)
429+ let cX = fraction(cW, 6, 5)
430+ let cY = fraction(cS, bE, cX)
431+ let cZ = cw(u)
432+ if ((cY > cZ))
433+ then throw((("You can get max " + cm(cZ, 8)) + " WLGOLD"))
434+ else if ((cP > cY))
411435 then throw("Price changed during operation, please try again")
412436 else {
413- let cK = (cC / 6)
414- let cL = (cC - cK)
415- let cM = fraction(cE, cL, cF)
416- $Tuple2([Reissue(bO, cM, true), IntegerEntry(z, (cE + cM)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cd))), cK, bm), ScriptTransfer(cm, cI, bO)], cA)
437+ let da = (cS / 6)
438+ let db = (cS - da)
439+ let dc = fraction(cU, db, cV)
440+ $Tuple2([Reissue(cb, dc, true), IntegerEntry(z, (cU + dc)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cs))), da, by), ScriptTransfer(cC, cY, cb)], cQ)
417441 }
418442 }
419443 }
420444 }
421445 }
422446
423447
424448
425-@Callable(cu)
426-func sellWlg (cz) = {
427- let cA = cg()
428- if ((size(cu.payments) != 1))
449+@Callable(cK)
450+func sellWlg (cP) = {
451+ let cQ = cv()
452+ if ((size(cK.payments) != 1))
429453 then throw("exactly 1 payment must be attached")
430454 else {
431- let cB = cu.payments[0]
432- let cN = cB.amount
433- let cm = cu.caller
434- let u = toString(cm)
435- let cJ = ch(u)
436- if ((cN > cJ))
437- then throw((("You can spend max " + bX(cJ, 8)) + " WLGOLD"))
455+ let cR = cK.payments[0]
456+ let dd = cR.amount
457+ let cC = cK.caller
458+ let u = toString(cC)
459+ let cZ = cw(u)
460+ if ((dd > cZ))
461+ then throw((("You can spend max " + cm(cZ, 8)) + " WLGOLD"))
438462 else {
439- let cD = valueOrErrorMessage(cB.assetId, "WLGOLD payments only!")
440- if ((cD != bO))
463+ let cT = valueOrErrorMessage(cR.assetId, "WLGOLD payments only!")
464+ if ((cT != cb))
441465 then throw("WLGOLD payments only!")
442466 else {
443- let cn = al("", [bJ, X, bK, bL, bM, aw], bm, 0, br)
444- let cE = cn[B]
445- let cO = fraction(cn[C], 4, 5)
446- let cC = fraction(cN, cO, bs)
447- if ((bt > cC))
448- then throw((("You can trade min " + bX(bt, 6)) + " USDT"))
449- else if ((cz > cC))
467+ let cD = av("", [bW, aa, bX, bY, bZ, aG], by, 0, bD)
468+ let cU = cD[D]
469+ let de = fraction(cD[E], 4, 5)
470+ let cS = fraction(dd, de, bE)
471+ if ((bF > cS))
472+ then throw((("You can trade min " + cm(bF, 6)) + " USDT"))
473+ else if ((cP > cS))
450474 then throw("Price changed during operation, please try again")
451475 else {
452- let cK = (cC / 4)
453- let cP = fraction((cC + cK), cE, cn[D])
454- $Tuple2([Burn(bO, cP), IntegerEntry(z, (cE - cP)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cd))), cK, bm), ScriptTransfer(cm, cC, bm)], cA)
476+ let da = (cS / 4)
477+ let df = fraction((cS + da), cU, cD[F])
478+ $Tuple2([Burn(cb, df), IntegerEntry(z, (cU - df)), IntegerEntry(v(u), lastBlock.timestamp), ScriptTransfer(addressFromStringValue(value(getString(cs))), da, by), ScriptTransfer(cC, cS, by)], cQ)
455479 }
456480 }
457481 }
458482 }
459483 }
460484
461485
462486
463-@Callable(cu)
487+@Callable(cK)
464488 func claim () = {
465- let cA = cg()
466- if ((size(cu.payments) != 0))
489+ let cQ = cv()
490+ if ((size(cK.payments) != 0))
467491 then throw("No payments required")
468492 else {
469- let cQ = ck(toString(cu.caller), br)
470- let cR = cQ._1
471- $Tuple2((cR :+ ScriptTransfer(cu.caller, cQ._2._1, bO)), cA)
493+ let dg = cA(toString(cK.caller), bD)
494+ let dh = dg._1
495+ $Tuple2((dh :+ ScriptTransfer(cK.caller, dg._2._1, cb)), cQ)
472496 }
473497 }
474498
475499
476500
477-@Callable(cu)
478-func onStakeUnstakeLand (u) = if ((cu.caller != X))
501+@Callable(cK)
502+func onStakeUnstakeLand (u) = if ((cK.caller != aa))
479503 then throw("Permission denied")
480504 else {
481- let cQ = ck(u, br)
482- let cR = cQ._1
483- $Tuple2((cR :+ ScriptTransfer(addressFromStringValue(u), cQ._2._1, bO)), cQ._2)
505+ let dg = cA(u, bD)
506+ let dh = dg._1
507+ $Tuple2((dh :+ ScriptTransfer(addressFromStringValue(u), dg._2._1, cb)), dg._2)
484508 }
485509
486510
487511
488-@Callable(cu)
489-func claimRob (cS,cT,cU) = if ((cu.caller != X))
512+@Callable(cK)
513+func claimRob (di,dj,dk) = if ((cK.caller != aa))
490514 then throw("Permission denied")
491515 else {
492- let cQ = ck(cS, cU)
493- $Tuple2((cQ._1 :+ ScriptTransfer(addressFromStringValue(cT), (cQ._2._2 - cQ._2._1), bO)), cQ._2)
516+ let dg = cA(di, dk)
517+ $Tuple2((dg._1 :+ ScriptTransfer(addressFromStringValue(dj), (dg._2._2 - dg._2._1), cb)), dg._2)
494518 }
495519
496520

github/deemru/w8io/169f3d6 
173.83 ms