tx · GDWBcjbXexDAiPSG8eWXFLhTtTULd8B229fgZyLBgbxe 3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx: -0.02400000 Waves 2023.03.28 08:42 [2509395] smart account 3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx > SELF 0.00000000 Waves
{ "type": 13, "id": "GDWBcjbXexDAiPSG8eWXFLhTtTULd8B229fgZyLBgbxe", "fee": 2400000, "feeAssetId": null, "timestamp": 1679982267561, "version": 2, "chainId": 84, "sender": "3N5BTH4bjnXn7AAKoj4sswxytsPGmdXUuTx", "senderPublicKey": "DyeDJ3fgwVVux2WRkxpLU9BbVjTM96AyV58b7bRFzCBx", "proofs": [ "33aE9W3HSPBkjZDKPnbAcDpA5975wgT4CMQjSVcVJcBPUzakxnhvNEgEreW3NFo2ByZEfnv1Y2UDcZEUzzzwfugo" ], "script": "base64:BgJpCAISAwoBCBIMCgoICAgICAgBCAgIEgQKAggIEgQKAggIEgMKAQgSBwoFCAgIAQgSBwoFCAgICAISBgoECAgICBIECgIICBIECgIICBIDCgEIEgQKAggIEgQKAggIEgQKAhgBEgQKAhgBDAAJc2VwYXJhdG9yAgFfAARrQnV5AgNidXkABmtQcmljZQIFcHJpY2UABWtTZWxsAgRzZWxsABJtYXhBdWN0aW9uRHVyYXRpb24AHgAFdGVhbXMBIIVjlaPziI6w3gwXjghOv5o/krsm2zrodo4W3BQiKkh+AAVXQVZFUwEAAARrQmlkAgNiaWQABnBhdXNlZAYADHN0YXR1c0Zvck5GVAkAlgoEAgRPUEVOAgZDTE9TRUQCCFJFV0FSREVEAghDQU5DRUxFRAALZEFwcEFkZHJlc3MBGgFUSrhPbN7C2pPt9I7pSjb41U9/ldVVW12gAQVpc05mdAEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAV0b2tlbgUHJG1hdGNoMAMDCQAAAggFBXRva2VuCGRlY2ltYWxzAAAJAAACCAUFdG9rZW4IcXVhbnRpdHkAAQcJAAACCAUFdG9rZW4KcmVpc3N1YWJsZQcHBw8BaQEJc2V0UGF1c2VkAQVwYXVzZQQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzAwkAAAIFBXBhdXNlAgR0cnVlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXBhdXNlCQCsAgICBHRydWUFBXBhdXNlBQNuaWwDCQAAAgUGcGF1c2VkBwkAzAgCCQELU3RyaW5nRW50cnkCBQVwYXVzZQkArAICAgVmYWxzZQUFcGF1c2UFA25pbAUDbmlsAWkBCWNyZWF0ZU5mdAoFcGF1c2UIbmZ0X25hbWUJbmZ0X293bmVyD25mdF9kQXBwQWRkcmVzcwhuZnRfdHlwZQhuZnRfdGFncxFuZnRfc2VsbGluZ19wcmljZQ9uZnRfZGVzY3JpcHRpb24KbmZ0X29uU2VsbAhuZnRfZGF0YQQIbmV3VG9rZW4JAMIIBQUIbmZ0X25hbWUFD25mdF9kZXNjcmlwdGlvbgABAAAHBAdpc3N1ZUlkCQC4CAEFCG5ld1Rva2VuBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkAwkAAAIFBXBhdXNlAgR0cnVlCQACAQIgZnVuY3Rpb24gaXMgcGF1c2VkIGZvciBzb21ldGltZXMJAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgVPd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdHlwZQUIbmZ0X3R5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdGFncwUIbmZ0X3RhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAg9uZnRfZEFwcEFkZHJlc3MFD25mdF9kQXBwQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAhFuZnRfc2VsbGluZ19wcmljZQURbmZ0X3NlbGxpbmdfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgpuZnRfb25TZWxsBQpuZnRfb25TZWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X2RhdGEFCG5mdF9kYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBHR4SWQFCXNlcGFyYXRvcgIJaXNzdWVfbmZ0CQDYBAEFB2lzc3VlSWQFA25pbAFpAQdzZWxsTkZUAgVwcmljZRBwYXltZW50X2N1cnJlbmN5BAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBAZzZWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMECyR0MDIzNTYyNDQxCQCUCgIJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEBnRva2VuMAgFCyR0MDIzNTYyNDQxAl8xBAdhbW91bnQwCAULJHQwMjM1NjI0NDECXzIDCQEBIQEJAQVpc05mdAEFBnRva2VuMAkAAgECEFRva2VuIGlzIG5vdCBORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBWtTZWxsCQCsAgIJAKwCAgkArAICCQDYBAEFBnRva2VuMAUJc2VwYXJhdG9yCQCkAwEFB2Ftb3VudDAFEHBheW1lbnRfY3VycmVuY3kFA25pbAFpAQZidXlORlQCBW5mdElEEWN1cnJlbnRfbmZ0X293bmVyBAdhc3NldElkCQDZBAEFBW5mdElEBAZhbW91bnQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BBBjaGVja093bmVySXNTYW1lBAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQcEBXByaWNlCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAKwCAgkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yBQVuZnRJRAIBXwURY3VycmVudF9uZnRfb3duZXIEDXNlbGxlcl9hbW91bnQJAGgCCQBpAgUGYW1vdW50AOgHAM8HBAxwbGF0Zm9ybV9mZWUJAGgCCQBpAgUGYW1vdW50AOgHABkDCQAAAgURY3VycmVudF9uZnRfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQACAQIpY3VycmVudCBPd25lciBvZiBORlQgbm90IGFibGUgdG8gcHVyY2hhc2UDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0ZWFtcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQURY3VycmVudF9uZnRfb3duZXIFDXNlbGxlcl9hbW91bnQFBXRlYW1zCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBQVuZnRJRAIMcGxhdGZvcm1fZmVlCQCkAwEFDHBsYXRmb3JtX2ZlZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQURY3VycmVudF9uZnRfb3duZXIFDXNlbGxlcl9hbW91bnQFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FBW5mdElEAgxwbGF0Zm9ybV9mZWUJAKQDAQUMcGxhdGZvcm1fZmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgkApAMBBQZhbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAFpAQpjYW5jZWxTZWxsAQVuZnRJZAQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAZzZWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQFBW5mdElkAgtfbmZ0X3N0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQZzZWxsZXIAAQkA2QQBBQVuZnRJZAUDbmlsAWkBCmFkZEF1Y3Rpb24FBXN0YXJ0A2VuZApzdGFydFByaWNlCGR1cmF0aW9uEHBheW1lbnRfY3VycmVuY3kEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQFbmZ0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQFcHJpY2UJAQV2YWx1ZQEFCnN0YXJ0UHJpY2UECWVuZEhlaWdodAkAZAIIBQlsYXN0QmxvY2sGaGVpZ2h0BQhkdXJhdGlvbgQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBBFjaGVja05mdEF1Y3Rpb25lZAQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQDYBAEFBW5mdElkBQlzZXBhcmF0b3ICC25mdF9zdGF0dXNfCQDYBAEFBmNhbGxlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAGBwMJAAACBRFjaGVja05mdEF1Y3Rpb25lZAYJAAIBAhdBbHJlYWR5IGluIGF1Y3Rpb24gbGlzdAMJAGYCBQhkdXJhdGlvbgUSbWF4QXVjdGlvbkR1cmF0aW9uCQACAQkArAICAjdEdXJhdGlvbiBpcyB0b28gbG9uZy4gTXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzAgCQCkAwEFEm1heEF1Y3Rpb25EdXJhdGlvbgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAAIBAhBORlQgbm90IGF0dGFjaGVkAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFdGVhbXMJAAIBAhBORlQgbm90IGF0dGFjaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkAhZuZnRfc3RhcnRfYXVjdGlvbl9kYXRlCQDYBAEFBmNhbGxlcgUFc3RhcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQCFG5mdF9lbmRfYXVjdGlvbl9kYXRlCQDYBAEFBmNhbGxlcgUDZW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF9zdGFydF9wcmljZQUKc3RhcnRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCCl9uZnRfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX25mdF9vbl9hdWN0aW9uCQDYBAEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX3ByZXZpb3VzX2JpZGRlcgIEbm9uZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDF9oaWdoZXN0X2JpZAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDl93aW5uZXJfb2ZfbmZ0AgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAINX2JpZGRlcl9jb3VudAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAgRPUEVOBQNuaWwBaQEIcGxhY2VCaWQFCWF1Y3Rpb25JZAVuZnRJZAluZnRfb3duZXIJYmlkX3ByaWNlEGN1cnJlbnRfY3VycmVuY3kEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdhc3NldElkCQDZBAEFBW5mdElkBAl0b2tlblR5cGUICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQPY3VycmVudEJpZFByaWNlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkBBhnZXRQcmV2aW91c0JpZGRlckFkZHJlc3MJAJ0IAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCEF9wcmV2aW91c19iaWRkZXIED2N1cnJlbnRCaWRDb3VudAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQEFGdldExhc3RXaW5uZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQEEWNoZWNrTmZ0QXVjdGlvbmVkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMDCQECIT0CBRFjaGVja05mdEF1Y3Rpb25lZAIET1BFTgkAAgECFE5vdCBvcGVuIGZvciBhdWN0aW9uAwkAZwIJAQ1wYXJzZUludFZhbHVlAQUVZ2V0TGFzdFdpbm5lckJpZFByaWNlBQ9jdXJyZW50QmlkUHJpY2UJAAIBAiVCaWQgaXMgbGVzcyB0aGVuIHN0YXJ0aW5nL2hpZ2hlc3QgQmlkAwkAAAIFFWdldExhc3RXaW5uZXJCaWRQcmljZQIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX3dpbm5lcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCD19iaWRfZm9yX25mdF9ieQkA2AQBBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfYmlkX3ByaWNlX3BsYWNlBQliaWRfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUUZ2V0TGFzdFdpbm5lckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFFWdldExhc3RXaW5uZXJCaWRQcmljZQUDbmlsAwkBAiE9AgUVZ2V0TGFzdFdpbm5lckJpZFByaWNlAgEwCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFCXRva2VuVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCJl9wcmV2aW91c19iaWRfYW1vdW50X3JlZnVuZF90b19hZGRyZXNzBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfd2lubmVyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX2JpZF9mb3JfbmZ0X2J5CQDYBAEFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9iaWRfcHJpY2VfcGxhY2UFCWJpZF9wcmljZQUDbmlsBQNuaWwBaQEOYWNjZXB0QmlkT2ZmZXIECWF1Y3Rpb25JZAVuZnRJZBRiaWRfYW1vdW50X2Zyb21fdXNlchBjdXJyZW50X2N1cnJlbmN5BAthc2ltaVN0cmluZwIsOXloSkRmV2pQcHY2dEZqV1JEMUFKeUJRd2F1c0pmMlpkeHpMbjg2VWtubnEEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKYW1vdW50VW5pdAkA2QQBBRBjdXJyZW50X2N1cnJlbmN5BAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEB2Fzc2V0SWQJANkEAQUFbmZ0SWQEEmdldE5mdFdpbm5pbmdQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAQTZ2V0TmZ0V2lubmluZ2Ftb3VudAkAaAIJAGkCCQENcGFyc2VJbnRWYWx1ZQEFEmdldE5mdFdpbm5pbmdQcmljZQDoBwDPBwQMcGxhdGZvcm1fZmVlCQBoAgkAaQIJAQ1wYXJzZUludFZhbHVlAQUSZ2V0TmZ0V2lubmluZ1ByaWNlAOgHABkEEGdldEF1Y3Rpb25XaW5uZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAMJAAACBRBjdXJyZW50X2N1cnJlbmN5BQthc2ltaVN0cmluZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFBmNhbGxlcgUTZ2V0TmZ0V2lubmluZ2Ftb3VudAUKYW1vdW50VW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUQZ2V0QXVjdGlvbldpbm5lcgABBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQICDHBsYXRmb3JtX2ZlZQkApAMBBQxwbGF0Zm9ybV9mZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhBfbmZ0X3RyYW5zZmVyX3RvBRBnZXRBdWN0aW9uV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQFA25pbAMJAAACBRBjdXJyZW50X2N1cnJlbmN5AgVXQVZFUwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFBmNhbGxlcgUTZ2V0TmZ0V2lubmluZ2Ftb3VudAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUQZ2V0QXVjdGlvbldpbm5lcgABBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQICDHBsYXRmb3JtX2ZlZQkApAMBBQxwbGF0Zm9ybV9mZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhBfbmZ0X3RyYW5zZmVyX3RvBRBnZXRBdWN0aW9uV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQFA25pbAUDbmlsAWkBDWNhbmNlbEF1Y3Rpb24CCWF1Y3Rpb25JZBBjdXJyZW50X2N1cnJlbmN5BAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQNYXVjdGlvblN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzBA1iaWRkaW5nV2lubmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQECG5mdE93bmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgQFbmZ0SWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg9fbmZ0X29uX2F1Y3Rpb24EDGJpZGRpbmdQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAMJAAACBQ1iaWRkaW5nV2lubmVyAgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAUDbmlsAwkBAiE9AgUNYmlkZGluZ1dpbm5lcgIBMAkAAgECQ3Nvb3J5IHlvdSBjYW4ndCBjYW5jZWwgaXQgYmVjYXVzZSBhbHJlYWR5IGF1Y3Rpb24gcGxhY2VkIGJ5IHNvbWVvbmUFA25pbAFpARJtYW51YWxGdW5kVHJhbnNmZXICDXJlY2VwaWVudEFkZHIHbWVzc2FnZQQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdyZWNpdmVyCQDZBAEFDXJlY2VwaWVudEFkZHIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEXJlY2VwaWVudF9wYXltZW50CQBoAgkAaQIFBmFtb3VudADoBwDPBwQMcGxhdGZvcm1fZmVlCQBoAgkAaQIFBmFtb3VudADoBwAZAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIJX3RyYW5zZmVyBQZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgIMcGxhdGZvcm1fZmVlCQCkAwEFDHBsYXRmb3JtX2ZlZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUGY2FsbGVyAgxfdHJhbnNmZXJfdG8FDXJlY2VwaWVudEFkZHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQdyZWNpdmVyBRFyZWNlcGllbnRfcGF5bWVudAUEdW5pdAUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFdGVhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkA2AQBBQZjYWxsZXICCV90cmFuc2ZlcgUGYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQICDHBsYXRmb3JtX2ZlZQkApAMBBQxwbGF0Zm9ybV9mZWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgURcmVjZXBpZW50X3BheW1lbnQFBXRlYW1zBQNuaWwFA25pbAFpAQliYWNrVmFsdWUBCWF1Y3Rpb25JZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAVuZnRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCD19uZnRfb25fYXVjdGlvbgQIbmZ0T3duZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwIRQXVjdGlvbl90aW1lIG92ZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCG5mdE93bmVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQt3aXRoZHJhd0JpZAIHYmlkVHhJZBBjdXJyZW50X2N1cnJlbmN5BAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEC2FzaW1pU3RyaW5nAiw5eWhKRGZXalBwdjZ0RmpXUkQxQUp5QlF3YXVzSmYyWmR4ekxuODZVa25ucQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAphbW91bnRVbml0CQDZBAEFEGN1cnJlbnRfY3VycmVuY3kECGJpZFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCDF9oaWdoZXN0X2JpZAQIYXNCaWRkZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUHYmlkVHhJZAIHX3dpbm5lcgQJYmlkRm9yTkZUCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCB19uZnRfaWQDCQAAAgUQY3VycmVudF9jdXJyZW5jeQULYXNpbWlTdHJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdiaWRUeElkAghfbmZ0X2JpZAIIV0lUSERSQVcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdiaWRUeElkAgdfbmZ0X2lkBQliaWRGb3JORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdiaWRUeElkAhxfYmlkZGluZ19wcmljZV9yZWZ1bmRfYW1vdW50BQhiaWRQcmljZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAQ1wYXJzZUludFZhbHVlAQUIYmlkUHJpY2UFCmFtb3VudFVuaXQFA25pbAMJAAACBRBjdXJyZW50X2N1cnJlbmN5AgVXQVZFUwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB2JpZFR4SWQCCF9uZnRfYmlkAghXSVRIRFJBVwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB2JpZFR4SWQCB19uZnRfaWQFCWJpZEZvck5GVAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB2JpZFR4SWQCHF9iaWRkaW5nX3ByaWNlX3JlZnVuZF9hbW91bnQFCGJpZFByaWNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBBQhiaWRQcmljZQUEdW5pdAUDbmlsBQNuaWwBaQEQYXV0b21hdGVGdW5jdGlvbgIJYXVjdGlvbklkEGN1cnJlbnRfY3VycmVuY3kEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQFbmZ0SWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg9fbmZ0X29uX2F1Y3Rpb24ECG5mdE93bmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgQLYXNpbWlTdHJpbmcCLDl5aEpEZldqUHB2NnRGaldSRDFBSnlCUXdhdXNKZjJaZHh6TG44NlVrbm5xBAphbW91bnRVbml0CQDZBAEFEGN1cnJlbnRfY3VycmVuY3kEFWdldExhc3RXaW5uZXJCaWRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAQUZ2V0TGFzdFdpbm5lckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAQNYmlkZGluZ1dpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0AwkAAAIFDWJpZGRpbmdXaW5uZXICATAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCG5mdE93bmVyAAEJANkEAQUFbmZ0SWQFA25pbAMDCQECIT0CBQ1iaWRkaW5nV2lubmVyAgEwCQAAAgUQY3VycmVudF9jdXJyZW5jeQULYXNpbWlTdHJpbmcHCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQhuZnRPd25lcgABCQDZBAEFBW5mdElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFCmFtb3VudFVuaXQFA25pbAMDCQECIT0CBQ1iaWRkaW5nV2lubmVyAgEwCQAAAgUQY3VycmVudF9jdXJyZW5jeQIFV0FWRVMHCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQhuZnRPd25lcgABCQDZBAEFBW5mdElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFBHVuaXQFA25pbAUDbmlsAWkBFGJ1eUFsbFByb2R1Y3RzX2FzaW1pAgduZnRJbmZvC3RvdGFsYW1vdW50BAVidXllcggFAWkGY2FsbGVyBAxidXllckJhbGFuY2UJAPAHAgUFYnV5ZXIFBXRlYW1zBAZhbW91bnQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BARuZlQxCQC1CQIJAJEDAgUHbmZ0SW5mbwAAAgFfBARuZlQyCQC1CQIJAJEDAgUHbmZ0SW5mbwABAgFfBARuZlQzCQC1CQIJAJEDAgUHbmZ0SW5mbwACAgFfBARuZlQ0CQC1CQIJAJEDAgUHbmZ0SW5mbwADAgFfBARuZlQ1CQC1CQIJAJEDAgUHbmZ0SW5mbwAEAgFfAwkAZgIFC3RvdGFsYW1vdW50BQZhbW91bnQJAAIBAhx5b3VyIHBheWluZyBhbW91bnQgaXMgd3JvbmcgAwkAZgIFBmFtb3VudAUMYnV5ZXJCYWxhbmNlCQACAQI6QnV5ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gY29tcGxldGUgdGhlIHB1cmNoYXNlLgMJAAACCQCQAwEFB25mdEluZm8AAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABAgVwcmljZQkAkQMCBQRuZlQxAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQxAAIFBXRlYW1zBQNuaWwDCQAAAgkAkAMBBQduZnRJbmZvAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQxAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDEAAQIFcHJpY2UJAJEDAgUEbmZUMQACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEHNlY29uZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDIAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMgABAgVwcmljZQkAkQMCBQRuZlQyAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDEAAgUFdGVhbXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMgABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMgACBQV0ZWFtcwUDbmlsAwkAAAIJAJADAQUHbmZ0SW5mbwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAECBXByaWNlCQCRAwIFBG5mVDEAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBzZWNvbmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQyAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDIAAQIFcHJpY2UJAJEDAgUEbmZUMgACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3RoaXJkX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMwAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQzAAECBXByaWNlCQCRAwIFBG5mVDMAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQxAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQxAAIFBXRlYW1zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDIAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDIAAgUFdGVhbXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMwABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMwACBQV0ZWFtcwUDbmlsAwkAAAIJAJADAQUHbmZ0SW5mbwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAECBXByaWNlCQCRAwIFBG5mVDEAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBzZWNvbmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQyAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDIAAQIFcHJpY2UJAJEDAgUEbmZUMgACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3RoaXJkX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMwAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQzAAECBXByaWNlCQCRAwIFBG5mVDMAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBmb3VydGhfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQ0AAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDQAAQIFcHJpY2UJAJEDAgUEbmZUNAACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQxAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQ0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMQACBQV0ZWFtcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQyAAIFBXRlYW1zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDMAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDMAAgUFdGVhbXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUNAACBQV0ZWFtcwUDbmlsAwkAAAIJAJADAQUHbmZ0SW5mbwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAECBXByaWNlCQCRAwIFBG5mVDEAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBzZWNvbmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQyAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDIAAQIFcHJpY2UJAJEDAgUEbmZUMgACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3RoaXJkX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMwAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQzAAECBXByaWNlCQCRAwIFBG5mVDMAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBmb3VydGhfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQ0AAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDQAAQIFcHJpY2UJAJEDAgUEbmZUNAACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpZnRoX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUNQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQ1AAECBXByaWNlCQCRAwIFBG5mVDUAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUNAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQ1AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMQACBQV0ZWFtcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQyAAIFBXRlYW1zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDMAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDMAAgUFdGVhbXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUNAACBQV0ZWFtcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQ1AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQ1AAIFBXRlYW1zBQNuaWwDCQBmAgkAkAMBBQduZnRJbmZvAAUJAAIBAi1zb3JyeSEgbWF4aW11bSBsaW1pdCBvZiB5b3VyICBjYXJ0IGlzIDUgaXRlbXMFA25pbAFpARRidXlBbGxQcm9kdWN0c193YXZlcwIHbmZ0SW5mbwt0b3RhbGFtb3VudAQFYnV5ZXIIBQFpBmNhbGxlcgQMYnV5ZXJCYWxhbmNlCQDwBwIFBWJ1eWVyBQVXQVZFUwQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQEbmZUMQkAtQkCCQCRAwIFB25mdEluZm8AAAIBXwQEbmZUMgkAtQkCCQCRAwIFB25mdEluZm8AAQIBXwQEbmZUMwkAtQkCCQCRAwIFB25mdEluZm8AAgIBXwQEbmZUNAkAtQkCCQCRAwIFB25mdEluZm8AAwIBXwQEbmZUNQkAtQkCCQCRAwIFB25mdEluZm8ABAIBXwMJAGYCBQt0b3RhbGFtb3VudAUGYW1vdW50CQACAQIceW91ciBwYXlpbmcgYW1vdW50IGlzIHdyb25nIAMJAGYCBQZhbW91bnQFDGJ1eWVyQmFsYW5jZQkAAgECOkJ1eWVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIGNvbXBsZXRlIHRoZSBwdXJjaGFzZS4DCQAAAgkAkAMBBQduZnRJbmZvAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQxAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDEAAQIFcHJpY2UJAJEDAgUEbmZUMQACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQxAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMQACBQR1bml0BQNuaWwDCQAAAgkAkAMBBQduZnRJbmZvAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPZmlyc3RfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQxAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDEAAQIFcHJpY2UJAJEDAgUEbmZUMQACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEHNlY29uZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDIAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMgABAgVwcmljZQkAkQMCBQRuZlQyAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDEAAgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQyAAIFBHVuaXQFA25pbAMJAAACCQCQAwEFB25mdEluZm8AAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABAgVwcmljZQkAkQMCBQRuZlQxAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQc2Vjb25kX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMgAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQyAAECBXByaWNlCQCRAwIFBG5mVDIAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg90aGlyZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDMAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMwABAgVwcmljZQkAkQMCBQRuZlQzAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQzAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMQACBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDIAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDIAAgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQzAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQzAAIFBHVuaXQFA25pbAMJAAACCQCQAwEFB25mdEluZm8ABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9maXJzdF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDEAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMQABAgVwcmljZQkAkQMCBQRuZlQxAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQc2Vjb25kX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMgAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQyAAECBXByaWNlCQCRAwIFBG5mVDIAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg90aGlyZF9uZnRfSW5mbz0CBW5mdElkCQCRAwIFBG5mVDMAAAIOc2VsbGVyX2FkZHJlc3MJAJEDAgUEbmZUMwABAgVwcmljZQkAkQMCBQRuZlQzAAIJAKwCAgIFYnV5ZXIJAKUIAQUFYnV5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIQZm91cnRoX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUNAAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQ0AAECBXByaWNlCQCRAwIFBG5mVDQAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUNAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDEAAgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQyAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQyAAIFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMwABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMwACBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDQAAgUEdW5pdAUDbmlsAwkAAAIJAJADAQUHbmZ0SW5mbwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpcnN0X25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQxAAECBXByaWNlCQCRAwIFBG5mVDEAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBzZWNvbmRfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQyAAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDIAAQIFcHJpY2UJAJEDAgUEbmZUMgACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3RoaXJkX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUMwAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQzAAECBXByaWNlCQCRAwIFBG5mVDMAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBmb3VydGhfbmZ0X0luZm89AgVuZnRJZAkAkQMCBQRuZlQ0AAACDnNlbGxlcl9hZGRyZXNzCQCRAwIFBG5mVDQAAQIFcHJpY2UJAJEDAgUEbmZUNAACCQCsAgICBWJ1eWVyCQClCAEFBWJ1eWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD2ZpZnRoX25mdF9JbmZvPQIFbmZ0SWQJAJEDAgUEbmZUNQAAAg5zZWxsZXJfYWRkcmVzcwkAkQMCBQRuZlQ1AAECBXByaWNlCQCRAwIFBG5mVDUAAgkArAICAgVidXllcgkApQgBBQVidXllcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUMQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFYnV5ZXIAAQkA2QQBCQCRAwIFBG5mVDMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQVidXllcgABCQDZBAEJAJEDAgUEbmZUNAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBWJ1eWVyAAEJANkEAQkAkQMCBQRuZlQ1AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUMQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUMQACBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDIAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDIAAgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQkAkQMCBQRuZlQzAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRuZlQzAAIFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUEbmZUNAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbmZUNAACBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBCQCRAwIFBG5mVDUAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBG5mVDUAAgUEdW5pdAUDbmlsAwkAZgIJAJADAQUHbmZ0SW5mbwAFCQACAQItc29ycnkhIG1heGltdW0gbGltaXQgb2YgeW91ciAgY2FydCBpcyA1IGl0ZW1zBQNuaWwAVuRBIw==", "height": 2509395, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 62Tg79ihRh7qyTPbXNMaMcwXmkzAYCSzgywzf2cusKdj Next: 62s5E6YKQvFhydWdS4UFaKmKfpHWmuAy6b3ektxkj9c8 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = | |
4 | + | let a = "_" | |
5 | 5 | ||
6 | - | @Callable(b) | |
7 | - | func buyAllProducts (c,d) = { | |
8 | - | let e = b.caller | |
9 | - | let f = assetBalance(e, a) | |
10 | - | let g = value(b.payments[0].amount) | |
11 | - | let h = split(c[0], "_") | |
12 | - | let i = split(c[1], "_") | |
13 | - | let j = split(c[2], "_") | |
14 | - | let k = split(c[3], "_") | |
15 | - | let l = split(c[4], "_") | |
16 | - | if ((d > g)) | |
6 | + | let b = "buy" | |
7 | + | ||
8 | + | let c = "price" | |
9 | + | ||
10 | + | let d = "sell" | |
11 | + | ||
12 | + | let e = 30 | |
13 | + | ||
14 | + | let f = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq' | |
15 | + | ||
16 | + | let g = base58'' | |
17 | + | ||
18 | + | let h = "bid" | |
19 | + | ||
20 | + | let i = true | |
21 | + | ||
22 | + | let j = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED") | |
23 | + | ||
24 | + | let k = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq' | |
25 | + | ||
26 | + | func l (m) = { | |
27 | + | let n = assetInfo(m) | |
28 | + | if ($isInstanceOf(n, "Asset")) | |
29 | + | then { | |
30 | + | let o = n | |
31 | + | if (if ((o.decimals == 0)) | |
32 | + | then (o.quantity == 1) | |
33 | + | else false) | |
34 | + | then (o.reissuable == false) | |
35 | + | else false | |
36 | + | } | |
37 | + | else false | |
38 | + | } | |
39 | + | ||
40 | + | ||
41 | + | @Callable(p) | |
42 | + | func setPaused (q) = { | |
43 | + | let r = p.caller.bytes | |
44 | + | if ((q == "true")) | |
45 | + | then [StringEntry(q, ("true" + q))] | |
46 | + | else if ((i == false)) | |
47 | + | then [StringEntry(q, ("false" + q))] | |
48 | + | else nil | |
49 | + | } | |
50 | + | ||
51 | + | ||
52 | + | ||
53 | + | @Callable(p) | |
54 | + | func createNft (q,s,t,u,v,w,x,y,z,A) = { | |
55 | + | let B = Issue(s, y, 1, 0, false) | |
56 | + | let C = calculateAssetId(B) | |
57 | + | let D = p.transactionId | |
58 | + | if ((q == "true")) | |
59 | + | then throw("function is paused for sometimes") | |
60 | + | else [B, ScriptTransfer(p.caller, 1, C), StringEntry(((toBase58String(C) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(C) + a) + "nft_type"), v), StringEntry(((toBase58String(C) + a) + "nft_tags"), w), StringEntry(((toBase58String(C) + a) + "nft_dAppAddress"), u), IntegerEntry(((toBase58String(C) + a) + "nft_selling_price"), x), StringEntry(((toBase58String(C) + a) + "nft_onSell"), z), StringEntry(((toBase58String(C) + a) + "nft_data"), A), StringEntry(((toBase58String(D) + a) + "issue_nft"), toBase58String(C))] | |
61 | + | } | |
62 | + | ||
63 | + | ||
64 | + | ||
65 | + | @Callable(p) | |
66 | + | func sellNFT (E,F) = { | |
67 | + | let D = p.transactionId | |
68 | + | let G = p.caller.bytes | |
69 | + | let H = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount)) | |
70 | + | let I = H._1 | |
71 | + | let J = H._2 | |
72 | + | if (!(l(I))) | |
73 | + | then throw("Token is not NFT") | |
74 | + | else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), E), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(I) + a) + toString(J)) + F))] | |
75 | + | } | |
76 | + | ||
77 | + | ||
78 | + | ||
79 | + | @Callable(p) | |
80 | + | func buyNFT (K,L) = { | |
81 | + | let m = fromBase58String(K) | |
82 | + | let M = value(p.payments[0].amount) | |
83 | + | let N = { | |
84 | + | let n = getString(this, (("nft_" + L) + "_owner")) | |
85 | + | if ($isInstanceOf(n, "String")) | |
86 | + | then { | |
87 | + | let O = n | |
88 | + | O | |
89 | + | } | |
90 | + | else false | |
91 | + | } | |
92 | + | let E = getStringValue(((((c + a) + K) + "_") + L)) | |
93 | + | let P = ((M / 1000) * 975) | |
94 | + | let Q = ((M / 1000) * 25) | |
95 | + | if ((L == toString(p.caller))) | |
96 | + | then throw("current Owner of NFT not able to purchase") | |
97 | + | else if ((p.payments[0].assetId == f)) | |
98 | + | then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(L)), P, f), StringEntry((("nft_" + K) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((K + a) + toString(M))), DeleteEntry((("nft_" + L) + "_owner")), StringEntry((("nft_" + L) + "_owner"), toString(p.caller)), StringEntry(((K + a) + "_owner"), toString(p.caller))] | |
99 | + | else if ((p.payments[0].assetId == unit)) | |
100 | + | then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(L)), P, unit), StringEntry((("nft_" + K) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((K + a) + toString(M))), DeleteEntry((("nft_" + L) + "_owner")), StringEntry((("nft_" + L) + "_owner"), toString(p.caller)), StringEntry(((K + a) + "_owner"), toString(p.caller))] | |
101 | + | else nil | |
102 | + | } | |
103 | + | ||
104 | + | ||
105 | + | ||
106 | + | @Callable(p) | |
107 | + | func cancelSell (R) = { | |
108 | + | let D = toBase58String(p.transactionId) | |
109 | + | let G = p.caller.bytes | |
110 | + | [StringEntry(((D + R) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(G), 1, fromBase58String(R))] | |
111 | + | } | |
112 | + | ||
113 | + | ||
114 | + | ||
115 | + | @Callable(p) | |
116 | + | func addAuction (S,T,U,V,F) = { | |
117 | + | let D = toBase58String(p.transactionId) | |
118 | + | let R = value(p.payments[0].assetId) | |
119 | + | let E = value(U) | |
120 | + | let W = (lastBlock.height + V) | |
121 | + | let r = p.caller.bytes | |
122 | + | let X = { | |
123 | + | let n = getString(this, (((toBase58String(R) + a) + "nft_status_") + toBase58String(r))) | |
124 | + | if ($isInstanceOf(n, "String")) | |
125 | + | then { | |
126 | + | let O = n | |
127 | + | true | |
128 | + | } | |
129 | + | else false | |
130 | + | } | |
131 | + | if ((X == true)) | |
132 | + | then throw("Already in auction list") | |
133 | + | else if ((V > e)) | |
134 | + | then throw(("Duration is too long. Must be less than or equal to 30 " + toString(e))) | |
135 | + | else if ((p.payments[0].assetId == unit)) | |
136 | + | then throw("NFT not attached") | |
137 | + | else if ((p.payments[0].assetId == f)) | |
138 | + | then throw("NFT not attached") | |
139 | + | else [StringEntry(((D + "nft_start_auction_date") + toBase58String(r)), S), StringEntry(((D + "nft_end_auction_date") + toBase58String(r)), T), StringEntry((D + "_nft_start_price"), U), StringEntry((D + "_nft_owner"), toString(p.caller)), StringEntry((D + "_nft_on_auction"), toBase58String(R)), StringEntry((D + "_previous_bidder"), "none"), StringEntry((D + "_highest_bid"), "0"), StringEntry((D + "_winner_of_nft"), "0"), StringEntry((D + "_bidder_count"), "0"), StringEntry((D + "_nft_status"), "OPEN")] | |
140 | + | } | |
141 | + | ||
142 | + | ||
143 | + | ||
144 | + | @Callable(p) | |
145 | + | func placeBid (Y,R,t,Z,aa) = { | |
146 | + | let D = toBase58String(p.transactionId) | |
147 | + | let r = p.caller.bytes | |
148 | + | let m = fromBase58String(R) | |
149 | + | let ab = p.payments[0].assetId | |
150 | + | let ac = p.payments[0].amount | |
151 | + | let ad = getStringValue(this, (Y + "_highest_bid")) | |
152 | + | let ae = getString(this, (Y + "_previous_bidder")) | |
153 | + | let af = getStringValue(this, (Y + "_bidder_count")) | |
154 | + | let ag = getStringValue(this, (Y + "_winner_of_nft")) | |
155 | + | let X = getStringValue(this, (Y + "_nft_status")) | |
156 | + | if ((X != "OPEN")) | |
157 | + | then throw("Not open for auction") | |
158 | + | else if ((parseIntValue(ad) >= ac)) | |
159 | + | then throw("Bid is less then starting/highest Bid") | |
160 | + | else if ((ad == "0")) | |
161 | + | then [StringEntry((Y + "_highest_bid"), toString(ac)), StringEntry((Y + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((Y + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((Y + "_nft_id"), toBase58String(m)), StringEntry((Y + "_nft_owner"), t), StringEntry((((D + "_") + Y) + "_highest_bid"), toString(ac)), StringEntry((((D + "_") + Y) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((D + "_") + Y) + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((((D + "_") + Y) + "_nft_id"), toBase58String(m)), StringEntry((((D + "_") + Y) + "_nft_owner"), t), StringEntry((D + "_bid_for_nft_by"), toBase58String(r)), StringEntry((D + "_bid_price_place"), Z), StringEntry((D + "_previous_bid_amount_refund_to_address"), ag), StringEntry((D + "_prevoius_bid_amount_refund"), ad)] | |
162 | + | else if ((ad != "0")) | |
163 | + | then [ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), ab), StringEntry((D + "_previous_bid_amount_refund_to_address"), ag), StringEntry((D + "_prevoius_bid_amount_refund"), ad), StringEntry((Y + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((Y + "_highest_bid"), toString(ac)), StringEntry((Y + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((Y + "_nft_id"), toBase58String(m)), StringEntry((Y + "_nft_owner"), t), StringEntry((((D + "_") + Y) + "_highest_bid"), toString(ac)), StringEntry((((D + "_") + Y) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((D + "_") + Y) + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((((D + "_") + Y) + "_nft_id"), toBase58String(m)), StringEntry((((D + "_") + Y) + "_nft_owner"), t), StringEntry((D + "_bid_for_nft_by"), toBase58String(r)), StringEntry((D + "_bid_price_place"), Z)] | |
164 | + | else nil | |
165 | + | } | |
166 | + | ||
167 | + | ||
168 | + | ||
169 | + | @Callable(p) | |
170 | + | func acceptBidOffer (Y,R,ah,aa) = { | |
171 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
172 | + | let D = toBase58String(p.transactionId) | |
173 | + | let aj = fromBase58String(aa) | |
174 | + | let r = p.caller.bytes | |
175 | + | let m = fromBase58String(R) | |
176 | + | let ak = getStringValue(this, (Y + "_highest_bid")) | |
177 | + | let al = ((parseIntValue(ak) / 1000) * 975) | |
178 | + | let Q = ((parseIntValue(ak) / 1000) * 25) | |
179 | + | let am = getStringValue(this, (Y + "_winner_of_nft")) | |
180 | + | if ((aa == ai)) | |
181 | + | then [ScriptTransfer(Address(r), al, aj), ScriptTransfer(Address(fromBase58String(am)), 1, m), StringEntry("platform_fee", toString(Q)), StringEntry((D + "_amount_paid_to_owner"), ak), StringEntry((D + "_nft_transfer_to"), am), StringEntry((D + "_nft_status"), "REWARDED"), StringEntry((Y + "_amount_paid_to_owner"), ak), StringEntry((Y + "_nft_transfer_to"), am), StringEntry((Y + "_nft_status"), "REWARDED")] | |
182 | + | else if ((aa == "WAVES")) | |
183 | + | then [ScriptTransfer(Address(r), al, unit), ScriptTransfer(Address(fromBase58String(am)), 1, m), StringEntry("platform_fee", toString(Q)), StringEntry((D + "_amount_paid_to_owner"), ak), StringEntry((D + "_nft_transfer_to"), am), StringEntry((D + "_nft_status"), "REWARDED"), StringEntry((Y + "_amount_paid_to_owner"), ak), StringEntry((Y + "_nft_transfer_to"), am), StringEntry((Y + "_nft_status"), "REWARDED")] | |
184 | + | else nil | |
185 | + | } | |
186 | + | ||
187 | + | ||
188 | + | ||
189 | + | @Callable(p) | |
190 | + | func cancelAuction (Y,aa) = { | |
191 | + | let D = toBase58String(p.transactionId) | |
192 | + | let r = p.caller.bytes | |
193 | + | let an = getStringValue(this, (Y + "_nft_status")) | |
194 | + | let ao = getStringValue(this, (Y + "_winner_of_nft")) | |
195 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
196 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
197 | + | let aq = getStringValue(this, (Y + "_highest_bid")) | |
198 | + | if ((ao == "0")) | |
199 | + | then [StringEntry(((D + Y) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
200 | + | else if ((ao != "0")) | |
201 | + | then throw("soory you can't cancel it because already auction placed by someone") | |
202 | + | else nil | |
203 | + | } | |
204 | + | ||
205 | + | ||
206 | + | ||
207 | + | @Callable(p) | |
208 | + | func manualFundTransfer (ar,as) = { | |
209 | + | let r = p.caller.bytes | |
210 | + | let at = fromBase58String(ar) | |
211 | + | let M = p.payments[0].amount | |
212 | + | let au = ((M / 1000) * 975) | |
213 | + | let Q = ((M / 1000) * 25) | |
214 | + | if ((p.payments[0].assetId == unit)) | |
215 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), M), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(r) + "_transfer_to"), ar), ScriptTransfer(Address(at), au, unit)] | |
216 | + | else if ((p.payments[0].assetId == f)) | |
217 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), M), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(r) + "_transfer_to"), ar), ScriptTransfer(Address(at), au, f)] | |
218 | + | else nil | |
219 | + | } | |
220 | + | ||
221 | + | ||
222 | + | ||
223 | + | @Callable(p) | |
224 | + | func backValue (Y) = { | |
225 | + | let r = p.caller.bytes | |
226 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
227 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
228 | + | [StringEntry((Y + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
229 | + | } | |
230 | + | ||
231 | + | ||
232 | + | ||
233 | + | @Callable(p) | |
234 | + | func withdrawBid (av,aa) = { | |
235 | + | let r = p.caller.bytes | |
236 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
237 | + | let D = toBase58String(p.transactionId) | |
238 | + | let aj = fromBase58String(aa) | |
239 | + | let aw = getStringValue(this, (av + "_highest_bid")) | |
240 | + | let ax = getStringValue(this, (av + "_winner")) | |
241 | + | let ay = getStringValue(this, (av + "_nft_id")) | |
242 | + | if ((aa == ai)) | |
243 | + | then [StringEntry((av + "_nft_bid"), "WITHDRAW"), StringEntry((av + "_nft_id"), ay), StringEntry((av + "_bidding_price_refund_amount"), aw), ScriptTransfer(p.caller, parseIntValue(aw), aj)] | |
244 | + | else if ((aa == "WAVES")) | |
245 | + | then [StringEntry((av + "_nft_bid"), "WITHDRAW"), StringEntry((av + "_nft_id"), ay), StringEntry((av + "_bidding_price_refund_amount"), aw), ScriptTransfer(p.caller, parseIntValue(aw), unit)] | |
246 | + | else nil | |
247 | + | } | |
248 | + | ||
249 | + | ||
250 | + | ||
251 | + | @Callable(p) | |
252 | + | func automateFunction (Y,aa) = { | |
253 | + | let r = p.caller.bytes | |
254 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
255 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
256 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
257 | + | let aj = fromBase58String(aa) | |
258 | + | let ad = getStringValue(this, (Y + "_highest_bid")) | |
259 | + | let ag = getStringValue(this, (Y + "_winner_of_nft")) | |
260 | + | let ao = getStringValue(this, (Y + "_winner_of_nft")) | |
261 | + | if ((ao == "0")) | |
262 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
263 | + | else if (if ((ao != "0")) | |
264 | + | then (aa == ai) | |
265 | + | else false) | |
266 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R)), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), aj)] | |
267 | + | else if (if ((ao != "0")) | |
268 | + | then (aa == "WAVES") | |
269 | + | else false) | |
270 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R)), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), unit)] | |
271 | + | else nil | |
272 | + | } | |
273 | + | ||
274 | + | ||
275 | + | ||
276 | + | @Callable(p) | |
277 | + | func buyAllProducts_asimi (az,aA) = { | |
278 | + | let aB = p.caller | |
279 | + | let aC = assetBalance(aB, f) | |
280 | + | let M = value(p.payments[0].amount) | |
281 | + | let aD = split(az[0], "_") | |
282 | + | let aE = split(az[1], "_") | |
283 | + | let aF = split(az[2], "_") | |
284 | + | let aG = split(az[3], "_") | |
285 | + | let aH = split(az[4], "_") | |
286 | + | if ((aA > M)) | |
17 | 287 | then throw("your paying amount is wrong ") | |
18 | - | else if (( | |
288 | + | else if ((M > aC)) | |
19 | 289 | then throw("Buyer does not have enough funds to complete the purchase.") | |
20 | - | else if ((size(c) == 1)) | |
21 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a)] | |
22 | - | else if ((size(c) == 2)) | |
23 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a)] | |
24 | - | else if ((size(c) == 3)) | |
25 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a)] | |
26 | - | else if ((size(c) == 4)) | |
27 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), StringEntry((((((("fourth_nft_Info=" + "nftId") + k[0]) + "seller_address") + k[1]) + "price") + k[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(e, 1, fromBase58String(k[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a), ScriptTransfer(Address(fromBase58String(k[1])), parseIntValue(k[2]), a)] | |
28 | - | else if ((size(c) == 5)) | |
29 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), StringEntry((((((("fourth_nft_Info=" + "nftId") + k[0]) + "seller_address") + k[1]) + "price") + k[2]), ("buyer" + toString(e))), StringEntry((((((("fifth_nft_Info=" + "nftId") + l[0]) + "seller_address") + l[1]) + "price") + l[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(e, 1, fromBase58String(k[0])), ScriptTransfer(e, 1, fromBase58String(l[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a), ScriptTransfer(Address(fromBase58String(k[1])), parseIntValue(k[2]), a), ScriptTransfer(Address(fromBase58String(l[1])), parseIntValue(l[2]), a)] | |
30 | - | else if ((size(c) > 5)) | |
290 | + | else if ((size(az) == 1)) | |
291 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f)] | |
292 | + | else if ((size(az) == 2)) | |
293 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f)] | |
294 | + | else if ((size(az) == 3)) | |
295 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f)] | |
296 | + | else if ((size(az) == 4)) | |
297 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), f)] | |
298 | + | else if ((size(az) == 5)) | |
299 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(aB, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), f), ScriptTransfer(Address(fromBase58String(aH[1])), parseIntValue(aH[2]), f)] | |
300 | + | else if ((size(az) > 5)) | |
301 | + | then throw("sorry! maximum limit of your cart is 5 items") | |
302 | + | else nil | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(p) | |
308 | + | func buyAllProducts_waves (az,aA) = { | |
309 | + | let aB = p.caller | |
310 | + | let aC = assetBalance(aB, g) | |
311 | + | let M = value(p.payments[0].amount) | |
312 | + | let aD = split(az[0], "_") | |
313 | + | let aE = split(az[1], "_") | |
314 | + | let aF = split(az[2], "_") | |
315 | + | let aG = split(az[3], "_") | |
316 | + | let aH = split(az[4], "_") | |
317 | + | if ((aA > M)) | |
318 | + | then throw("your paying amount is wrong ") | |
319 | + | else if ((M > aC)) | |
320 | + | then throw("Buyer does not have enough funds to complete the purchase.") | |
321 | + | else if ((size(az) == 1)) | |
322 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit)] | |
323 | + | else if ((size(az) == 2)) | |
324 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit)] | |
325 | + | else if ((size(az) == 3)) | |
326 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit)] | |
327 | + | else if ((size(az) == 4)) | |
328 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), unit)] | |
329 | + | else if ((size(az) == 5)) | |
330 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(aB, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), unit), ScriptTransfer(Address(fromBase58String(aH[1])), parseIntValue(aH[2]), unit)] | |
331 | + | else if ((size(az) > 5)) | |
31 | 332 | then throw("sorry! maximum limit of your cart is 5 items") | |
32 | 333 | else nil | |
33 | 334 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = | |
4 | + | let a = "_" | |
5 | 5 | ||
6 | - | @Callable(b) | |
7 | - | func buyAllProducts (c,d) = { | |
8 | - | let e = b.caller | |
9 | - | let f = assetBalance(e, a) | |
10 | - | let g = value(b.payments[0].amount) | |
11 | - | let h = split(c[0], "_") | |
12 | - | let i = split(c[1], "_") | |
13 | - | let j = split(c[2], "_") | |
14 | - | let k = split(c[3], "_") | |
15 | - | let l = split(c[4], "_") | |
16 | - | if ((d > g)) | |
6 | + | let b = "buy" | |
7 | + | ||
8 | + | let c = "price" | |
9 | + | ||
10 | + | let d = "sell" | |
11 | + | ||
12 | + | let e = 30 | |
13 | + | ||
14 | + | let f = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq' | |
15 | + | ||
16 | + | let g = base58'' | |
17 | + | ||
18 | + | let h = "bid" | |
19 | + | ||
20 | + | let i = true | |
21 | + | ||
22 | + | let j = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED") | |
23 | + | ||
24 | + | let k = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq' | |
25 | + | ||
26 | + | func l (m) = { | |
27 | + | let n = assetInfo(m) | |
28 | + | if ($isInstanceOf(n, "Asset")) | |
29 | + | then { | |
30 | + | let o = n | |
31 | + | if (if ((o.decimals == 0)) | |
32 | + | then (o.quantity == 1) | |
33 | + | else false) | |
34 | + | then (o.reissuable == false) | |
35 | + | else false | |
36 | + | } | |
37 | + | else false | |
38 | + | } | |
39 | + | ||
40 | + | ||
41 | + | @Callable(p) | |
42 | + | func setPaused (q) = { | |
43 | + | let r = p.caller.bytes | |
44 | + | if ((q == "true")) | |
45 | + | then [StringEntry(q, ("true" + q))] | |
46 | + | else if ((i == false)) | |
47 | + | then [StringEntry(q, ("false" + q))] | |
48 | + | else nil | |
49 | + | } | |
50 | + | ||
51 | + | ||
52 | + | ||
53 | + | @Callable(p) | |
54 | + | func createNft (q,s,t,u,v,w,x,y,z,A) = { | |
55 | + | let B = Issue(s, y, 1, 0, false) | |
56 | + | let C = calculateAssetId(B) | |
57 | + | let D = p.transactionId | |
58 | + | if ((q == "true")) | |
59 | + | then throw("function is paused for sometimes") | |
60 | + | else [B, ScriptTransfer(p.caller, 1, C), StringEntry(((toBase58String(C) + a) + "Owner"), toString(p.caller)), StringEntry(((toBase58String(C) + a) + "nft_type"), v), StringEntry(((toBase58String(C) + a) + "nft_tags"), w), StringEntry(((toBase58String(C) + a) + "nft_dAppAddress"), u), IntegerEntry(((toBase58String(C) + a) + "nft_selling_price"), x), StringEntry(((toBase58String(C) + a) + "nft_onSell"), z), StringEntry(((toBase58String(C) + a) + "nft_data"), A), StringEntry(((toBase58String(D) + a) + "issue_nft"), toBase58String(C))] | |
61 | + | } | |
62 | + | ||
63 | + | ||
64 | + | ||
65 | + | @Callable(p) | |
66 | + | func sellNFT (E,F) = { | |
67 | + | let D = p.transactionId | |
68 | + | let G = p.caller.bytes | |
69 | + | let H = $Tuple2(value(p.payments[0].assetId), value(p.payments[0].amount)) | |
70 | + | let I = H._1 | |
71 | + | let J = H._2 | |
72 | + | if (!(l(I))) | |
73 | + | then throw("Token is not NFT") | |
74 | + | else [StringEntry(((c + a) + toBase58String(value(p.payments[0].assetId))), E), StringEntry(((toString(p.caller) + a) + d), (((toBase58String(I) + a) + toString(J)) + F))] | |
75 | + | } | |
76 | + | ||
77 | + | ||
78 | + | ||
79 | + | @Callable(p) | |
80 | + | func buyNFT (K,L) = { | |
81 | + | let m = fromBase58String(K) | |
82 | + | let M = value(p.payments[0].amount) | |
83 | + | let N = { | |
84 | + | let n = getString(this, (("nft_" + L) + "_owner")) | |
85 | + | if ($isInstanceOf(n, "String")) | |
86 | + | then { | |
87 | + | let O = n | |
88 | + | O | |
89 | + | } | |
90 | + | else false | |
91 | + | } | |
92 | + | let E = getStringValue(((((c + a) + K) + "_") + L)) | |
93 | + | let P = ((M / 1000) * 975) | |
94 | + | let Q = ((M / 1000) * 25) | |
95 | + | if ((L == toString(p.caller))) | |
96 | + | then throw("current Owner of NFT not able to purchase") | |
97 | + | else if ((p.payments[0].assetId == f)) | |
98 | + | then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(L)), P, f), StringEntry((("nft_" + K) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((K + a) + toString(M))), DeleteEntry((("nft_" + L) + "_owner")), StringEntry((("nft_" + L) + "_owner"), toString(p.caller)), StringEntry(((K + a) + "_owner"), toString(p.caller))] | |
99 | + | else if ((p.payments[0].assetId == unit)) | |
100 | + | then [ScriptTransfer(p.caller, 1, m), ScriptTransfer(Address(fromBase58String(L)), P, unit), StringEntry((("nft_" + K) + "platform_fee"), toString(Q)), StringEntry(((toString(p.caller) + a) + b), ((K + a) + toString(M))), DeleteEntry((("nft_" + L) + "_owner")), StringEntry((("nft_" + L) + "_owner"), toString(p.caller)), StringEntry(((K + a) + "_owner"), toString(p.caller))] | |
101 | + | else nil | |
102 | + | } | |
103 | + | ||
104 | + | ||
105 | + | ||
106 | + | @Callable(p) | |
107 | + | func cancelSell (R) = { | |
108 | + | let D = toBase58String(p.transactionId) | |
109 | + | let G = p.caller.bytes | |
110 | + | [StringEntry(((D + R) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(G), 1, fromBase58String(R))] | |
111 | + | } | |
112 | + | ||
113 | + | ||
114 | + | ||
115 | + | @Callable(p) | |
116 | + | func addAuction (S,T,U,V,F) = { | |
117 | + | let D = toBase58String(p.transactionId) | |
118 | + | let R = value(p.payments[0].assetId) | |
119 | + | let E = value(U) | |
120 | + | let W = (lastBlock.height + V) | |
121 | + | let r = p.caller.bytes | |
122 | + | let X = { | |
123 | + | let n = getString(this, (((toBase58String(R) + a) + "nft_status_") + toBase58String(r))) | |
124 | + | if ($isInstanceOf(n, "String")) | |
125 | + | then { | |
126 | + | let O = n | |
127 | + | true | |
128 | + | } | |
129 | + | else false | |
130 | + | } | |
131 | + | if ((X == true)) | |
132 | + | then throw("Already in auction list") | |
133 | + | else if ((V > e)) | |
134 | + | then throw(("Duration is too long. Must be less than or equal to 30 " + toString(e))) | |
135 | + | else if ((p.payments[0].assetId == unit)) | |
136 | + | then throw("NFT not attached") | |
137 | + | else if ((p.payments[0].assetId == f)) | |
138 | + | then throw("NFT not attached") | |
139 | + | else [StringEntry(((D + "nft_start_auction_date") + toBase58String(r)), S), StringEntry(((D + "nft_end_auction_date") + toBase58String(r)), T), StringEntry((D + "_nft_start_price"), U), StringEntry((D + "_nft_owner"), toString(p.caller)), StringEntry((D + "_nft_on_auction"), toBase58String(R)), StringEntry((D + "_previous_bidder"), "none"), StringEntry((D + "_highest_bid"), "0"), StringEntry((D + "_winner_of_nft"), "0"), StringEntry((D + "_bidder_count"), "0"), StringEntry((D + "_nft_status"), "OPEN")] | |
140 | + | } | |
141 | + | ||
142 | + | ||
143 | + | ||
144 | + | @Callable(p) | |
145 | + | func placeBid (Y,R,t,Z,aa) = { | |
146 | + | let D = toBase58String(p.transactionId) | |
147 | + | let r = p.caller.bytes | |
148 | + | let m = fromBase58String(R) | |
149 | + | let ab = p.payments[0].assetId | |
150 | + | let ac = p.payments[0].amount | |
151 | + | let ad = getStringValue(this, (Y + "_highest_bid")) | |
152 | + | let ae = getString(this, (Y + "_previous_bidder")) | |
153 | + | let af = getStringValue(this, (Y + "_bidder_count")) | |
154 | + | let ag = getStringValue(this, (Y + "_winner_of_nft")) | |
155 | + | let X = getStringValue(this, (Y + "_nft_status")) | |
156 | + | if ((X != "OPEN")) | |
157 | + | then throw("Not open for auction") | |
158 | + | else if ((parseIntValue(ad) >= ac)) | |
159 | + | then throw("Bid is less then starting/highest Bid") | |
160 | + | else if ((ad == "0")) | |
161 | + | then [StringEntry((Y + "_highest_bid"), toString(ac)), StringEntry((Y + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((Y + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((Y + "_nft_id"), toBase58String(m)), StringEntry((Y + "_nft_owner"), t), StringEntry((((D + "_") + Y) + "_highest_bid"), toString(ac)), StringEntry((((D + "_") + Y) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((D + "_") + Y) + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((((D + "_") + Y) + "_nft_id"), toBase58String(m)), StringEntry((((D + "_") + Y) + "_nft_owner"), t), StringEntry((D + "_bid_for_nft_by"), toBase58String(r)), StringEntry((D + "_bid_price_place"), Z), StringEntry((D + "_previous_bid_amount_refund_to_address"), ag), StringEntry((D + "_prevoius_bid_amount_refund"), ad)] | |
162 | + | else if ((ad != "0")) | |
163 | + | then [ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), ab), StringEntry((D + "_previous_bid_amount_refund_to_address"), ag), StringEntry((D + "_prevoius_bid_amount_refund"), ad), StringEntry((Y + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((Y + "_highest_bid"), toString(ac)), StringEntry((Y + "_winner_of_nft"), toBase58String(p.caller.bytes)), StringEntry((Y + "_nft_id"), toBase58String(m)), StringEntry((Y + "_nft_owner"), t), StringEntry((((D + "_") + Y) + "_highest_bid"), toString(ac)), StringEntry((((D + "_") + Y) + "_winner"), toBase58String(p.caller.bytes)), StringEntry((((D + "_") + Y) + "_bidder_count"), toString((parseIntValue(af) + 1))), StringEntry((((D + "_") + Y) + "_nft_id"), toBase58String(m)), StringEntry((((D + "_") + Y) + "_nft_owner"), t), StringEntry((D + "_bid_for_nft_by"), toBase58String(r)), StringEntry((D + "_bid_price_place"), Z)] | |
164 | + | else nil | |
165 | + | } | |
166 | + | ||
167 | + | ||
168 | + | ||
169 | + | @Callable(p) | |
170 | + | func acceptBidOffer (Y,R,ah,aa) = { | |
171 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
172 | + | let D = toBase58String(p.transactionId) | |
173 | + | let aj = fromBase58String(aa) | |
174 | + | let r = p.caller.bytes | |
175 | + | let m = fromBase58String(R) | |
176 | + | let ak = getStringValue(this, (Y + "_highest_bid")) | |
177 | + | let al = ((parseIntValue(ak) / 1000) * 975) | |
178 | + | let Q = ((parseIntValue(ak) / 1000) * 25) | |
179 | + | let am = getStringValue(this, (Y + "_winner_of_nft")) | |
180 | + | if ((aa == ai)) | |
181 | + | then [ScriptTransfer(Address(r), al, aj), ScriptTransfer(Address(fromBase58String(am)), 1, m), StringEntry("platform_fee", toString(Q)), StringEntry((D + "_amount_paid_to_owner"), ak), StringEntry((D + "_nft_transfer_to"), am), StringEntry((D + "_nft_status"), "REWARDED"), StringEntry((Y + "_amount_paid_to_owner"), ak), StringEntry((Y + "_nft_transfer_to"), am), StringEntry((Y + "_nft_status"), "REWARDED")] | |
182 | + | else if ((aa == "WAVES")) | |
183 | + | then [ScriptTransfer(Address(r), al, unit), ScriptTransfer(Address(fromBase58String(am)), 1, m), StringEntry("platform_fee", toString(Q)), StringEntry((D + "_amount_paid_to_owner"), ak), StringEntry((D + "_nft_transfer_to"), am), StringEntry((D + "_nft_status"), "REWARDED"), StringEntry((Y + "_amount_paid_to_owner"), ak), StringEntry((Y + "_nft_transfer_to"), am), StringEntry((Y + "_nft_status"), "REWARDED")] | |
184 | + | else nil | |
185 | + | } | |
186 | + | ||
187 | + | ||
188 | + | ||
189 | + | @Callable(p) | |
190 | + | func cancelAuction (Y,aa) = { | |
191 | + | let D = toBase58String(p.transactionId) | |
192 | + | let r = p.caller.bytes | |
193 | + | let an = getStringValue(this, (Y + "_nft_status")) | |
194 | + | let ao = getStringValue(this, (Y + "_winner_of_nft")) | |
195 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
196 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
197 | + | let aq = getStringValue(this, (Y + "_highest_bid")) | |
198 | + | if ((ao == "0")) | |
199 | + | then [StringEntry(((D + Y) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
200 | + | else if ((ao != "0")) | |
201 | + | then throw("soory you can't cancel it because already auction placed by someone") | |
202 | + | else nil | |
203 | + | } | |
204 | + | ||
205 | + | ||
206 | + | ||
207 | + | @Callable(p) | |
208 | + | func manualFundTransfer (ar,as) = { | |
209 | + | let r = p.caller.bytes | |
210 | + | let at = fromBase58String(ar) | |
211 | + | let M = p.payments[0].amount | |
212 | + | let au = ((M / 1000) * 975) | |
213 | + | let Q = ((M / 1000) * 25) | |
214 | + | if ((p.payments[0].assetId == unit)) | |
215 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), M), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(r) + "_transfer_to"), ar), ScriptTransfer(Address(at), au, unit)] | |
216 | + | else if ((p.payments[0].assetId == f)) | |
217 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), M), StringEntry("platform_fee", toString(Q)), StringEntry((toBase58String(r) + "_transfer_to"), ar), ScriptTransfer(Address(at), au, f)] | |
218 | + | else nil | |
219 | + | } | |
220 | + | ||
221 | + | ||
222 | + | ||
223 | + | @Callable(p) | |
224 | + | func backValue (Y) = { | |
225 | + | let r = p.caller.bytes | |
226 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
227 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
228 | + | [StringEntry((Y + "_nft_status"), "Auction_time over"), ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
229 | + | } | |
230 | + | ||
231 | + | ||
232 | + | ||
233 | + | @Callable(p) | |
234 | + | func withdrawBid (av,aa) = { | |
235 | + | let r = p.caller.bytes | |
236 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
237 | + | let D = toBase58String(p.transactionId) | |
238 | + | let aj = fromBase58String(aa) | |
239 | + | let aw = getStringValue(this, (av + "_highest_bid")) | |
240 | + | let ax = getStringValue(this, (av + "_winner")) | |
241 | + | let ay = getStringValue(this, (av + "_nft_id")) | |
242 | + | if ((aa == ai)) | |
243 | + | then [StringEntry((av + "_nft_bid"), "WITHDRAW"), StringEntry((av + "_nft_id"), ay), StringEntry((av + "_bidding_price_refund_amount"), aw), ScriptTransfer(p.caller, parseIntValue(aw), aj)] | |
244 | + | else if ((aa == "WAVES")) | |
245 | + | then [StringEntry((av + "_nft_bid"), "WITHDRAW"), StringEntry((av + "_nft_id"), ay), StringEntry((av + "_bidding_price_refund_amount"), aw), ScriptTransfer(p.caller, parseIntValue(aw), unit)] | |
246 | + | else nil | |
247 | + | } | |
248 | + | ||
249 | + | ||
250 | + | ||
251 | + | @Callable(p) | |
252 | + | func automateFunction (Y,aa) = { | |
253 | + | let r = p.caller.bytes | |
254 | + | let R = getStringValue(this, (Y + "_nft_on_auction")) | |
255 | + | let ap = getStringValue(this, (Y + "_nft_owner")) | |
256 | + | let ai = "9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq" | |
257 | + | let aj = fromBase58String(aa) | |
258 | + | let ad = getStringValue(this, (Y + "_highest_bid")) | |
259 | + | let ag = getStringValue(this, (Y + "_winner_of_nft")) | |
260 | + | let ao = getStringValue(this, (Y + "_winner_of_nft")) | |
261 | + | if ((ao == "0")) | |
262 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R))] | |
263 | + | else if (if ((ao != "0")) | |
264 | + | then (aa == ai) | |
265 | + | else false) | |
266 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R)), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), aj)] | |
267 | + | else if (if ((ao != "0")) | |
268 | + | then (aa == "WAVES") | |
269 | + | else false) | |
270 | + | then [ScriptTransfer(Address(fromBase58String(ap)), 1, fromBase58String(R)), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(ad), unit)] | |
271 | + | else nil | |
272 | + | } | |
273 | + | ||
274 | + | ||
275 | + | ||
276 | + | @Callable(p) | |
277 | + | func buyAllProducts_asimi (az,aA) = { | |
278 | + | let aB = p.caller | |
279 | + | let aC = assetBalance(aB, f) | |
280 | + | let M = value(p.payments[0].amount) | |
281 | + | let aD = split(az[0], "_") | |
282 | + | let aE = split(az[1], "_") | |
283 | + | let aF = split(az[2], "_") | |
284 | + | let aG = split(az[3], "_") | |
285 | + | let aH = split(az[4], "_") | |
286 | + | if ((aA > M)) | |
17 | 287 | then throw("your paying amount is wrong ") | |
18 | - | else if (( | |
288 | + | else if ((M > aC)) | |
19 | 289 | then throw("Buyer does not have enough funds to complete the purchase.") | |
20 | - | else if ((size(c) == 1)) | |
21 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a)] | |
22 | - | else if ((size(c) == 2)) | |
23 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a)] | |
24 | - | else if ((size(c) == 3)) | |
25 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a)] | |
26 | - | else if ((size(c) == 4)) | |
27 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), StringEntry((((((("fourth_nft_Info=" + "nftId") + k[0]) + "seller_address") + k[1]) + "price") + k[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(e, 1, fromBase58String(k[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a), ScriptTransfer(Address(fromBase58String(k[1])), parseIntValue(k[2]), a)] | |
28 | - | else if ((size(c) == 5)) | |
29 | - | then [StringEntry((((((("first_nft_Info=" + "nftId") + h[0]) + "seller_address") + h[1]) + "price") + h[2]), ("buyer" + toString(e))), StringEntry((((((("second_nft_Info=" + "nftId") + i[0]) + "seller_address") + i[1]) + "price") + i[2]), ("buyer" + toString(e))), StringEntry((((((("third_nft_Info=" + "nftId") + j[0]) + "seller_address") + j[1]) + "price") + j[2]), ("buyer" + toString(e))), StringEntry((((((("fourth_nft_Info=" + "nftId") + k[0]) + "seller_address") + k[1]) + "price") + k[2]), ("buyer" + toString(e))), StringEntry((((((("fifth_nft_Info=" + "nftId") + l[0]) + "seller_address") + l[1]) + "price") + l[2]), ("buyer" + toString(e))), ScriptTransfer(e, 1, fromBase58String(h[0])), ScriptTransfer(e, 1, fromBase58String(i[0])), ScriptTransfer(e, 1, fromBase58String(j[0])), ScriptTransfer(e, 1, fromBase58String(k[0])), ScriptTransfer(e, 1, fromBase58String(l[0])), ScriptTransfer(Address(fromBase58String(h[1])), parseIntValue(h[2]), a), ScriptTransfer(Address(fromBase58String(i[1])), parseIntValue(i[2]), a), ScriptTransfer(Address(fromBase58String(j[1])), parseIntValue(j[2]), a), ScriptTransfer(Address(fromBase58String(k[1])), parseIntValue(k[2]), a), ScriptTransfer(Address(fromBase58String(l[1])), parseIntValue(l[2]), a)] | |
30 | - | else if ((size(c) > 5)) | |
290 | + | else if ((size(az) == 1)) | |
291 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f)] | |
292 | + | else if ((size(az) == 2)) | |
293 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f)] | |
294 | + | else if ((size(az) == 3)) | |
295 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f)] | |
296 | + | else if ((size(az) == 4)) | |
297 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), f)] | |
298 | + | else if ((size(az) == 5)) | |
299 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(aB, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), f), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), f), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), f), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), f), ScriptTransfer(Address(fromBase58String(aH[1])), parseIntValue(aH[2]), f)] | |
300 | + | else if ((size(az) > 5)) | |
301 | + | then throw("sorry! maximum limit of your cart is 5 items") | |
302 | + | else nil | |
303 | + | } | |
304 | + | ||
305 | + | ||
306 | + | ||
307 | + | @Callable(p) | |
308 | + | func buyAllProducts_waves (az,aA) = { | |
309 | + | let aB = p.caller | |
310 | + | let aC = assetBalance(aB, g) | |
311 | + | let M = value(p.payments[0].amount) | |
312 | + | let aD = split(az[0], "_") | |
313 | + | let aE = split(az[1], "_") | |
314 | + | let aF = split(az[2], "_") | |
315 | + | let aG = split(az[3], "_") | |
316 | + | let aH = split(az[4], "_") | |
317 | + | if ((aA > M)) | |
318 | + | then throw("your paying amount is wrong ") | |
319 | + | else if ((M > aC)) | |
320 | + | then throw("Buyer does not have enough funds to complete the purchase.") | |
321 | + | else if ((size(az) == 1)) | |
322 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit)] | |
323 | + | else if ((size(az) == 2)) | |
324 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit)] | |
325 | + | else if ((size(az) == 3)) | |
326 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit)] | |
327 | + | else if ((size(az) == 4)) | |
328 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), unit)] | |
329 | + | else if ((size(az) == 5)) | |
330 | + | then [StringEntry((((((("first_nft_Info=" + "nftId") + aD[0]) + "seller_address") + aD[1]) + "price") + aD[2]), ("buyer" + toString(aB))), StringEntry((((((("second_nft_Info=" + "nftId") + aE[0]) + "seller_address") + aE[1]) + "price") + aE[2]), ("buyer" + toString(aB))), StringEntry((((((("third_nft_Info=" + "nftId") + aF[0]) + "seller_address") + aF[1]) + "price") + aF[2]), ("buyer" + toString(aB))), StringEntry((((((("fourth_nft_Info=" + "nftId") + aG[0]) + "seller_address") + aG[1]) + "price") + aG[2]), ("buyer" + toString(aB))), StringEntry((((((("fifth_nft_Info=" + "nftId") + aH[0]) + "seller_address") + aH[1]) + "price") + aH[2]), ("buyer" + toString(aB))), ScriptTransfer(aB, 1, fromBase58String(aD[0])), ScriptTransfer(aB, 1, fromBase58String(aE[0])), ScriptTransfer(aB, 1, fromBase58String(aF[0])), ScriptTransfer(aB, 1, fromBase58String(aG[0])), ScriptTransfer(aB, 1, fromBase58String(aH[0])), ScriptTransfer(Address(fromBase58String(aD[1])), parseIntValue(aD[2]), unit), ScriptTransfer(Address(fromBase58String(aE[1])), parseIntValue(aE[2]), unit), ScriptTransfer(Address(fromBase58String(aF[1])), parseIntValue(aF[2]), unit), ScriptTransfer(Address(fromBase58String(aG[1])), parseIntValue(aG[2]), unit), ScriptTransfer(Address(fromBase58String(aH[1])), parseIntValue(aH[2]), unit)] | |
331 | + | else if ((size(az) > 5)) | |
31 | 332 | then throw("sorry! maximum limit of your cart is 5 items") | |
32 | 333 | else nil | |
33 | 334 | } | |
34 | 335 | ||
35 | 336 |
github/deemru/w8io/169f3d6 70.04 ms ◑