tx · 3hHMirAbiaYJsBNcpsN8YEycppuoB2pyrQncF4Z7mWzH

3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9:  -0.01800000 Waves

2024.03.06 09:01 [4071596] smart account 3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9 > SELF 0.00000000 Waves

{ "type": 13, "id": "3hHMirAbiaYJsBNcpsN8YEycppuoB2pyrQncF4Z7mWzH", "fee": 1800000, "feeAssetId": null, "timestamp": 1709704956411, "version": 2, "chainId": 87, "sender": "3PCxF4JryswYYp9mpUtE725wjTgvpBmp3M9", "senderPublicKey": "ABaPDrNzForWeg3KKG9KFKPWxuihEJxK9fjZ9nDfvE26", "proofs": [ "S7ANoqY4ktW75bg5zxLUNFmzSgoZ42QeHjGRwJYQFZCiT8Wq277bBN6XbAQ6u295KrTvAyP2jwQkt1fvCLC1L7i" ], "script": "base64:BgJACAISABIAEgASABIDCgEIEgASABIAEgMKAQgSABIAEgMKAQgSABIAEgMKAQgSABIECgIICBIECgIIARIECgIICCQBDXRyeUdldEludGVnZXICB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgAAAmQ4AIDC1y8AAmQ2AMCEPQAHcG9vbEJCQgEaAVdS7pNWFE1+B4zShQ/mflxXN34cn+88gh0ADXB1enpsZVN0YWtpbmcJAQdBZGRyZXNzAQEaAVeUaIz57qK5qp/W9Y68qY9nGpwG9BYpibsACWJiYlBvb2xJZAEaAVdS7pNWFE1+B4zShQ/mflxXN34cn+88gh0ADHB1enpsZU1hcmtldAkBB0FkZHJlc3MBARoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABnB1enpsZQEg8Rr+Jf72mTj0aSrE3+ES1keyxsoOujcJr3dtH46i5WMABHJvbWUBIItflAGEw2XBJDSO/xv8cJExSGrJMeqoy5Pz+Z80RAjPAARzdXJmASCS0fRK4hEBK/R+6t4hjj3F+8nyfc6Hsu1SGfA6TiRY9QAMcHV6emxlU3Rha2VkCQENdHJ5R2V0SW50ZWdlcgIFDXB1enpsZVN0YWtpbmcJAKwCAgkApQgBBQR0aGlzAgdfc3Rha2VkAAxwdXp6bGVJblBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQliYmJQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBnB1enpsZQIIX2JhbGFuY2UADHByb2plY3RTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFCWJiYlBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAKdG90YWxTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFCWJiYlBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQAC2Fzc2V0V2VpZ2h0CQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUJYmJiUG9vbElkCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQZwdXp6bGUCB193ZWlnaHQADUJCQmxwSW5QdXp6bGUJAGsDCQBoAgkAaQIFDHB1enpsZUluUG9vbAULYXNzZXRXZWlnaHQAkE4FDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQAWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAIUQWRkcmVzc2VzIHJlZ2lzdGVyZWQACWFkZHJlc3NlcwkAswICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAABABBrZXlCdXJueHRuQW1vdW50AhZCVVJOLVhUTiB0b3RhbCByZXdhcmRzAA1rZXlSb21lQW1vdW50AhJST01FIHRvdGFsIHJld2FyZHMAD2tleVB1enpsZUFtb3VudAIUUFVaWkxFIHRvdGFsIHJld2FyZHMADmtleVdhdmVzQW1vdW50AhNXQVZFUyB0b3RhbCByZXdhcmRzABJrZXlXaGlybHBvb2xBbW91bnQCF1dISVJMUE9PTCB0b3RhbCByZXdhcmRzABBrZXlUb3RhbE5GVHBvd2VyAg9Ub3RhbCBORlQgcG93ZXIAE2tleVRvdGFsUHV6emxlVmFsdWUCElRvdGFsIHB1enpsZSB2YWx1ZQATa2V5VG90YWxCdXJueHRuUGFpZAITVG90YWwgQlVSTi1YVE4gcGFpZAAVa2V5VG90YWxXaGlybHBvb2xQYWlkAhRUb3RhbCBXSElSTFBPT0wgcGFpZAAQa2V5VG90YWxSb21lUGFpZAIPVG90YWwgUk9NRSBwYWlkABFrZXlUb3RhbFdhdmVzUGFpZAIQVG90YWwgV0FWRVMgcGFpZAASa2V5VG90YWxQdXp6bGVQYWlkAhFUb3RhbCBQVVpaTEUgcGFpZAAHV0ZTbGlzdAkAzAgCAixHbnB5NW5WYWpQUDNYUVFWeHJIYm9NQXNYdGpueVdBeHliTURkS3JicjhzRAkAzAgCAixCVDlRNG1RZFFRbWVpMnI1WU5NQk1hc1pCUWo3bXlOYWl6NlFIYmE1Y1BYUwkAzAgCAixCTXZreUZ0UFZtRmF0cEZSOVFWRktSNU1ZVGNaVlRZMlZVd0ZaMjV2ckFBYwkAzAgCAiw3N1JxdThUTGpCZE10RHVYZDlvNWZVU0dvNjR6UWU1RkNjYW81TDhIdDlqOAkAzAgCAiw4S25oQkxWNDlTREp6cTFTU3kxWXZHSFlZNm03UTE0NmJWN1E2R0txUWI1QwkAzAgCAixGRnhzVWZLYkhFVzR6Wnl3TFVMNTVpcDhOcXA2ZmNXRHNxN3kzYW45eVFoZQkAzAgCAiw1blFSZWRHSG9WcEVRYXNNUWl2YjFVTXZGQkNIWGVmWFBYdFVSYk1NbmZzdQkAzAgCAiw2TjNNU0Z0Skd2VDc5dWNYNHBMZnR4UDdmR3M4RG5tWWRQZWR2bm9OYlZ0OQkAzAgCAitkRkMyaUpMNExEV2FzcTlZekhmMmtXZlBOUDY5VHlhbWlpOTNuczlCSHZNCQDMCAICLEExNThUN3laTHRtdWlNRXMyMVA5alYyZnRiTVh6eTNNbmZITUV1MWVNQUdLBQNuaWwAB0JCQmxpc3QJAMwIAgIsOXBDeG9HdEQxOEdlSDlnQ2VtenFyakhNTWpmeUJRRGZzclJBdXhTUmFnTWMJAMwIAgIsN0RnRmdDa0JqVkRjNVA5Wmd3c1ZMOVNpVGk3a1hKdVM0YVJWZ2I3WkhXM2sJAMwIAgIsNzZiVHZFOHR0SHZzdU4xRnVINEtjOFFVVzRrTDRtOGMxY2pmc1h5MkdmYlYJAMwIAgIsNFpyZjRINXRpRmNRTDhlUW1uQTJ3SjFYV1BFQkg2aDFHMk1lZlpEWW1jQ0IJAMwIAgIsMkR0QzRuRm54ejVVTTZtYmpQd01WWnBRV1pGVXF4czUyb1pyQmVOUms5QW8JAMwIAgIsRGpaR01BRmZvUVdrTVczUzVGVHNRTjNqb25jWnQ2QnNtaG5FSzNnZ0x4bU4JAMwIAgIsQm5lYVpYRDZvdkRKY1Y1cmdmcjhoc0haYU1Rc0pROERINmE1Z1RuR0NwQmMJAMwIAgIsNEVLZmd6RmtkNVVHS3JqbmFKVjN3N2FyZ1cxWW1GNGhxNTR4V1FGekFYYjkJAMwIAgIsOGhHRGtXS2l1MmlnRHBXVDNIcHI0bWNoREQ2eHdKOWhHbTJoMmpuVXZUcXoJAMwIAgIsRTNablNlanBYTDFYcjZWRzRRb0xoOHhvZDlOTWdwUGU0NzNyOVFrMkhpYkwFA25pbAANU1VSRmJvYXJkTGlzdAkAzAgCAixEekxTZ0VhQkI0VU5iUENaZWtQU3piUTg1S29rTUI3ZDFLUlJtelVQdTVocwkAzAgCAitXbVd6c2JiM1BOdnpKNHc0RmI3M0tjb05HTFh1bWdZWmFnVjIyekVpWDF3CQDMCAICLDdScnhiZ2F5VWtzUEhyQTc5OXBLdUNyNjFyZVQ4bkVOZHFDa2dWSFBnYU4yCQDMCAICLEZtRExmenNwYlZKZUtoS2R1TERVYmEySG9WZFJyS3Rzd0RLTVUzZTlxanRQCQDMCAICLEhtUXZWeVFkRWphZkxycEtQU2lnZGFmdmNZdkxiTllHRWdWQ3hMWlJXdDF5CQDMCAICLDJyVnhOTVh1dnVnNzRUb3JMUVpHQzJFUkhqQWJKblZVZ05YUTFrSm10bkFlCQDMCAICLDl5Yjl5R0ptNmd6Vm96Qkh1UVZIQmRBbnpmY3QzTjliUnBkampOVW5yemNDCQDMCAICK3MxU2ZHVnNoZjJqS0NBOUt2dktLdlV1Szh1dHAzTmUzZWU4THA2S0tMUncJAMwIAgIsM0UzeWI3VHZESzc2MmRuMTFkbVJMd2FwZ2hhZWZRVUV5dW5WZFhTTnA0dEIJAMwIAgIsRkg3NVR2QXB5VnRmZDlYNWExQXIxOU5zOUROSnZ6cHpMRkU1cGpoMXdpNGgJAMwIAgIsRWdxa2JEeVdSUGdWTlZxdEVFdFJTeldjR0QzM29yVm9FMmJ6WWRBZGllUVMJAMwIAgIsRHNLeUpwSkNaY0Z2OWpTblFiUVZHNEp4M1dTUDFLdGZIaEFLVGtTS3JWQmoJAMwIAgIsQWVzUHI1VUZEZ1k1alpYWVVaOEprYll0Sm92VmRESGJ5MTVTQ2tzRWhtSksJAMwIAgIsQVZzZmRxdzJtNWFVTnhhMUhZOWVtTG1DTEJmVkFHVHhWdTRlZjN4RURLQzgJAMwIAgIsNWpkdlNTWTJLN2g4VWlVQ1hVZ0s5VDd6Zk1yeXF3Mml0S1A4QnlzZFhERGsJAMwIAgIsQTR2b0taZXM4TVZEQVh5UWpLa2I2YmRFY3FNYnZCNHB0emJwcVlxdmVHNW4JAMwIAgIsMzRvWkthV0hwU0pyWnZHTGRZdTVXRzhXV1hnN3J3RjJISHg4SzE1R2ZVQ1EJAMwIAgIsNzdNY0NIa21OclJNNERqcWtTTTlCOFlqdUpjS3RuNjdqUWdlMXB6WnJROFQJAMwIAgIsN05FRkJudkdHTWZZZEJuaE1MTnB1VmdTMjJMcGNnWENaZ0hmbThESG1taUEJAMwIAgIsR29GOXlva3hIZ1BOb3hvV2dqamRtR2VXaGNMWUFyU3N4cWZmUnRmWUd0ZnMFA25pbBMBaQEKaW52b2tlQ2xJMQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAJjbAkA/AcEBQR0aGlzAhFjbGFpbUludmVzdFB1enpsZQUDbmlsBQNuaWwDCQAAAgUCY2wFAmNsBAJpMQkA/AcEBQR0aGlzAghpbnZva2VyMQUDbmlsBQNuaWwDCQAAAgUCaTEFAmkxBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERY2xhaW1JbnZlc3RQdXp6bGUAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQRcm9tZUJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUEcm9tZQMJAAACBRFyb21lQmFsYW5jZUJlZm9yZQURcm9tZUJhbGFuY2VCZWZvcmUEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcED3Bvb2xPbmVUb2tlbkludgkA/AcECQEHQWRkcmVzcwEBGgFX/SXDvU5hlEHvul4SY4/FOW9JtYg69eltAiFnZW5lcmF0ZUluZGV4V2l0aE9uZVRva2VuQW5kU3Rha2UJAMwIAgkA2AQBBQdwb29sQkJCBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnB1enpsZQkA8AcCBQR0aGlzBQZwdXp6bGUFA25pbAMJAAACBQ9wb29sT25lVG9rZW5JbnYFD3Bvb2xPbmVUb2tlbkludgQQcm9tZUJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQRyb21lCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5QnVybnh0bkFtb3VudAkA8AcCBQR0aGlzBQdidXJueHRuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlSb21lQW1vdW50CQBlAgUQcm9tZUJhbGFuY2VBZnRlcgURcm9tZUJhbGFuY2VCZWZvcmUJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVdhdmVzQW1vdW50AwkAZgIJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXaGlybHBvb2xBbW91bnQJAPAHAgUEdGhpcwUJd2hpcmxwb29sBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIaW52b2tlcjEABAVyZXNldAkA/AcEBQR0aGlzAgpyZXNldENvdW50BQNuaWwFA25pbAMJAAACBQVyZXNldAUFcmVzZXQEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsCgEBcgIFYWNjdW0HYWRkcmVzcwkA/AcEBQR0aGlzAg1jb3VudE5GVHBvd2VyCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAdpbnZva2VyCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAwkAAAIFB2ludm9rZXIFB2ludm9rZXIEAXAJAPwHBAUEdGhpcwIEZGF0YQUDbmlsBQNuaWwDCQAAAgUBcAUBcAkAzAgCCQEMSW50ZWdlckVudHJ5AgIQV0ZTIHB1enpsZSB2YWx1ZQkAawMJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsUHV6emxlVmFsdWUAAQkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyAAoACQkAzAgCCQEMSW50ZWdlckVudHJ5AgIQQkJCIHB1enpsZSB2YWx1ZQkAawMJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsUHV6emxlVmFsdWUACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyAAoACQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnJlc2V0Q291bnQACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbE5GVHBvd2VyAAAFA25pbAFpAQ1jb3VudE5GVHBvd2VyAQdhZGRyZXNzCgEIZm9sZEZ1bmMCA2FjYwNXRlMJAGQCCQBkAgUDYWNjCQDwBwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MJANkEAQUDV0ZTAwkAAAIJAQx0cnlHZXRTdHJpbmcCBQxwdXp6bGVNYXJrZXQJAKwCAgkArAICAgRuZnRfBQNXRlMCB19zZWxsZXIFB2FkZHJlc3MAAQAABAhzaGFyZVdGUwoAAiRsBQdXRlNsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBCWZvbGRGdW5jQgIDYWNjA0JCQgkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQNCQkIDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FA0JCQgIHX3NlbGxlcgUHYWRkcmVzcwABAAAECHNoYXJlQkJCCgACJGwFB0JCQmxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWZvbGRGdW5jQgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACCQBkAgUIc2hhcmVXRlMFCHNoYXJlQkJCAAAEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsBApub05GVGluZGV4CQEFdmFsdWUBCQDPCAIFBGxpc3QFB2FkZHJlc3MEDmxpc3RNaW51c05vTkZUCQDRCAIFBGxpc3QFCm5vTkZUaW5kZXgEDW1pbnVzTm9ORlRzdHIJAKwCAgkAuQkCBQ5saXN0TWludXNOb05GVAIBLAIBLAkAzAgCCQELU3RyaW5nRW50cnkCBRZrZXlBZGRyZXNzZXNSZWdpc3RlcmVkBQ1taW51c05vTkZUc3RyBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIEX1dGUwUIc2hhcmVXRlMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIEX0JCQgkAaAIFCHNoYXJlQkJCAAoJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTkZUcG93ZXIJAGQCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEGtleVRvdGFsTkZUcG93ZXIJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoFA25pbAFpAQRkYXRhAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIOcHV6emxlIGJhbGFuY2UJAPAHAgUEdGhpcwUGcHV6emxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1wdXp6bGUgc3Rha2VkBQxwdXp6bGVTdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQICDXB1enpsZSBCQkIgTFAFDUJCQmxwSW5QdXp6bGUJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsUHV6emxlVmFsdWUJAGQCCQBkAgkA8AcCBQR0aGlzBQZwdXp6bGUFDHB1enpsZVN0YWtlZAUNQkJCbHBJblB1enpsZQUDbmlsAWkBCGludm9rZXIyAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEAXQJAPwHBAUEdGhpcwIOdHJhY2tUb3RhbFBhaWQFA25pbAUDbmlsAwkAAAIFAXQFAXQEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsCgEBcgIFYWNjdW0HYWRkcmVzcwkA/AcEBQR0aGlzAhFkaXN0cmlidXRlUmV3YXJkcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQHaW52b2tlcgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQDCQAAAgUHaW52b2tlcgUHaW52b2tlcgQCYnMJAPwHBAUEdGhpcwIIYnVyblN1cmYFA25pbAUDbmlsAwkAAAIFAmJzBQJicwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnRyYWNrVG90YWxQYWlkAAQNYW1vdW50QnVybnh0bgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlCdXJueHRuQW1vdW50BA9hbW91bnRXaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2hpcmxwb29sQW1vdW50BAthbW91bnRXYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBQ5rZXlXYXZlc0Ftb3VudAQKYW1vdW50Um9tZQkBDXRyeUdldEludGVnZXICBQR0aGlzBQ1rZXlSb21lQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEJ1cm54dG5QYWlkCQBkAgUNYW1vdW50QnVybnh0bgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlUb3RhbEJ1cm54dG5QYWlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlUb3RhbFdoaXJscG9vbFBhaWQJAGQCBQ9hbW91bnRXaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUVa2V5VG90YWxXaGlybHBvb2xQYWlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlUb3RhbFdhdmVzUGFpZAkAZAIFC2Ftb3VudFdhdmVzCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEWtleVRvdGFsV2F2ZXNQYWlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbFJvbWVQYWlkCQBkAgUKYW1vdW50Um9tZQkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbFJvbWVQYWlkBQNuaWwBaQERZGlzdHJpYnV0ZVJld2FyZHMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCgEIZm9sZEZ1bmMCA2FjYwNXRlMJAGQCCQBkAgUDYWNjCQDwBwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MJANkEAQUDV0ZTAwkAAAIJAQx0cnlHZXRTdHJpbmcCBQxwdXp6bGVNYXJrZXQJAKwCAgkArAICAgRuZnRfBQNXRlMCB19zZWxsZXIFB2FkZHJlc3MAAQAABAhzaGFyZVdGUwoAAiRsBQdXRlNsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBCWZvbGRGdW5jQgIDYWNjA0JCQgkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQNCQkIDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FA0JCQgIHX3NlbGxlcgUHYWRkcmVzcwABAAAECHNoYXJlQkJCCgACJGwFB0JCQmxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWZvbGRGdW5jQgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBCWZvbGRGdW5jQwIDYWNjCVNVUkZib2FyZAkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQlTVVJGYm9hcmQDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FCVNVUkZib2FyZAIHX3NlbGxlcgUHYWRkcmVzcwABAAAED2Ftb3VudFNVUkZib2FyZAoAAiRsBQ1TVVJGYm9hcmRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuY0MCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQNYW1vdW50QnVybnh0bgkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5QnVybnh0bkFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBA9hbW91bnRXaGlybHBvb2wJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAthbW91bnRXYXZlcwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxORlRwb3dlcgQKYW1vdW50Um9tZQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFDWFtb3VudEJ1cm54dG4FB2J1cm54dG4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUPYW1vdW50V2hpcmxwb29sBQl3aGlybHBvb2wJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwULYW1vdW50V2F2ZXMFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUKYW1vdW50Um9tZQUEcm9tZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCQBoAgUPYW1vdW50U1VSRmJvYXJkBQJkNgUEc3VyZgUDbmlsAWkBCGJ1cm5TdXJmAAkAzAgCCQEEQnVybgIFBHN1cmYFAmQ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhFTVVJGIHRvdGFsIGJ1cm5lZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIRU1VSRiB0b3RhbCBidXJuZWQFAmQ2BQNuaWwBaQEIcmVnaXN0ZXIAAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKUIAQgFAWkGY2FsbGVyCQACAQISYWxyZWFkeSByZWdpc3RlcmVkAwkAAAIJAJADAQkAvAkCBQlhZGRyZXNzZXMCASwAHgkAAgECC21heCByZWFjaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXICASwFA25pbAFpARByZWdpc3Rlck1hbnVhbGx5AQdhZGRyZXNzAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFB2FkZHJlc3MJAAIBAhJhbHJlYWR5IHJlZ2lzdGVyZWQDCQAAAgkAkAMBCQC8CQIFCWFkZHJlc3NlcwIBLAAoCQACAQILbWF4IHJlYWNoZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAUHYWRkcmVzcwIBLAUDbmlsAWkBDmNsYWltQnlBbnlib2R5AAMJAGYCCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAeAKALBQZoZWlnaHQJAAIBCQCsAgICFldhaXQgdGlsbCBibG9ja2hlaWdodDoJAKQDAQkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAkAaAIAHgCgCwQTcHV6emxlQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQZwdXp6bGUDCQAAAgUTcHV6emxlQmFsYW5jZUJlZm9yZQUTcHV6emxlQmFsYW5jZUJlZm9yZQQRcm9tZUJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUEcm9tZQMJAAACBRFyb21lQmFsYW5jZUJlZm9yZQURcm9tZUJhbGFuY2VCZWZvcmUEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcECGNsYWltSW52CQD8BwQJAQdBZGRyZXNzAQUHcG9vbEJCQgIRY2xhaW1JbmRleFJld2FyZHMFA25pbAUDbmlsAwkAAAIFCGNsYWltSW52BQhjbGFpbUludgQScHV6emxlQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnB1enpsZQQQcm9tZUJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQRyb21lCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlCdXJueHRuQW1vdW50CQDwBwIFBHRoaXMFB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVJvbWVBbW91bnQJAGUCBRByb21lQmFsYW5jZUFmdGVyBRFyb21lQmFsYW5jZUJlZm9yZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5UHV6emxlQW1vdW50CQBlAgUScHV6emxlQmFsYW5jZUFmdGVyBRNwdXp6bGVCYWxhbmNlQmVmb3JlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlXYXZlc0Ftb3VudAMJAGYCCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2hpcmxwb29sQW1vdW50CQDwBwIFBHRoaXMFCXdoaXJscG9vbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGludm9rZXJCeUFueWJvZHkAAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAB4AoAsFBmhlaWdodAkAAgEJAKwCAgIWV2FpdCB0aWxsIGJsb2NraGVpZ2h0OgkApAMBCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAeAKALBAVyZXNldAkA/AcEBQR0aGlzAhpkaXN0cmlidXRlUmV3YXJkc0J5QW55Ym9keQUDbmlsBQNuaWwDCQAAAgUFcmVzZXQFBXJlc2V0BARsaXN0CQC8CQIFCWFkZHJlc3NlcwIBLAoBAXICBWFjY3VtB2FkZHJlc3MJAPwHBAUEdGhpcwINY291bnRORlRwb3dlcgkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQHaW52b2tlcgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUC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eQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFDW1pbnVzTm9ORlRzdHIFA25pbAQNYW1vdW50QnVybnh0bgkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5QnVybnh0bkFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBA9hbW91bnRXaGlybHBvb2wJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAthbW91bnRXYXZlcwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxORlRwb3dlcgQKYW1vdW50Um9tZQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAxhbW91bnRQdXp6bGUJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFD2tleVB1enpsZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFDWFtb3VudEJ1cm54dG4FB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQnVybnh0blBhaWQJAGQCBQ1hbW91bnRCdXJueHRuCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsQnVybnh0blBhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUPYW1vdW50V2hpcmxwb29sBQl3aGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVRvdGFsV2hpcmxwb29sUGFpZAkAZAIFD2Ftb3VudFdoaXJscG9vbAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlUb3RhbFdoaXJscG9vbFBhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwULYW1vdW50V2F2ZXMFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleVRvdGFsV2F2ZXNQYWlkCQBkAgULYW1vdW50V2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwURa2V5VG90YWxXYXZlc1BhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUKYW1vdW50Um9tZQUEcm9tZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxSb21lUGFpZAkAZAIFCmFtb3VudFJvbWUJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxSb21lUGFpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQxhbW91bnRQdXp6bGUFBnB1enpsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5VG90YWxQdXp6bGVQYWlkCQBkAgUMYW1vdW50UHV6emxlCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVRvdGFsUHV6emxlUGFpZAUDbmlsAWkBC2RlbGV0ZUVudHJ5AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAUDbmlsAWkBCGFkZFdGU2lkAglXRlNudW1iZXIKV0ZTYXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlXRlNudW1iZXICAAUKV0ZTYXNzZXRJZAUDbmlsAWkBEmNoYW5nZUludGVnZXJFbnRyeQIJa2V5U3RyaW5nB2ludGVnZXIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdHJpbmcFB2ludGVnZXIFA25pbAFpARBjaGVja01hcmtldEVudHJ5AgNCQkIHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgIOTkZUcyBvbiBtYXJrZXQDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUMcHV6emxlTWFya2V0CQCsAgIJAKwCAgIEbmZ0XwUDQkJCAgdfc2VsbGVyBQdhZGRyZXNzAAEAAAUDbmlsAB1/EOo=", "height": 4071596, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9UjcYHuhePWxMQshwKPHDVWVLbrtchnoZGfTkFrMXc6i Next: DcJ14mcwHW96wVJ3DwssBZWqCbbsRHp1FT9CNchNFnCs Diff:
OldNewDifferences
2727
2828 let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2929
30-let puzzleMarket = Address(base58'3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A')
30+let puzzleMarket = Address(base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc')
3131
3232 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3333
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (address,key) = match getInteger(address, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 func tryGetString (address,key) = match getString(address, key) {
1313 case b: String =>
1414 b
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 let d8 = 100000000
2121
2222 let d6 = 1000000
2323
2424 let poolBBB = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2525
2626 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
2727
2828 let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2929
30-let puzzleMarket = Address(base58'3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A')
30+let puzzleMarket = Address(base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc')
3131
3232 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3333
3434 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
3535
3636 let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
3737
3838 let rome = base58'AP4Cb5xLYGH6ZigHreCZHoXpQTWDkPsG2BHqfDUx6taJ'
3939
4040 let surf = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
4141
4242 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
4343
4444 let puzzleInPool = tryGetInteger(Address(bbbPoolId), (("global_" + toBase58String(puzzle)) + "_balance"))
4545
4646 let projectStake = tryGetInteger(Address(bbbPoolId), (toString(this) + "_indexStaked"))
4747
4848 let totalStake = tryGetInteger(Address(bbbPoolId), "global_poolToken_amount")
4949
5050 let assetWeight = tryGetInteger(Address(bbbPoolId), (("static_" + toBase58String(puzzle)) + "_weight"))
5151
5252 let BBBlpInPuzzle = fraction(((puzzleInPool / assetWeight) * 10000), projectStake, totalStake)
5353
5454 let keyAddressesRegistered = "Addresses registered"
5555
5656 let addresses = dropRight(tryGetString(this, keyAddressesRegistered), 1)
5757
5858 let keyBurnxtnAmount = "BURN-XTN total rewards"
5959
6060 let keyRomeAmount = "ROME total rewards"
6161
6262 let keyPuzzleAmount = "PUZZLE total rewards"
6363
6464 let keyWavesAmount = "WAVES total rewards"
6565
6666 let keyWhirlpoolAmount = "WHIRLPOOL total rewards"
6767
6868 let keyTotalNFTpower = "Total NFT power"
6969
7070 let keyTotalPuzzleValue = "Total puzzle value"
7171
7272 let keyTotalBurnxtnPaid = "Total BURN-XTN paid"
7373
7474 let keyTotalWhirlpoolPaid = "Total WHIRLPOOL paid"
7575
7676 let keyTotalRomePaid = "Total ROME paid"
7777
7878 let keyTotalWavesPaid = "Total WAVES paid"
7979
8080 let keyTotalPuzzlePaid = "Total PUZZLE paid"
8181
8282 let WFSlist = ["Gnpy5nVajPP3XQQVxrHboMAsXtjnyWAxybMDdKrbr8sD", "BT9Q4mQdQQmei2r5YNMBMasZBQj7myNaiz6QHba5cPXS", "BMvkyFtPVmFatpFR9QVFKR5MYTcZVTY2VUwFZ25vrAAc", "77Rqu8TLjBdMtDuXd9o5fUSGo64zQe5FCcao5L8Ht9j8", "8KnhBLV49SDJzq1SSy1YvGHYY6m7Q146bV7Q6GKqQb5C", "FFxsUfKbHEW4zZywLUL55ip8Nqp6fcWDsq7y3an9yQhe", "5nQRedGHoVpEQasMQivb1UMvFBCHXefXPXtURbMMnfsu", "6N3MSFtJGvT79ucX4pLftxP7fGs8DnmYdPedvnoNbVt9", "dFC2iJL4LDWasq9YzHf2kWfPNP69Tyamii93ns9BHvM", "A158T7yZLtmuiMEs21P9jV2ftbMXzy3MnfHMEu1eMAGK"]
8383
8484 let BBBlist = ["9pCxoGtD18GeH9gCemzqrjHMMjfyBQDfsrRAuxSRagMc", "7DgFgCkBjVDc5P9ZgwsVL9SiTi7kXJuS4aRVgb7ZHW3k", "76bTvE8ttHvsuN1FuH4Kc8QUW4kL4m8c1cjfsXy2GfbV", "4Zrf4H5tiFcQL8eQmnA2wJ1XWPEBH6h1G2MefZDYmcCB", "2DtC4nFnxz5UM6mbjPwMVZpQWZFUqxs52oZrBeNRk9Ao", "DjZGMAFfoQWkMW3S5FTsQN3joncZt6BsmhnEK3ggLxmN", "BneaZXD6ovDJcV5rgfr8hsHZaMQsJQ8DH6a5gTnGCpBc", "4EKfgzFkd5UGKrjnaJV3w7argW1YmF4hq54xWQFzAXb9", "8hGDkWKiu2igDpWT3Hpr4mchDD6xwJ9hGm2h2jnUvTqz", "E3ZnSejpXL1Xr6VG4QoLh8xod9NMgpPe473r9Qk2HibL"]
8585
8686 let SURFboardList = ["DzLSgEaBB4UNbPCZekPSzbQ85KokMB7d1KRRmzUPu5hs", "WmWzsbb3PNvzJ4w4Fb73KcoNGLXumgYZagV22zEiX1w", "7RrxbgayUksPHrA799pKuCr61reT8nENdqCkgVHPgaN2", "FmDLfzspbVJeKhKduLDUba2HoVdRrKtswDKMU3e9qjtP", "HmQvVyQdEjafLrpKPSigdafvcYvLbNYGEgVCxLZRWt1y", "2rVxNMXuvug74TorLQZGC2ERHjAbJnVUgNXQ1kJmtnAe", "9yb9yGJm6gzVozBHuQVHBdAnzfct3N9bRpdjjNUnrzcC", "s1SfGVshf2jKCA9KvvKKvUuK8utp3Ne3ee8Lp6KKLRw", "3E3yb7TvDK762dn11dmRLwapghaefQUEyunVdXSNp4tB", "FH75TvApyVtfd9X5a1Ar19Ns9DNJvzpzLFE5pjh1wi4h", "EgqkbDyWRPgVNVqtEEtRSzWcGD33orVoE2bzYdAdieQS", "DsKyJpJCZcFv9jSnQbQVG4Jx3WSP1KtfHhAKTkSKrVBj", "AesPr5UFDgY5jZXYUZ8JkbYtJovVdDHby15SCksEhmJK", "AVsfdqw2m5aUNxa1HY9emLmCLBfVAGTxVu4ef3xEDKC8", "5jdvSSY2K7h8UiUCXUgK9T7zfMryqw2itKP8BysdXDDk", "A4voKZes8MVDAXyQjKkb6bdEcqMbvB4ptzbpqYqveG5n", "34oZKaWHpSJrZvGLdYu5WG8WWXg7rwF2HHx8K15GfUCQ", "77McCHkmNrRM4DjqkSM9B8YjuJcKtn67jQge1pzZrQ8T", "7NEFBnvGGMfYdBnhMLNpuVgS22LpcgXCZgHfm8DHmmiA", "GoF9yokxHgPNoxoWgjjdmGeWhcLYArSsxqffRtfYGtfs"]
8787
8888 @Callable(i)
8989 func invokeClI1 () = if ((i.caller != this))
9090 then throw("access only by project owner")
9191 else {
9292 let cl = invoke(this, "claimInvestPuzzle", nil, nil)
9393 if ((cl == cl))
9494 then {
9595 let i1 = invoke(this, "invoker1", nil, nil)
9696 if ((i1 == i1))
9797 then nil
9898 else throw("Strict value is not equal to itself.")
9999 }
100100 else throw("Strict value is not equal to itself.")
101101 }
102102
103103
104104
105105 @Callable(i)
106106 func claimInvestPuzzle () = if ((i.caller != this))
107107 then throw("access only by project owner")
108108 else {
109109 let romeBalanceBefore = assetBalance(this, rome)
110110 if ((romeBalanceBefore == romeBalanceBefore))
111111 then {
112112 let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
113113 if ((claimPuzzleStaking == claimPuzzleStaking))
114114 then {
115115 let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
116116 if ((poolOneTokenInv == poolOneTokenInv))
117117 then {
118118 let romeBalanceAfter = assetBalance(this, rome)
119119 [IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
120120 then (wavesBalance(this).available - d8)
121121 else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
122122 }
123123 else throw("Strict value is not equal to itself.")
124124 }
125125 else throw("Strict value is not equal to itself.")
126126 }
127127 else throw("Strict value is not equal to itself.")
128128 }
129129
130130
131131
132132 @Callable(i)
133133 func invoker1 () = {
134134 let reset = invoke(this, "resetCount", nil, nil)
135135 if ((reset == reset))
136136 then {
137137 let list = split_4C(addresses, ",")
138138 func r (accum,address) = invoke(this, "countNFTpower", [address], nil)
139139
140140 let invoker = {
141141 let $l = list
142142 let $s = size($l)
143143 let $acc0 = nil
144144 func $f0_1 ($a,$i) = if (($i >= $s))
145145 then $a
146146 else r($a, $l[$i])
147147
148148 func $f0_2 ($a,$i) = if (($i >= $s))
149149 then $a
150150 else throw("List size exceeds 30")
151151
152152 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
153153 }
154154 if ((invoker == invoker))
155155 then {
156156 let p = invoke(this, "data", nil, nil)
157157 if ((p == p))
158158 then [IntegerEntry("WFS puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 1, tryGetInteger(this, keyTotalNFTpower)), 10, 9)), IntegerEntry("BBB puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 10, tryGetInteger(this, keyTotalNFTpower)), 10, 9))]
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163 else throw("Strict value is not equal to itself.")
164164 }
165165
166166
167167
168168 @Callable(i)
169169 func resetCount () = [IntegerEntry(keyTotalNFTpower, 0)]
170170
171171
172172
173173 @Callable(i)
174174 func countNFTpower (address) = {
175175 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
176176 then 1
177177 else 0))
178178
179179 let shareWFS = {
180180 let $l = WFSlist
181181 let $s = size($l)
182182 let $acc0 = 0
183183 func $f0_1 ($a,$i) = if (($i >= $s))
184184 then $a
185185 else foldFunc($a, $l[$i])
186186
187187 func $f0_2 ($a,$i) = if (($i >= $s))
188188 then $a
189189 else throw("List size exceeds 10")
190190
191191 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
192192 }
193193 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
194194 then 1
195195 else 0))
196196
197197 let shareBBB = {
198198 let $l = BBBlist
199199 let $s = size($l)
200200 let $acc0 = 0
201201 func $f1_1 ($a,$i) = if (($i >= $s))
202202 then $a
203203 else foldFuncB($a, $l[$i])
204204
205205 func $f1_2 ($a,$i) = if (($i >= $s))
206206 then $a
207207 else throw("List size exceeds 10")
208208
209209 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
210210 }
211211 if (((shareWFS + shareBBB) == 0))
212212 then {
213213 let list = split_4C(addresses, ",")
214214 let noNFTindex = value(indexOf(list, address))
215215 let listMinusNoNFT = removeByIndex(list, noNFTindex)
216216 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
217217 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
218218 }
219219 else [IntegerEntry((address + "_WFS"), shareWFS), IntegerEntry((address + "_BBB"), (shareBBB * 10)), IntegerEntry(keyTotalNFTpower, (tryGetInteger(this, keyTotalNFTpower) + (shareWFS + (shareBBB * 10))))]
220220 }
221221
222222
223223
224224 @Callable(i)
225225 func data () = [IntegerEntry("puzzle balance", assetBalance(this, puzzle)), IntegerEntry("puzzle staked", puzzleStaked), IntegerEntry("puzzle BBB LP", BBBlpInPuzzle), IntegerEntry(keyTotalPuzzleValue, ((assetBalance(this, puzzle) + puzzleStaked) + BBBlpInPuzzle))]
226226
227227
228228
229229 @Callable(i)
230230 func invoker2 () = if ((i.caller != this))
231231 then throw("access only by project owner")
232232 else {
233233 let t = invoke(this, "trackTotalPaid", nil, nil)
234234 if ((t == t))
235235 then {
236236 let list = split_4C(addresses, ",")
237237 func r (accum,address) = invoke(this, "distributeRewards", [address], nil)
238238
239239 let invoker = {
240240 let $l = list
241241 let $s = size($l)
242242 let $acc0 = nil
243243 func $f0_1 ($a,$i) = if (($i >= $s))
244244 then $a
245245 else r($a, $l[$i])
246246
247247 func $f0_2 ($a,$i) = if (($i >= $s))
248248 then $a
249249 else throw("List size exceeds 20")
250250
251251 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
252252 }
253253 if ((invoker == invoker))
254254 then {
255255 let bs = invoke(this, "burnSurf", nil, nil)
256256 if ((bs == bs))
257257 then nil
258258 else throw("Strict value is not equal to itself.")
259259 }
260260 else throw("Strict value is not equal to itself.")
261261 }
262262 else throw("Strict value is not equal to itself.")
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func trackTotalPaid () = {
269269 let amountBurnxtn = tryGetInteger(this, keyBurnxtnAmount)
270270 let amountWhirlpool = tryGetInteger(this, keyWhirlpoolAmount)
271271 let amountWaves = tryGetInteger(this, keyWavesAmount)
272272 let amountRome = tryGetInteger(this, keyRomeAmount)
273273 [IntegerEntry(keyTotalBurnxtnPaid, (amountBurnxtn + tryGetInteger(this, keyTotalBurnxtnPaid))), IntegerEntry(keyTotalWhirlpoolPaid, (amountWhirlpool + tryGetInteger(this, keyTotalWhirlpoolPaid))), IntegerEntry(keyTotalWavesPaid, (amountWaves + tryGetInteger(this, keyTotalWavesPaid))), IntegerEntry(keyTotalRomePaid, (amountRome + tryGetInteger(this, keyTotalRomePaid)))]
274274 }
275275
276276
277277
278278 @Callable(i)
279279 func distributeRewards (address) = if ((i.caller != this))
280280 then throw("access only by project owner")
281281 else {
282282 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
283283 then 1
284284 else 0))
285285
286286 let shareWFS = {
287287 let $l = WFSlist
288288 let $s = size($l)
289289 let $acc0 = 0
290290 func $f0_1 ($a,$i) = if (($i >= $s))
291291 then $a
292292 else foldFunc($a, $l[$i])
293293
294294 func $f0_2 ($a,$i) = if (($i >= $s))
295295 then $a
296296 else throw("List size exceeds 10")
297297
298298 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
299299 }
300300 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
301301 then 1
302302 else 0))
303303
304304 let shareBBB = {
305305 let $l = BBBlist
306306 let $s = size($l)
307307 let $acc0 = 0
308308 func $f1_1 ($a,$i) = if (($i >= $s))
309309 then $a
310310 else foldFuncB($a, $l[$i])
311311
312312 func $f1_2 ($a,$i) = if (($i >= $s))
313313 then $a
314314 else throw("List size exceeds 10")
315315
316316 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
317317 }
318318 func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
319319 then 1
320320 else 0))
321321
322322 let amountSURFboard = {
323323 let $l = SURFboardList
324324 let $s = size($l)
325325 let $acc0 = 0
326326 func $f2_1 ($a,$i) = if (($i >= $s))
327327 then $a
328328 else foldFuncC($a, $l[$i])
329329
330330 func $f2_2 ($a,$i) = if (($i >= $s))
331331 then $a
332332 else throw("List size exceeds 20")
333333
334334 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
335335 }
336336 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
337337 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
338338 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
339339 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
340340 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), ScriptTransfer(addressFromStringValue(address), amountRome, rome), ScriptTransfer(addressFromStringValue(address), (amountSURFboard * d6), surf)]
341341 }
342342
343343
344344
345345 @Callable(i)
346346 func burnSurf () = [Burn(surf, d6), IntegerEntry("SURF total burned", (tryGetInteger(this, "SURF total burned") + d6))]
347347
348348
349349
350350 @Callable(i)
351351 func register () = if (contains(tryGetString(this, keyAddressesRegistered), toString(i.caller)))
352352 then throw("already registered")
353353 else if ((size(split_4C(addresses, ",")) == 30))
354354 then throw("max reached")
355355 else [StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + toString(i.caller)) + ","))]
356356
357357
358358
359359 @Callable(i)
360360 func registerManually (address) = if (contains(tryGetString(this, keyAddressesRegistered), address))
361361 then throw("already registered")
362362 else if ((size(split_4C(addresses, ",")) == 40))
363363 then throw("max reached")
364364 else if ((i.caller != this))
365365 then throw("access only by project owner")
366366 else [StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + address) + ","))]
367367
368368
369369
370370 @Callable(i)
371371 func claimByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
372372 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
373373 else {
374374 let puzzleBalanceBefore = assetBalance(this, puzzle)
375375 if ((puzzleBalanceBefore == puzzleBalanceBefore))
376376 then {
377377 let romeBalanceBefore = assetBalance(this, rome)
378378 if ((romeBalanceBefore == romeBalanceBefore))
379379 then {
380380 let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
381381 if ((claimPuzzleStaking == claimPuzzleStaking))
382382 then {
383383 let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
384384 if ((claimInv == claimInv))
385385 then {
386386 let puzzleBalanceAfter = assetBalance(this, puzzle)
387387 let romeBalanceAfter = assetBalance(this, rome)
388388 [IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
389389 then (wavesBalance(this).available - d8)
390390 else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
391391 }
392392 else throw("Strict value is not equal to itself.")
393393 }
394394 else throw("Strict value is not equal to itself.")
395395 }
396396 else throw("Strict value is not equal to itself.")
397397 }
398398 else throw("Strict value is not equal to itself.")
399399 }
400400
401401
402402
403403 @Callable(i)
404404 func invokerByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
405405 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
406406 else {
407407 let reset = invoke(this, "distributeRewardsByAnybody", nil, nil)
408408 if ((reset == reset))
409409 then {
410410 let list = split_4C(addresses, ",")
411411 func r (accum,address) = invoke(this, "countNFTpower", [address], nil)
412412
413413 let invoker = {
414414 let $l = list
415415 let $s = size($l)
416416 let $acc0 = nil
417417 func $f0_1 ($a,$i) = if (($i >= $s))
418418 then $a
419419 else r($a, $l[$i])
420420
421421 func $f0_2 ($a,$i) = if (($i >= $s))
422422 then $a
423423 else throw("List size exceeds 40")
424424
425425 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
426426 }
427427 if ((invoker == invoker))
428428 then nil
429429 else throw("Strict value is not equal to itself.")
430430 }
431431 else throw("Strict value is not equal to itself.")
432432 }
433433
434434
435435
436436 @Callable(i)
437437 func distributeRewardsByAnybody (address) = if ((i.caller != this))
438438 then throw("access only by project owner")
439439 else {
440440 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
441441 then 1
442442 else 0))
443443
444444 let shareWFS = {
445445 let $l = WFSlist
446446 let $s = size($l)
447447 let $acc0 = 0
448448 func $f0_1 ($a,$i) = if (($i >= $s))
449449 then $a
450450 else foldFunc($a, $l[$i])
451451
452452 func $f0_2 ($a,$i) = if (($i >= $s))
453453 then $a
454454 else throw("List size exceeds 10")
455455
456456 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
457457 }
458458 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
459459 then 1
460460 else 0))
461461
462462 let shareBBB = {
463463 let $l = BBBlist
464464 let $s = size($l)
465465 let $acc0 = 0
466466 func $f1_1 ($a,$i) = if (($i >= $s))
467467 then $a
468468 else foldFuncB($a, $l[$i])
469469
470470 func $f1_2 ($a,$i) = if (($i >= $s))
471471 then $a
472472 else throw("List size exceeds 10")
473473
474474 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
475475 }
476476 if (((shareWFS + shareBBB) == 0))
477477 then {
478478 let list = split_4C(addresses, ",")
479479 let noNFTindex = value(indexOf(list, address))
480480 let listMinusNoNFT = removeByIndex(list, noNFTindex)
481481 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
482482 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
483483 }
484484 else {
485485 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
486486 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
487487 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
488488 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
489489 let amountPuzzle = fraction(tryGetInteger(this, keyPuzzleAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
490490 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), IntegerEntry(keyTotalBurnxtnPaid, (amountBurnxtn + tryGetInteger(this, keyTotalBurnxtnPaid))), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), IntegerEntry(keyTotalWhirlpoolPaid, (amountWhirlpool + tryGetInteger(this, keyTotalWhirlpoolPaid))), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), IntegerEntry(keyTotalWavesPaid, (amountWaves + tryGetInteger(this, keyTotalWavesPaid))), ScriptTransfer(addressFromStringValue(address), amountRome, rome), IntegerEntry(keyTotalRomePaid, (amountRome + tryGetInteger(this, keyTotalRomePaid))), ScriptTransfer(addressFromStringValue(address), amountPuzzle, puzzle), IntegerEntry(keyTotalPuzzlePaid, (amountPuzzle + tryGetInteger(this, keyTotalPuzzlePaid)))]
491491 }
492492 }
493493
494494
495495
496496 @Callable(i)
497497 func deleteEntry () = if ((i.caller != this))
498498 then throw("access only by project owner")
499499 else [DeleteEntry(keyAddressesRegistered)]
500500
501501
502502
503503 @Callable(i)
504504 func addWFSid (WFSnumber,WFSassetId) = if ((i.caller != this))
505505 then throw("access only by project owner")
506506 else [StringEntry((WFSnumber + ""), WFSassetId)]
507507
508508
509509
510510 @Callable(i)
511511 func changeIntegerEntry (keyString,integer) = if ((i.caller != this))
512512 then throw("access only by project owner")
513513 else [IntegerEntry(keyString, integer)]
514514
515515
516516
517517 @Callable(i)
518518 func checkMarketEntry (BBB,address) = [IntegerEntry("NFTs on market", if ((getStringValue(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
519519 then 1
520520 else 0)]
521521
522522

github/deemru/w8io/3ef1775 
58.90 ms