tx · BoaGDr6PTPaBxeut4ebDK9m1NBCaEoXz5CZhnxNL6j6e 3P8K73pz7MJ6ttYR4wo9jzDv1obqmTvpfpH: -0.01000000 Waves 2021.08.24 01:13 [2736449] smart account 3P8K73pz7MJ6ttYR4wo9jzDv1obqmTvpfpH > SELF 0.00000000 Waves
{ "type": 13, "id": "BoaGDr6PTPaBxeut4ebDK9m1NBCaEoXz5CZhnxNL6j6e", "fee": 1000000, "feeAssetId": null, "timestamp": 1629756855561, "version": 2, "chainId": 87, "sender": "3P8K73pz7MJ6ttYR4wo9jzDv1obqmTvpfpH", "senderPublicKey": "HmxDzQgaMPz3NjQugPyQsqA2QsrQ3EGXDdUymizY5dMj", "proofs": [ "3qjgtzCgkmvr5mkPoN3bTL6zQ61wQtkiZc1v6uQpH5Cue5KWSKmaerLc5HPJ43hWDcbacMdcYScporkr37jtuimv" ], "script": "base64:AAIFAAAAAAAAACcIAhIECgIIARIAEgMKARgSAwoBCBIDCgEIEgMKAQgSBwoFCAEBCAgAAAAoAAAAABNtYXN0ZXJBY2NvdW50UHViS2V5AQAAACAPdyxqhMTuzSr4tQVOqHGEvRZUJOHbfXL741XctS4YEgAAAAAOcmVkZXBsb3lQdWJLZXkBAAAAAAAAAAAKZmVlUGVyY2VudAAAAAAAAAAACgEAAAAUZ2V0S2V5VG90YWxMaXF1aWRpdHkAAAAAAgAAAA90b3RhbF9saXF1aWRpdHkBAAAAEWdldEtleUluaXRpYWxpemVkAAAAAAIAAAALSU5JVElBTElaRUQBAAAAGGdldEtleUxpcXVpZGl0eVRocmVzaG9sZAAAAAACAAAAE0xJUVVJRElUWV9USFJFU0hPTEQBAAAAFmdldEtleVRvdGFsU2hhcmVUb2tlbnMAAAAAAgAAABJ0b3RhbF9zaGFyZV90b2tlbnMBAAAAEmdldEtleVNoYXJlQXNzZXRJZAAAAAACAAAADlNIQVJFX0FTU0VUX0lEAQAAABZnZXRLZXlJbmN1YmF0b3JBZGRyZXNzAAAAAAIAAAAOSU5DVUJBVE9SX0RBUFABAAAAFGdldEtleUJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMQlJFRURFUl9EQVBQAQAAABRnZXRLZXlGYXJtaW5nQWRkcmVzcwAAAAACAAAADEZBUk1JTkdfREFQUAEAAAAYZ2V0S2V5TWFya2V0cGxhY2VBZGRyZXNzAAAAAAIAAAALTUFSS0VUUExBQ0UBAAAAGGdldEtleVRvdGFsRmFybWluZ1Jld2FyZAAAAAACAAAAFHRvdGFsX2Zhcm1pbmdfcmV3YXJkAQAAABpnZXRLZXlGYXJtaW5nUmV3YXJkQ2xhaW1lZAAAAAACAAAAFmZhcm1pbmdfcmV3YXJkX2NsYWltZWQBAAAAFWdldEtleUNlb0NvbGxlY3RlZEZlZQAAAAACAAAAEWNlb19jb2xsZWN0ZWRfZmVlAQAAABxnZXRLZXlDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAAAAAAIAAAAPY2VvX2ZlZV9vdmVyYWxsAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAUAAAADdmFsAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAADdmFsBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAAFAAAAA3ZhbAEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAN2YWwEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBQAAAAR1bml0BQAAAAN2YWwBAAAAF3RyeUdldFN0cmluZ0Zyb21BY2NvdW50AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAADdmFsBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAAFAAAAA3ZhbAEAAAAYdHJ5R2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAADdmFsBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAABQAAAAN2YWwBAAAAFWdldE1hcmtldHBsYWNlQWRkcmVzcwAAAAAJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkJAQAAABhnZXRLZXlNYXJrZXRwbGFjZUFkZHJlc3MAAAAAAQAAABBnZXRBbW91bnRPckNsZWFyAAAAAQAAAAZhbW91bnQDCQEAAAAIY29udGFpbnMAAAACBQAAAAZhbW91bnQCAAAAATACAAAAAAUAAAAGYW1vdW50AQAAAAlpc1N5bWJvbEEAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFBCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEIAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFCCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEMAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFDCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEQAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFECQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEUAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFFCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEYAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFGCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAABCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVkAAAAAAAAAAAAAQAAAAlpc1N5bWJvbEcAAAACAAAAC2FjY3VtdWxhdGVkAAAAA3N5bQMJAAAAAAAAAgUAAAADc3ltAgAAAAFHCQAAZAAAAAIFAAAAC2FjY3VtdWxhdGVk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ZTMwODczMTE4AAAAAAAAAAABBQAAAA0kYWNjMTMwODczMTE4BAAAAA0kYWNjMjMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzEzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAACBQAAAA0kYWNjMjMwODczMTE4BAAAAA0kYWNjMzMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzIzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAADBQAAAA0kYWNjMzMwODczMTE4BAAAAA0kYWNjNDMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzMzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAAEBQAAAA0kYWNjNDMwODczMTE4BAAAAA0kYWNjNTMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzQzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAAFBQAAAA0kYWNjNTMwODczMTE4BAAAAA0kYWNjNjMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzUzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAAGBQAAAA0kYWNjNjMwODczMTE4BAAAAA0kYWNjNzMwODczMTE4CQEAAAAJaXNTeW1ib2xDAAAAAgUAAAANJGFjYzYzMDg3MzExOAkAAZEAAAACBQAAAA0kbGlzdDMwODczMTE4AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTMwODczMTE4AAAAAAAAAAAHBQAAAA0kYWNjNzMwODczMTE4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AAAAAgUAAAANJGFjYzEzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAACBQAAAA0kYWNjMjMyOTMzMzI0BAAAAA0kYWNjMzMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzIzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAADBQAAAA0kYWNjMzMyOTMzMzI0BAAAAA0kYWNjNDMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzMzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAAEBQAAAA0kYWNjNDMyOTMzMzI0BAAAAA0kYWNjNTMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzQzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAAFBQAAAA0kYWNjNTMyOTMzMzI0BAAAAA0kYWNjNjMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzUzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAAGBQAAAA0kYWNjNjMyOTMzMzI0BAAAAA0kYWNjNzMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzYzMjkzMzMyNAkAAZEAAAACBQAAAA0kbGlzdDMyOTMzMzI0AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTMyOTMzMzI0AAAAAAAAAAAHBQAAAA0kYWNjNzMyOTMzMzI0BAAAAA0kYWNjODMyOTMzMzI0CQEAAAAJaXNTeW1ib2xGAAAAAgUAAAANJGFjYzczMjkzMzMyNAkAAZEAAAACBQAAAA0k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DSRhY2MwMzQzMTM0NjIAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAAFAAAADSRhY2MwMzQzMTM0NjIEAAAADSRhY2MxMzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMDM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAEFAAAADSRhY2MxMzQzMTM0NjIEAAAADSRhY2MyMzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMTM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAIFAAAADSRhY2MyMzQzMTM0NjIEAAAADSRhY2MzMzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMjM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAMFAAAADSRhY2MzMzQzMTM0NjIEAAAADSRhY2M0MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjMzM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAQFAAAADSRhY2M0MzQzMTM0NjIEAAAADSRhY2M1MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNDM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAUFAAAADSRhY2M1MzQzMTM0NjIEAAAADSRhY2M2MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNTM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAYFAAAADSRhY2M2MzQzMTM0NjIEAAAADSRhY2M3MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNjM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAcFAAAADSRhY2M3MzQzMTM0NjIEAAAADSRhY2M4MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjNzM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMzQzMTM0NjIAAAAAAAAAAAgFAAAADSRhY2M4MzQzMTM0NjIEAAAADSRhY2M5MzQzMTM0NjIJAQAAAAlpc1N5bWJvbEgAAAACBQAAAA0kYWNjODM0MzEzNDYyCQABkQAAAAIFAAAADSRsaXN0MzQzMTM0NjIAAAAAAAAAAAgJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA4AgAAAAFIAQAAAA5nZXRBc3NldE9yaWdpbgAAAAEAAAAKZ2VuZXJhdGlvbgQAAAAQaW5jdWJhdG9yQWRkcmVzcwkBAAAAF3RyeUdldFN0cmluZ0Zyb21BY2NvdW50AAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAATbWFzdGVyQWNjb3VudFB1YktleQkBAAAAFmdldEtleUluY3ViYXRvckFkZHJlc3MAAAAABAAAAA5icmVlZGVyQWRkcmVzcwkBAAAAF3RyeUdldFN0cmluZ0Zyb21BY2NvdW50AAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAATbWFzdGVyQWNjb3VudFB1YktleQkBAAAAFGdldEtleUJyZWVkZXJBZGRyZXNzAAAAAAMJAAAAAAAAAgUAAAAKZ2VuZXJhdGlvbgIAAAABRwkAAlkAAAABBQAAABBpbmN1YmF0b3JBZGRyZXNzCQACWQAAAAEFAAAADmJyZWVkZXJBZGRyZXNzAQAAAA5nZXRBc3NldFJhcml0eQAAAAIAAAAIZ2Vub3R5cGUAAAAKZ2VuZXJhdGlvbgQAAAAIcXVhbnRpdHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAdBZGRyZXNzAAAAAQkBAAAADmdldEFzc2V0T3JpZ2luAAAAAQUAAAAKZ2VuZXJhdGlvbgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAIZ2Vub3R5cGUCAAAACV9xdWFudGl0eQQAAAAFcG93ZXIJAABsAAAABgkAAGkAAAACAAAAAAAAACcQBQAAAAhxdWFudGl0eQAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAgUAAAAFRkxPT1IDCQAAZgAAAAIFAAAABXBvd2VyAAAAAAAAAAAABQAAAAVwb3dlcgAAAAAAAAAAAgEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABAAAAB2Fzc2V0SWQEAAAADmJyZWVkZXJBZGRyZXNzCQACWQAAAAEJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkJAQAAABRnZXRLZXlCcmVlZGVyQWRkcmVzcwAAAAAEAAAAEGluY3ViYXRvckFkZHJlc3MJAAJZAAAAAQkBAAAAF3RyeUdldFN0cmluZ0Zyb21BY2NvdW50AAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAATbWFzdGVyQWNjb3VudFB1YktleQkBAAAAFmdldEtleUluY3ViYXRvckFkZHJlc3MAAAAAAwMJAAAAAAAAAggJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAAZpc3N1ZXIJAQAAAAdBZGRyZXNzAAAAAQUAAAAOYnJlZWRlckFkZHJlc3MGCQAAAAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAGaXNzdWVyCQEAAAAHQWRkcmVzcwAAAAEFAAAAEGluY3ViYXRvckFkZHJlc3MEAAAACWFzc2V0TmFtZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAARuYW1lBAAAAApnZW5lcmF0aW9uCQABLwAAAAIJAQAAAAl0YWtlUmlnaHQAAAACBQAAAAlhc3NldE5hbWUAAAAAAAAAAAIAAAAAAAAAAAEEAAAAA2dlbgkAASwAAAACCQABLAAAAAIJAQAAAAZnZXRHZW4AAAABBQAAAAlhc3NldE5hbWUCAAAAAS0FAAAACmdlbmVyYXRpb24JAQAAAA5nZXRBc3NldFJhcml0eQAAAAIFAAAAA2dlbgUAAAAKZ2VuZXJhdGlvbgkAAAIAAAABAgAAAANfMjABAAAAEmdldER1Y2tNYXJrZXRQcmljZQAAAAEAAAAFbmZ0SWQEAAAABnJhcml0eQkBAAAAFGdldEFzc2V0RmFybWluZ1Bvd2VyAAAAAQUAAAAFbmZ0SWQEAAAADmJyZWVkZXJBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAXdHJ5R2V0U3RyaW5nRnJvbUFjY291bnQAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABNtYXN0ZXJBY2NvdW50UHViS2V5CQEAAAAUZ2V0S2V5QnJlZWRlckFkZHJlc3MAAAAABAAAAAhjYW5CcmVlZAkBAAAAGHRyeUdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAADmJyZWVkZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAGYXNzZXRfCQACWAAAAAEFAAAABW5mdElkAgAAAAlfY2hpbGRyZW4EAAAADGNhbkJyZWVkVGV4dAMJAABmAAAAAgUAAAAIY2FuQnJlZWQAAAAAAAAAAAACAAAAATECAAAAATAJAQAAABh0cnlHZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABNtYXN0ZXJBY2NvdW50UHViS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAJyLQkAAaQAAAABBQAAAAZyYXJpdHkCAAAAAy1iLQUAAAAMY2FuQnJlZWRUZXh0AQAAABlnZXREdWNrQXNzZXRJZEJ5QXVjdGlvbklkAAAAAQAAAAlhdWN0aW9uSWQEAAAAEm1hcmtldHBsYWNlQWRkcmVzcwkBAAAAFWdldE1hcmtldHBsYWNlQWRkcmVzcwAAAAAJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEm1hcmtldHBsYWNlQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACGF1Y3Rpb25fBQAAAAlhdWN0aW9uSWQCAAAACF9hc3NldElkAQAAAAxnZXRCaWRBbW91bnQAAAACAAAACWF1Y3Rpb25JZAAAAAViaWRJZAQAAAASbWFya2V0cGxhY2VBZGRyZXNzCQEAAAAVZ2V0TWFya2V0cGxhY2VBZGRyZXNzAAAAAAkBAAAAGHRyeUdldEludGVnZXJGcm9tQWNjb3VudAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEm1hcmtldHBsYWNlQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhdWN0aW9uXwUAAAAJYXVjdGlvbklkAgAAAAVfYmlkXwUAAAAFYmlkSWQCAAAAB19hbW91bnQBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkCAAAADEVHR19BU1NFVF9JRAEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAAkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAEmdldEtleVNoYXJlQXNzZXRJZAAAAAAAAAAHAAAAAWkBAAAAEmluaXRDb2xsZWN0aXZlRmFybQAAAAIAAAAEbmFtZQAAABBtaW5pbXVtVGhyZXNob2xkAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAABNtYXN0ZXJBY2NvdW50UHViS2V5CQAAAgAAAAECAAAAAl8xAwkBAAAAAiE9AAAAAgkBAAAADXRyeUdldEJvb2xlYW4AAAABCQEAAAARZ2V0S2V5SW5pdGlhbGl6ZWQAAAAABQAAAAR1bml0CQAAAgAAAAECAAAAAl8yBAAAAAtzaGFyZVRva2VucwAAAAAAAAAnEAQAAAAKc2hhcmVUb2tlbgkABEIAAAAFBQAAAARuYW1lCQABLAAAAAIJAAEsAAAAAgIAAAAVU2hhcmUgdG9rZW4gZm9yIHRoZSAiBQAAAARuYW1lAgAAABEiIGNvbGxlY3RpdmUgZmFybQUAAAALc2hhcmVUb2tlbnMAAAAAAAAAAAgGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJnZXRLZXlTaGFyZUFzc2V0SWQAAAAACQACWAAAAAEJAAQ4AAAAAQUAAAAKc2hhcmVUb2tlbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAEWdldEtleUluaXRpYWxpemVkAAAAAAYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABRnZXRLZXlUb3RhbExpcXVpZGl0eQAAAAAAAAAAAAAAAAoJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRLZXlUb3RhbFNoYXJlVG9rZW5zAAAAAAUAAAALc2hhcmVUb2tlbnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhnZXRLZXlMaXF1aWRpdHlUaHJlc2hvbGQAAAAABQAAABBtaW5pbXVtVGhyZXNob2xkBQAAAANuaWwAAAABaQEAAAAQcHJvdmlkZUxpcXVpZGl0eQAAAAAEAAAACmVnZ0Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAACmVnZ0Fzc2V0SWQJAAACAAAAAQIAAAACXzQEAAAADnRvdGFsTGlxdWlkaXR5CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABRnZXRLZXlUb3RhbExpcXVpZGl0eQAAAAAEAAAAEHRvdGFsU2hhcmVUb2tlbnMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAFmdldEtleVRvdGFsU2hhcmVUb2tlbnMAAAAABAAAABZjdXJyZW50TGlxdWlkaXR5QW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAGWN1cnJlbnRUb3RhbEZhcm1pbmdSZXdhcmQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAGGdldEtleVRvdGFsRmFybWluZ1Jld2FyZAAAAAAEAAAAEXNoYXJlVG9rZW5zVG9HaXZlCQAAaQAAAAIJAABoAAAAAgUAAAAQdG90YWxTaGFyZVRva2VucwUAAAAWY3VycmVudExpcXVpZGl0eUFtb3VudAkAAGQAAAACBQAAAA50b3RhbExpcXVpZGl0eQUAAAAZY3VycmVudFRvdGFsRmFybWluZ1Jld2FyZAQAAAANc2hhcmVUb2tlbnNJZAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABAAAAAdyZWlzc3VlCQEAAAAHUmVpc3N1ZQAAAAMJAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAAABQAAABFzaGFyZVRva2Vuc1RvR2l2ZQYJAARMAAAAAgUAAAAHcmVpc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEXNoYXJlVG9rZW5zVG9HaXZlBQAAAA1zaGFyZVRva2Vuc0lkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAUZ2V0S2V5VG90YWxMaXF1aWRpdHkAAAAACQAAZAAAAAIFAAAADnRvdGFsTGlxdWlkaXR5CQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAABdjbGFpbUZhcm1pbmdSZXdhcmRQcm94eQAAAAEAAAAGbmZ0SWRzBAAAABJmYXJtaW5nRGFwcEFkZHJlc3MJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkJAQAAABRnZXRLZXlGYXJtaW5nQWRkcmVzcwAAAAAKAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIAAAAFYWNjdW0AAAAFbmZ0SWQEAAAACWludlJlc3VsdAkAA/wAAAAECQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABJmYXJtaW5nRGFwcEFkZHJlc3MCAAAAC2NsYWltUmV3YXJkCQAETAAAAAIFAAAABW5m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BQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAJAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAAKBQAAAA4kYWNjMTA4MDI2ODA2MQQAAAAOJGFjYzExODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MxMDgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAAAoDCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAAAsFAAAADiRhY2MxMTgwMjY4MDYxBAAAAA4kYWNjMTI4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzExODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAACwMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAADAUAAAAOJGFjYzEyODAyNjgwNjEEAAAADiRhY2MxMzgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMTI4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAMAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAANBQAAAA4kYWNjMTM4MDI2ODA2MQQAAAAOJGFjYzE0ODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MxMzgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAAA0DCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAAA4FAAAADiRhY2MxNDgwMjY4MDYxBAAAAA4kYWNjMTU4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzE0ODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAADgMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAADwUAAAAOJGFjYzE1ODAyNjgwNjEEAAAADiRhY2MxNjgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMTU4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAPAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAAQBQAAAA4kYWNjMTY4MDI2ODA2MQQAAAAOJGFjYzE3ODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MxNjgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAABADCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAABEFAAAADiRhY2MxNzgwMjY4MDYxBAAAAA4kYWNjMTg4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzE3ODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAAEQMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAAEgUAAAAOJGFjYzE4ODAyNjgwNjEEAAAADiRhY2MxOTgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMTg4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAASAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAATBQAAAA4kYWNjMTk4MDI2ODA2MQQAAAAOJGFjYzIwODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MxOTgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAABMDCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAABQFAAAADiRhY2MyMDgwMjY4MDYxBAAAAA4kYWNjMjE4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzIwODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAAFAMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAAFQUAAAAOJGFjYzIxODAyNjgwNjEEAAAADiRhY2MyMjgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMjE4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAVAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAAWBQAAAA4kYWNjMjI4MDI2ODA2MQQAAAAOJGFjYzIzODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MyMjgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAABYDCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAABcFAAAADiRhY2MyMzgwMjY4MDYxBAAAAA4kYWNjMjQ4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzIzODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAAFwMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAAGAUAAAAOJGFjYzI0ODAyNjgwNjEEAAAADiRhY2MyNTgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMjQ4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAYAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAAZBQAAAA4kYWNjMjU4MDI2ODA2MQQAAAAOJGFjYzI2ODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MyNTgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAABkDCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAABoFAAAADiRhY2MyNjgwMjY4MDYxBAAAAA4kYWNjMjc4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzI2ODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAAGgMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAAGwUAAAAOJGFjYzI3ODAyNjgwNjEEAAAADiRhY2MyODgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMjc4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAbAwkAAAAAAAACBQAAAA0kc2l6ZTgwMjY4MDYxAAAAAAAAAAAcBQAAAA4kYWNjMjg4MDI2ODA2MQQAAAAOJGFjYzI5ODAyNjgwNjEJAQAAAA5jbGFpbU9uZVJld2FyZAAAAAIFAAAADiRhY2MyODgwMjY4MDYxCQABkQAAAAIFAAAADSRsaXN0ODAyNjgwNjEAAAAAAAAAABwDCQAAAAAAAAIFAAAADSRzaXplODAyNjgwNjEAAAAAAAAAAB0FAAAADiRhY2MyOTgwMjY4MDYxBAAAAA4kYWNjMzA4MDI2ODA2MQkBAAAADmNsYWltT25lUmV3YXJkAAAAAgUAAAAOJGFjYzI5ODAyNjgwNjEJAAGRAAAAAgUAAAANJGxpc3Q4MDI2ODA2MQAAAAAAAAAAHQMJAAAAAAAAAgUAAAANJHNpemU4MDI2ODA2MQAAAAAAAAAAHgUAAAAOJGFjYzMwODAyNjgwNjEEAAAADiRhY2MzMTgwMjY4MDYxCQEAAAAOY2xhaW1PbmVSZXdhcmQAAAACBQAAAA4kYWNjMzA4MDI2ODA2MQkAAZEAAAACBQAAAA0kbGlzdDgwMjY4MDYxAAAAAAAAAAAeCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMzAEAAAADWNsYWltZWRSZXdhcmQEAAAAByRtYXRjaDAFAAAACmZvbGRSZXN1bHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAACXzYEAAAADmZhcm1DZW9GZWVTaXplCQAAawAAAAMFAAAADWNsYWltZWRSZXdhcmQFAAAACmZlZVBlcmNlbnQAAAAAAAAAAGQEAAAAGWN1cnJlbnRUb3RhbEZhcm1pbmdSZXdhcmQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAGGdldEtleVRvdGFsRmFybWluZ1Jld2FyZAAAAAAEAAAAFmN1cnJlbnRDZW9Db2xsZWN0ZWRGZWUJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAFWdldEtleUNlb0NvbGxlY3RlZEZlZQAAAAAEAAAAHWN1cnJlbnRDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABxnZXRLZXlDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGdldEtleVRvdGFsRmFybWluZ1Jld2FyZAAAAAAJAABkAAAAAgUAAAAZY3VycmVudFRvdGFsRmFybWluZ1Jld2FyZAkAAGUAAAACBQAAAA1jbGFpbWVkUmV3YXJkBQAAAA5mYXJtQ2VvRmVlU2l6ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFWdldEtleUNlb0NvbGxlY3RlZEZlZQAAAAAJAABkAAAAAgUAAAAWY3VycmVudENlb0NvbGxlY3RlZEZlZQUAAAAOZmFybUNlb0ZlZVNpemUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABxnZXRLZXlDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAAAAAAkAAGQAAAACBQAAAB1jdXJyZW50Q2VvQ29sbGVjdGVkRmVlT3ZlcmFsbAUAAAAOZmFybUNlb0ZlZVNpemUFAAAAA25pbAAAAAFpAQAAAAtjbGFpbUNlb0ZlZQAAAAEAAAAHYWRkcmVzcwMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBAAAABZjdXJyZW50Q2VvQ29sbGVjdGVkRmVlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABVnZXRLZXlDZW9Db2xsZWN0ZWRGZWUAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB2FkZHJlc3MFAAAAFmN1cnJlbnRDZW9Db2xsZWN0ZWRGZWUJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFWdldEtleUNlb0NvbGxlY3RlZEZlZQAAAAAAAAAAAAAAAAAFAAAAA25pbAkAAAIAAAABAgAAAAJfOAAAAAFpAQAAABBzdGFydExpcXVpZGF0aW9uAAAAAQAAAAlhdWN0aW9uSWQJAAACAAAAAQIAAAACXzcAAAABaQEAAAASdm90ZUZvckxpcXVpZGF0aW9uAAAAAQAAAAlhdWN0aW9uSWQJAAACAAAAAQIAAAACXzcAAAABaQEAAAAUY2FsbE1hcmtldHBsYWNlUHJveHkAAAAFAAAACGZ1bmN0aW9uAAAABGludDEAAAAEaW50MgAAAARzdHIxAAAABHN0cjIEAAAAFm1hcmtldHBsYWNlRGFwcEFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkJAQAAABhnZXRLZXlNYXJrZXRwbGFjZUFkZHJlc3MAAAAAAwkAAAAAAAACBQAAAAhmdW5jdGlvbgIAAAALaW5pdEF1Y3Rpb24EAAAABWFzc2V0CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA9kdWNrTWFya2V0UHJpY2UJAQAAABJnZXREdWNrTWFya2V0UHJpY2UAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAFYXNzZXQAAAAHYXNzZXRJZAQAAAAMaW5pdGlhbFByaWNlBQAAAARpbnQxBAAAAAtidXlvdXRQcmljZQUAAAAEaW50MgMDCQAAZwAAAAIFAAAADGluaXRpYWxQcmljZQkAAGUAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UJAABoAAAAAgkAAGkAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UAAAAAAAAAAGQAAAAAAAAAAA8JAABnAAAAAgUAAAALYnV5b3V0UHJpY2UFAAAADGluaXRpYWxQcmljZQcEAAAAC2luaXRBdWN0aW9uCQAD/AAAAAQFAAAAFm1hcmtldHBsYWNlRGFwcEFkZHJlc3MCAAAAC2luaXRBdWN0aW9uCQAETAAAAAIFAAAADGluaXRpYWxQcmljZQkABEwAAAACBQAAAAtidXlvdXRQcmljZQkABEwAAAACBQAAAARzdHIxBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAVhc3NldAAAAAdhc3NldElkAAAAAAAAAAABBQAAAANuaWwDCQAAAAAAAAIFAAAAC2luaXRBdWN0aW9uBQAAAAtpbml0QXVjdGlvbgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABCQABLAAAAAICAAAAA185PQkAAaQAAAABBQAAAA9kdWNrTWFya2V0UHJpY2UDCQAAAAAAAAIFAAAACGZ1bmN0aW9uAgAAAAhwbGFjZUJpZAQAAAAJYXVjdGlvbklkBQAAAARzdHIxBAAAAAtkdWNrQXNzZXRJZAkBAAAAGWdldER1Y2tBc3NldElkQnlBdWN0aW9uSWQAAAABBQAAAAlhdWN0aW9uSWQEAAAAD2R1Y2tNYXJrZXRQcmljZQkBAAAAEmdldER1Y2tNYXJrZXRQcmljZQAAAAEJAAJZAAAAAQUAAAALZHVja0Fzc2V0SWQEAAAACWJpZEFtb3VudAkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AwkAAGYAAAACCQAAZAAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQkAAGgAAAACCQAAaQAAAAIFAAAAD2R1Y2tNYXJrZXRQcmljZQAAAAAAAAAAZAAAAAAAAAAACgUAAAAJYmlkQW1vdW50BAAAAAhwbGFjZUJpZAkAA/wAAAAEBQAAABZtYXJrZXRwbGFjZURhcHBBZGRyZXNzAgAAAAhwbGFjZUJpZAkABEwAAAACBQAAAAlhdWN0aW9uSWQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEdW5pdAUAAAAJYmlkQW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAACHBsYWNlQmlkBQAAAAhwbGFjZUJpZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABCQABLAAAAAICAAAABF8xMD0JAAGkAAAAAQUAAAAPZHVja01hcmtldFByaWNlAwkAAAAAAAACBQAAAAhmdW5jdGlvbgIAAAAJYWNjZXB0QmlkBAAAAAlhdWN0aW9uSWQFAAAABHN0cjEEAAAABWJpZElkBQAAAARzdHIyBAAAAAtkdWNrQXNzZXRJZAkBAAAAGWdldER1Y2tBc3NldElkQnlBdWN0aW9uSWQAAAABBQAAAAlhdWN0aW9uSWQEAAAAD2R1Y2tNYXJrZXRQcmljZQkBAAAAEmdldER1Y2tNYXJrZXRQcmljZQAAAAEJAAJZAAAAAQUAAAALZHVja0Fzc2V0SWQEAAAACWJpZEFtb3VudAkBAAAADGdldEJpZEFtb3VudAAAAAIFAAAACWF1Y3Rpb25JZAUAAAAFYmlkSWQDCQAAZwAAAAIFAAAACWJpZEFtb3VudAkAAGUAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UJAABoAAAAAgkAAGkAAAACBQAAAA9kdWNrTWFya2V0UHJpY2UAAAAAAAAAAGQAAAAAAAAAAA8EAAAACWFjY2VwdEJpZAkAA/wAAAAEBQAAABZtYXJrZXRwbGFjZURhcHBBZGRyZXNzAgAAAAlhY2NlcHRCaWQJAARMAAAAAgUAAAAJYXVjdGlvbklkCQAETAAAAAIFAAAABWJpZElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAJYWNjZXB0QmlkBQAAAAlhY2NlcHRCaWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQkAASwAAAACAgAAAARfMTE9CQABpAAAAAEFAAAAD2R1Y2tNYXJrZXRQcmljZQMJAAAAAAAAAgUAAAAIZnVuY3Rpb24CAAAACmluc3RhbnRCdXkEAAAACWF1Y3Rpb25JZAUAAAAEc3RyMQQAAAALZHVja0Fzc2V0SWQJAQAAABlnZXREdWNrQXNzZXRJZEJ5QXVjdGlvbklkAAAAAQUAAAAJYXVjdGlvbklkBAAAAA9kdWNrTWFya2V0UHJpY2UJAQAAABJnZXREdWNrTWFya2V0UHJpY2UAAAABCQACWQAAAAEFAAAAC2R1Y2tBc3NldElkBAAAAAliaWRBbW91bnQJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBh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YzIxMjc4MjEyODI0BAAAAA8kYWNjMzEyNzgyMTI4MjQJAQAAABB0b3RhbEVnZ1NwZW5kaW5nAAAAAgUAAAAPJGFjYzIxMjc4MjEyODI0CQABkQAAAAIFAAAADyRsaXN0MTI3ODIxMjgyNAAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxMjc4MjEyODI0AAAAAAAAAAADBQAAAA8kYWNjMzEyNzgyMTI4MjQEAAAADyRhY2M0MTI3ODIxMjgyNAkBAAAAEHRvdGFsRWdnU3BlbmRpbmcAAAACBQAAAA8kYWNjMzEyNzgyMTI4MjQJAAGRAAAAAgUAAAAPJGxpc3QxMjc4MjEyODI0AAAAAAAAAAADCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgMwkAAAIAAAABCQABLAAAAAICAAAABF8xOD0JAAGkAAAAAQUAAAAZY3VycmVudFRvdGFsRmFybWluZ1Jld2FyZAMDCQAAAAAAAAIJAAQkAAAAAQgFAAAAA2ludgAAAARkQXBwBQAAAAR0aGlzCQAAAAAAAAIIBQAAAANpbnYAAAAIZnVuY3Rpb24CAAAAC2NsYWltQ2VvRmVlBwYDAwkAAAAAAAACCQAEJAAAAAEIBQAAAANpbnYAAAAEZEFwcAUAAAAEdGhpcwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAABNzdGFydENvbGxlY3RpdmVGYXJtBwYEAAAAEGFsbG93ZWRDb250cmFjdHMJAQAAABd0cnlHZXRTdHJpbmdGcm9tQWNjb3VudAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAE21hc3RlckFjY291bnRQdWJLZXkCAAAAEWFsbG93ZWRfY29udHJhY3RzBAAAABJtYXJrZXRwbGFjZUFkZHJlc3MJAQAAABVnZXRNYXJrZXRwbGFjZUFkZHJlc3MAAAAABAAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAkABLUAAAACBQAAABBhbGxvd2VkQ29udHJhY3RzAgAAAAE7BAAAAApkYXBwVG9DYWxsCQAEJQAAAAEJAAQkAAAAAQgFAAAAA2ludgAAAARkQXBwAwkAAAAAAAACBQAAAApkYXBwVG9DYWxsBQAAABJtYXJrZXRwbGFjZUFkZHJlc3MJAAACAAAAAQIAAAADXzE5CQEAAAACIT0AAAACCQAETwAAAAIFAAAAFGFsbG93ZWRDb250cmFjdHNMaXN0BQAAAApkYXBwVG9DYWxsBQAAAAR1bml0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAACc3MFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAABNtYXN0ZXJBY2NvdW50UHViS2V5B357zjQ=", "height": 2736449, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 6sqq7wgeuKF43AsKF78JmnuQF56YCFn6Rn4Vk74ZRBxh Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let masterAccountPubKey = base58'23NWm7kUDQqbTVkirjd5JXWRZaWVoS4ZesmRNHicBa3T' | |
5 | + | ||
6 | + | let redeployPubKey = base58'' | |
7 | + | ||
8 | + | let feePercent = 10 | |
9 | + | ||
10 | + | func getKeyTotalLiquidity () = "total_liquidity" | |
11 | + | ||
12 | + | ||
13 | + | func getKeyInitialized () = "INITIALIZED" | |
14 | + | ||
15 | + | ||
16 | + | func getKeyLiquidityThreshold () = "LIQUIDITY_THRESHOLD" | |
17 | + | ||
18 | + | ||
19 | + | func getKeyTotalShareTokens () = "total_share_tokens" | |
20 | + | ||
21 | + | ||
22 | + | func getKeyShareAssetId () = "SHARE_ASSET_ID" | |
23 | + | ||
24 | + | ||
25 | + | func getKeyIncubatorAddress () = "INCUBATOR_DAPP" | |
26 | + | ||
27 | + | ||
28 | + | func getKeyBreederAddress () = "BREEDER_DAPP" | |
29 | + | ||
30 | + | ||
31 | + | func getKeyFarmingAddress () = "FARMING_DAPP" | |
32 | + | ||
33 | + | ||
34 | + | func getKeyMarketplaceAddress () = "MARKETPLACE" | |
35 | + | ||
36 | + | ||
37 | + | func getKeyTotalFarmingReward () = "total_farming_reward" | |
38 | + | ||
39 | + | ||
40 | + | func getKeyFarmingRewardClaimed () = "farming_reward_claimed" | |
41 | + | ||
42 | + | ||
43 | + | func getKeyCeoCollectedFee () = "ceo_collected_fee" | |
44 | + | ||
45 | + | ||
46 | + | func getKeyCeoCollectedFeeOverall () = "ceo_fee_overall" | |
47 | + | ||
48 | + | ||
49 | + | func tryGetInteger (key) = { | |
50 | + | let val = match getInteger(this, key) { | |
51 | + | case b: Int => | |
52 | + | b | |
53 | + | case _ => | |
54 | + | 0 | |
55 | + | } | |
56 | + | val | |
57 | + | } | |
58 | + | ||
59 | + | ||
60 | + | func tryGetString (key) = { | |
61 | + | let val = match getString(this, key) { | |
62 | + | case b: String => | |
63 | + | b | |
64 | + | case _ => | |
65 | + | "" | |
66 | + | } | |
67 | + | val | |
68 | + | } | |
69 | + | ||
70 | + | ||
71 | + | func tryGetBoolean (key) = { | |
72 | + | let val = match getBoolean(this, key) { | |
73 | + | case b: Boolean => | |
74 | + | b | |
75 | + | case _ => | |
76 | + | unit | |
77 | + | } | |
78 | + | val | |
79 | + | } | |
80 | + | ||
81 | + | ||
82 | + | func tryGetStringFromAccount (address,key) = { | |
83 | + | let val = match getString(address, key) { | |
84 | + | case b: String => | |
85 | + | b | |
86 | + | case _ => | |
87 | + | "" | |
88 | + | } | |
89 | + | val | |
90 | + | } | |
91 | + | ||
92 | + | ||
93 | + | func tryGetIntegerFromAccount (address,key) = { | |
94 | + | let val = match getInteger(address, key) { | |
95 | + | case b: Int => | |
96 | + | b | |
97 | + | case _ => | |
98 | + | 0 | |
99 | + | } | |
100 | + | val | |
101 | + | } | |
102 | + | ||
103 | + | ||
104 | + | func getMarketplaceAddress () = tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyMarketplaceAddress()) | |
105 | + | ||
106 | + | ||
107 | + | func getAmountOrClear (amount) = if (contains(amount, "0")) | |
108 | + | then "" | |
109 | + | else amount | |
110 | + | ||
111 | + | ||
112 | + | func isSymbolA (accumulated,sym) = if ((sym == "A")) | |
113 | + | then (accumulated + 1) | |
114 | + | else (accumulated + 0) | |
115 | + | ||
116 | + | ||
117 | + | func isSymbolB (accumulated,sym) = if ((sym == "B")) | |
118 | + | then (accumulated + 1) | |
119 | + | else (accumulated + 0) | |
120 | + | ||
121 | + | ||
122 | + | func isSymbolC (accumulated,sym) = if ((sym == "C")) | |
123 | + | then (accumulated + 1) | |
124 | + | else (accumulated + 0) | |
125 | + | ||
126 | + | ||
127 | + | func isSymbolD (accumulated,sym) = if ((sym == "D")) | |
128 | + | then (accumulated + 1) | |
129 | + | else (accumulated + 0) | |
130 | + | ||
131 | + | ||
132 | + | func isSymbolE (accumulated,sym) = if ((sym == "E")) | |
133 | + | then (accumulated + 1) | |
134 | + | else (accumulated + 0) | |
135 | + | ||
136 | + | ||
137 | + | func isSymbolF (accumulated,sym) = if ((sym == "F")) | |
138 | + | then (accumulated + 1) | |
139 | + | else (accumulated + 0) | |
140 | + | ||
141 | + | ||
142 | + | func isSymbolG (accumulated,sym) = if ((sym == "G")) | |
143 | + | then (accumulated + 1) | |
144 | + | else (accumulated + 0) | |
145 | + | ||
146 | + | ||
147 | + | func isSymbolH (accumulated,sym) = if ((sym == "H")) | |
148 | + | then (accumulated + 1) | |
149 | + | else (accumulated + 0) | |
150 | + | ||
151 | + | ||
152 | + | func getGen (assetName) = { | |
153 | + | let genotype = split(dropRight(drop(assetName, 5), 3), "") | |
154 | + | (((((((getAmountOrClear((toString({ | |
155 | + | let $list29512982 = genotype | |
156 | + | let $size29512982 = size($list29512982) | |
157 | + | let $acc029512982 = 0 | |
158 | + | if (($size29512982 == 0)) | |
159 | + | then $acc029512982 | |
160 | + | else { | |
161 | + | let $acc129512982 = isSymbolA($acc029512982, $list29512982[0]) | |
162 | + | if (($size29512982 == 1)) | |
163 | + | then $acc129512982 | |
164 | + | else { | |
165 | + | let $acc229512982 = isSymbolA($acc129512982, $list29512982[1]) | |
166 | + | if (($size29512982 == 2)) | |
167 | + | then $acc229512982 | |
168 | + | else { | |
169 | + | let $acc329512982 = isSymbolA($acc229512982, $list29512982[2]) | |
170 | + | if (($size29512982 == 3)) | |
171 | + | then $acc329512982 | |
172 | + | else { | |
173 | + | let $acc429512982 = isSymbolA($acc329512982, $list29512982[3]) | |
174 | + | if (($size29512982 == 4)) | |
175 | + | then $acc429512982 | |
176 | + | else { | |
177 | + | let $acc529512982 = isSymbolA($acc429512982, $list29512982[4]) | |
178 | + | if (($size29512982 == 5)) | |
179 | + | then $acc529512982 | |
180 | + | else { | |
181 | + | let $acc629512982 = isSymbolA($acc529512982, $list29512982[5]) | |
182 | + | if (($size29512982 == 6)) | |
183 | + | then $acc629512982 | |
184 | + | else { | |
185 | + | let $acc729512982 = isSymbolA($acc629512982, $list29512982[6]) | |
186 | + | if (($size29512982 == 7)) | |
187 | + | then $acc729512982 | |
188 | + | else { | |
189 | + | let $acc829512982 = isSymbolA($acc729512982, $list29512982[7]) | |
190 | + | if (($size29512982 == 8)) | |
191 | + | then $acc829512982 | |
192 | + | else { | |
193 | + | let $acc929512982 = isSymbolA($acc829512982, $list29512982[8]) | |
194 | + | throw("List size exceed 8") | |
195 | + | } | |
196 | + | } | |
197 | + | } | |
198 | + | } | |
199 | + | } | |
200 | + | } | |
201 | + | } | |
202 | + | } | |
203 | + | } | |
204 | + | }) + "A")) + getAmountOrClear((toString({ | |
205 | + | let $list30193050 = genotype | |
206 | + | let $size30193050 = size($list30193050) | |
207 | + | let $acc030193050 = 0 | |
208 | + | if (($size30193050 == 0)) | |
209 | + | then $acc030193050 | |
210 | + | else { | |
211 | + | let $acc130193050 = isSymbolB($acc030193050, $list30193050[0]) | |
212 | + | if (($size30193050 == 1)) | |
213 | + | then $acc130193050 | |
214 | + | else { | |
215 | + | let $acc230193050 = isSymbolB($acc130193050, $list30193050[1]) | |
216 | + | if (($size30193050 == 2)) | |
217 | + | then $acc230193050 | |
218 | + | else { | |
219 | + | let $acc330193050 = isSymbolB($acc230193050, $list30193050[2]) | |
220 | + | if (($size30193050 == 3)) | |
221 | + | then $acc330193050 | |
222 | + | else { | |
223 | + | let $acc430193050 = isSymbolB($acc330193050, $list30193050[3]) | |
224 | + | if (($size30193050 == 4)) | |
225 | + | then $acc430193050 | |
226 | + | else { | |
227 | + | let $acc530193050 = isSymbolB($acc430193050, $list30193050[4]) | |
228 | + | if (($size30193050 == 5)) | |
229 | + | then $acc530193050 | |
230 | + | else { | |
231 | + | let $acc630193050 = isSymbolB($acc530193050, $list30193050[5]) | |
232 | + | if (($size30193050 == 6)) | |
233 | + | then $acc630193050 | |
234 | + | else { | |
235 | + | let $acc730193050 = isSymbolB($acc630193050, $list30193050[6]) | |
236 | + | if (($size30193050 == 7)) | |
237 | + | then $acc730193050 | |
238 | + | else { | |
239 | + | let $acc830193050 = isSymbolB($acc730193050, $list30193050[7]) | |
240 | + | if (($size30193050 == 8)) | |
241 | + | then $acc830193050 | |
242 | + | else { | |
243 | + | let $acc930193050 = isSymbolB($acc830193050, $list30193050[8]) | |
244 | + | throw("List size exceed 8") | |
245 | + | } | |
246 | + | } | |
247 | + | } | |
248 | + | } | |
249 | + | } | |
250 | + | } | |
251 | + | } | |
252 | + | } | |
253 | + | } | |
254 | + | }) + "B"))) + getAmountOrClear((toString({ | |
255 | + | let $list30873118 = genotype | |
256 | + | let $size30873118 = size($list30873118) | |
257 | + | let $acc030873118 = 0 | |
258 | + | if (($size30873118 == 0)) | |
259 | + | then $acc030873118 | |
260 | + | else { | |
261 | + | let $acc130873118 = isSymbolC($acc030873118, $list30873118[0]) | |
262 | + | if (($size30873118 == 1)) | |
263 | + | then $acc130873118 | |
264 | + | else { | |
265 | + | let $acc230873118 = isSymbolC($acc130873118, $list30873118[1]) | |
266 | + | if (($size30873118 == 2)) | |
267 | + | then $acc230873118 | |
268 | + | else { | |
269 | + | let $acc330873118 = isSymbolC($acc230873118, $list30873118[2]) | |
270 | + | if (($size30873118 == 3)) | |
271 | + | then $acc330873118 | |
272 | + | else { | |
273 | + | let $acc430873118 = isSymbolC($acc330873118, $list30873118[3]) | |
274 | + | if (($size30873118 == 4)) | |
275 | + | then $acc430873118 | |
276 | + | else { | |
277 | + | let $acc530873118 = isSymbolC($acc430873118, $list30873118[4]) | |
278 | + | if (($size30873118 == 5)) | |
279 | + | then $acc530873118 | |
280 | + | else { | |
281 | + | let $acc630873118 = isSymbolC($acc530873118, $list30873118[5]) | |
282 | + | if (($size30873118 == 6)) | |
283 | + | then $acc630873118 | |
284 | + | else { | |
285 | + | let $acc730873118 = isSymbolC($acc630873118, $list30873118[6]) | |
286 | + | if (($size30873118 == 7)) | |
287 | + | then $acc730873118 | |
288 | + | else { | |
289 | + | let $acc830873118 = isSymbolC($acc730873118, $list30873118[7]) | |
290 | + | if (($size30873118 == 8)) | |
291 | + | then $acc830873118 | |
292 | + | else { | |
293 | + | let $acc930873118 = isSymbolC($acc830873118, $list30873118[8]) | |
294 | + | throw("List size exceed 8") | |
295 | + | } | |
296 | + | } | |
297 | + | } | |
298 | + | } | |
299 | + | } | |
300 | + | } | |
301 | + | } | |
302 | + | } | |
303 | + | } | |
304 | + | }) + "C"))) + getAmountOrClear((toString({ | |
305 | + | let $list31573188 = genotype | |
306 | + | let $size31573188 = size($list31573188) | |
307 | + | let $acc031573188 = 0 | |
308 | + | if (($size31573188 == 0)) | |
309 | + | then $acc031573188 | |
310 | + | else { | |
311 | + | let $acc131573188 = isSymbolD($acc031573188, $list31573188[0]) | |
312 | + | if (($size31573188 == 1)) | |
313 | + | then $acc131573188 | |
314 | + | else { | |
315 | + | let $acc231573188 = isSymbolD($acc131573188, $list31573188[1]) | |
316 | + | if (($size31573188 == 2)) | |
317 | + | then $acc231573188 | |
318 | + | else { | |
319 | + | let $acc331573188 = isSymbolD($acc231573188, $list31573188[2]) | |
320 | + | if (($size31573188 == 3)) | |
321 | + | then $acc331573188 | |
322 | + | else { | |
323 | + | let $acc431573188 = isSymbolD($acc331573188, $list31573188[3]) | |
324 | + | if (($size31573188 == 4)) | |
325 | + | then $acc431573188 | |
326 | + | else { | |
327 | + | let $acc531573188 = isSymbolD($acc431573188, $list31573188[4]) | |
328 | + | if (($size31573188 == 5)) | |
329 | + | then $acc531573188 | |
330 | + | else { | |
331 | + | let $acc631573188 = isSymbolD($acc531573188, $list31573188[5]) | |
332 | + | if (($size31573188 == 6)) | |
333 | + | then $acc631573188 | |
334 | + | else { | |
335 | + | let $acc731573188 = isSymbolD($acc631573188, $list31573188[6]) | |
336 | + | if (($size31573188 == 7)) | |
337 | + | then $acc731573188 | |
338 | + | else { | |
339 | + | let $acc831573188 = isSymbolD($acc731573188, $list31573188[7]) | |
340 | + | if (($size31573188 == 8)) | |
341 | + | then $acc831573188 | |
342 | + | else { | |
343 | + | let $acc931573188 = isSymbolD($acc831573188, $list31573188[8]) | |
344 | + | throw("List size exceed 8") | |
345 | + | } | |
346 | + | } | |
347 | + | } | |
348 | + | } | |
349 | + | } | |
350 | + | } | |
351 | + | } | |
352 | + | } | |
353 | + | } | |
354 | + | }) + "D"))) + getAmountOrClear((toString({ | |
355 | + | let $list32253256 = genotype | |
356 | + | let $size32253256 = size($list32253256) | |
357 | + | let $acc032253256 = 0 | |
358 | + | if (($size32253256 == 0)) | |
359 | + | then $acc032253256 | |
360 | + | else { | |
361 | + | let $acc132253256 = isSymbolE($acc032253256, $list32253256[0]) | |
362 | + | if (($size32253256 == 1)) | |
363 | + | then $acc132253256 | |
364 | + | else { | |
365 | + | let $acc232253256 = isSymbolE($acc132253256, $list32253256[1]) | |
366 | + | if (($size32253256 == 2)) | |
367 | + | then $acc232253256 | |
368 | + | else { | |
369 | + | let $acc332253256 = isSymbolE($acc232253256, $list32253256[2]) | |
370 | + | if (($size32253256 == 3)) | |
371 | + | then $acc332253256 | |
372 | + | else { | |
373 | + | let $acc432253256 = isSymbolE($acc332253256, $list32253256[3]) | |
374 | + | if (($size32253256 == 4)) | |
375 | + | then $acc432253256 | |
376 | + | else { | |
377 | + | let $acc532253256 = isSymbolE($acc432253256, $list32253256[4]) | |
378 | + | if (($size32253256 == 5)) | |
379 | + | then $acc532253256 | |
380 | + | else { | |
381 | + | let $acc632253256 = isSymbolE($acc532253256, $list32253256[5]) | |
382 | + | if (($size32253256 == 6)) | |
383 | + | then $acc632253256 | |
384 | + | else { | |
385 | + | let $acc732253256 = isSymbolE($acc632253256, $list32253256[6]) | |
386 | + | if (($size32253256 == 7)) | |
387 | + | then $acc732253256 | |
388 | + | else { | |
389 | + | let $acc832253256 = isSymbolE($acc732253256, $list32253256[7]) | |
390 | + | if (($size32253256 == 8)) | |
391 | + | then $acc832253256 | |
392 | + | else { | |
393 | + | let $acc932253256 = isSymbolE($acc832253256, $list32253256[8]) | |
394 | + | throw("List size exceed 8") | |
395 | + | } | |
396 | + | } | |
397 | + | } | |
398 | + | } | |
399 | + | } | |
400 | + | } | |
401 | + | } | |
402 | + | } | |
403 | + | } | |
404 | + | }) + "E"))) + getAmountOrClear((toString({ | |
405 | + | let $list32933324 = genotype | |
406 | + | let $size32933324 = size($list32933324) | |
407 | + | let $acc032933324 = 0 | |
408 | + | if (($size32933324 == 0)) | |
409 | + | then $acc032933324 | |
410 | + | else { | |
411 | + | let $acc132933324 = isSymbolF($acc032933324, $list32933324[0]) | |
412 | + | if (($size32933324 == 1)) | |
413 | + | then $acc132933324 | |
414 | + | else { | |
415 | + | let $acc232933324 = isSymbolF($acc132933324, $list32933324[1]) | |
416 | + | if (($size32933324 == 2)) | |
417 | + | then $acc232933324 | |
418 | + | else { | |
419 | + | let $acc332933324 = isSymbolF($acc232933324, $list32933324[2]) | |
420 | + | if (($size32933324 == 3)) | |
421 | + | then $acc332933324 | |
422 | + | else { | |
423 | + | let $acc432933324 = isSymbolF($acc332933324, $list32933324[3]) | |
424 | + | if (($size32933324 == 4)) | |
425 | + | then $acc432933324 | |
426 | + | else { | |
427 | + | let $acc532933324 = isSymbolF($acc432933324, $list32933324[4]) | |
428 | + | if (($size32933324 == 5)) | |
429 | + | then $acc532933324 | |
430 | + | else { | |
431 | + | let $acc632933324 = isSymbolF($acc532933324, $list32933324[5]) | |
432 | + | if (($size32933324 == 6)) | |
433 | + | then $acc632933324 | |
434 | + | else { | |
435 | + | let $acc732933324 = isSymbolF($acc632933324, $list32933324[6]) | |
436 | + | if (($size32933324 == 7)) | |
437 | + | then $acc732933324 | |
438 | + | else { | |
439 | + | let $acc832933324 = isSymbolF($acc732933324, $list32933324[7]) | |
440 | + | if (($size32933324 == 8)) | |
441 | + | then $acc832933324 | |
442 | + | else { | |
443 | + | let $acc932933324 = isSymbolF($acc832933324, $list32933324[8]) | |
444 | + | throw("List size exceed 8") | |
445 | + | } | |
446 | + | } | |
447 | + | } | |
448 | + | } | |
449 | + | } | |
450 | + | } | |
451 | + | } | |
452 | + | } | |
453 | + | } | |
454 | + | }) + "F"))) + getAmountOrClear((toString({ | |
455 | + | let $list33633394 = genotype | |
456 | + | let $size33633394 = size($list33633394) | |
457 | + | let $acc033633394 = 0 | |
458 | + | if (($size33633394 == 0)) | |
459 | + | then $acc033633394 | |
460 | + | else { | |
461 | + | let $acc133633394 = isSymbolG($acc033633394, $list33633394[0]) | |
462 | + | if (($size33633394 == 1)) | |
463 | + | then $acc133633394 | |
464 | + | else { | |
465 | + | let $acc233633394 = isSymbolG($acc133633394, $list33633394[1]) | |
466 | + | if (($size33633394 == 2)) | |
467 | + | then $acc233633394 | |
468 | + | else { | |
469 | + | let $acc333633394 = isSymbolG($acc233633394, $list33633394[2]) | |
470 | + | if (($size33633394 == 3)) | |
471 | + | then $acc333633394 | |
472 | + | else { | |
473 | + | let $acc433633394 = isSymbolG($acc333633394, $list33633394[3]) | |
474 | + | if (($size33633394 == 4)) | |
475 | + | then $acc433633394 | |
476 | + | else { | |
477 | + | let $acc533633394 = isSymbolG($acc433633394, $list33633394[4]) | |
478 | + | if (($size33633394 == 5)) | |
479 | + | then $acc533633394 | |
480 | + | else { | |
481 | + | let $acc633633394 = isSymbolG($acc533633394, $list33633394[5]) | |
482 | + | if (($size33633394 == 6)) | |
483 | + | then $acc633633394 | |
484 | + | else { | |
485 | + | let $acc733633394 = isSymbolG($acc633633394, $list33633394[6]) | |
486 | + | if (($size33633394 == 7)) | |
487 | + | then $acc733633394 | |
488 | + | else { | |
489 | + | let $acc833633394 = isSymbolG($acc733633394, $list33633394[7]) | |
490 | + | if (($size33633394 == 8)) | |
491 | + | then $acc833633394 | |
492 | + | else { | |
493 | + | let $acc933633394 = isSymbolG($acc833633394, $list33633394[8]) | |
494 | + | throw("List size exceed 8") | |
495 | + | } | |
496 | + | } | |
497 | + | } | |
498 | + | } | |
499 | + | } | |
500 | + | } | |
501 | + | } | |
502 | + | } | |
503 | + | } | |
504 | + | }) + "G"))) + getAmountOrClear((toString({ | |
505 | + | let $list34313462 = genotype | |
506 | + | let $size34313462 = size($list34313462) | |
507 | + | let $acc034313462 = 0 | |
508 | + | if (($size34313462 == 0)) | |
509 | + | then $acc034313462 | |
510 | + | else { | |
511 | + | let $acc134313462 = isSymbolH($acc034313462, $list34313462[0]) | |
512 | + | if (($size34313462 == 1)) | |
513 | + | then $acc134313462 | |
514 | + | else { | |
515 | + | let $acc234313462 = isSymbolH($acc134313462, $list34313462[1]) | |
516 | + | if (($size34313462 == 2)) | |
517 | + | then $acc234313462 | |
518 | + | else { | |
519 | + | let $acc334313462 = isSymbolH($acc234313462, $list34313462[2]) | |
520 | + | if (($size34313462 == 3)) | |
521 | + | then $acc334313462 | |
522 | + | else { | |
523 | + | let $acc434313462 = isSymbolH($acc334313462, $list34313462[3]) | |
524 | + | if (($size34313462 == 4)) | |
525 | + | then $acc434313462 | |
526 | + | else { | |
527 | + | let $acc534313462 = isSymbolH($acc434313462, $list34313462[4]) | |
528 | + | if (($size34313462 == 5)) | |
529 | + | then $acc534313462 | |
530 | + | else { | |
531 | + | let $acc634313462 = isSymbolH($acc534313462, $list34313462[5]) | |
532 | + | if (($size34313462 == 6)) | |
533 | + | then $acc634313462 | |
534 | + | else { | |
535 | + | let $acc734313462 = isSymbolH($acc634313462, $list34313462[6]) | |
536 | + | if (($size34313462 == 7)) | |
537 | + | then $acc734313462 | |
538 | + | else { | |
539 | + | let $acc834313462 = isSymbolH($acc734313462, $list34313462[7]) | |
540 | + | if (($size34313462 == 8)) | |
541 | + | then $acc834313462 | |
542 | + | else { | |
543 | + | let $acc934313462 = isSymbolH($acc834313462, $list34313462[8]) | |
544 | + | throw("List size exceed 8") | |
545 | + | } | |
546 | + | } | |
547 | + | } | |
548 | + | } | |
549 | + | } | |
550 | + | } | |
551 | + | } | |
552 | + | } | |
553 | + | } | |
554 | + | }) + "H"))) | |
555 | + | } | |
556 | + | ||
557 | + | ||
558 | + | func getAssetOrigin (generation) = { | |
559 | + | let incubatorAddress = tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyIncubatorAddress()) | |
560 | + | let breederAddress = tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyBreederAddress()) | |
561 | + | if ((generation == "G")) | |
562 | + | then fromBase58String(incubatorAddress) | |
563 | + | else fromBase58String(breederAddress) | |
564 | + | } | |
565 | + | ||
566 | + | ||
567 | + | func getAssetRarity (genotype,generation) = { | |
568 | + | let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity")) | |
569 | + | let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR) | |
570 | + | if ((power > 0)) | |
571 | + | then power | |
572 | + | else 2 | |
573 | + | } | |
574 | + | ||
575 | + | ||
576 | + | func getAssetFarmingPower (assetId) = { | |
577 | + | let breederAddress = fromBase58String(tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyBreederAddress())) | |
578 | + | let incubatorAddress = fromBase58String(tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyIncubatorAddress())) | |
579 | + | if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress))) | |
580 | + | then true | |
581 | + | else (value(assetInfo(assetId)).issuer == Address(incubatorAddress))) | |
582 | + | then { | |
583 | + | let assetName = value(assetInfo(assetId)).name | |
584 | + | let generation = take(takeRight(assetName, 2), 1) | |
585 | + | let gen = ((getGen(assetName) + "-") + generation) | |
586 | + | getAssetRarity(gen, generation) | |
587 | + | } | |
588 | + | else throw("_20") | |
589 | + | } | |
590 | + | ||
591 | + | ||
592 | + | func getDuckMarketPrice (nftId) = { | |
593 | + | let rarity = getAssetFarmingPower(nftId) | |
594 | + | let breederAddress = addressFromStringValue(tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyBreederAddress())) | |
595 | + | let canBreed = tryGetIntegerFromAccount(breederAddress, (("asset_" + toBase58String(nftId)) + "_children")) | |
596 | + | let canBreedText = if ((canBreed > 0)) | |
597 | + | then "1" | |
598 | + | else "0" | |
599 | + | tryGetIntegerFromAccount(addressFromPublicKey(masterAccountPubKey), ((("r-" + toString(rarity)) + "-b-") + canBreedText)) | |
600 | + | } | |
601 | + | ||
602 | + | ||
603 | + | func getDuckAssetIdByAuctionId (auctionId) = { | |
604 | + | let marketplaceAddress = getMarketplaceAddress() | |
605 | + | tryGetStringFromAccount(addressFromStringValue(marketplaceAddress), (("auction_" + auctionId) + "_assetId")) | |
606 | + | } | |
607 | + | ||
608 | + | ||
609 | + | func getBidAmount (auctionId,bidId) = { | |
610 | + | let marketplaceAddress = getMarketplaceAddress() | |
611 | + | tryGetIntegerFromAccount(addressFromStringValue(marketplaceAddress), (((("auction_" + auctionId) + "_bid_") + bidId) + "_amount")) | |
612 | + | } | |
613 | + | ||
614 | + | ||
615 | + | func getEggAssetId () = fromBase58String(getStringValue(addressFromPublicKey(masterAccountPubKey), "EGG_ASSET_ID")) | |
616 | + | ||
617 | + | ||
618 | + | func getShareAssetId () = fromBase58String(tryGetString(getKeyShareAssetId())) | |
619 | + | ||
620 | + | ||
621 | + | @Callable(i) | |
622 | + | func initCollectiveFarm (name,minimumThreshold) = if ((i.callerPublicKey != masterAccountPubKey)) | |
623 | + | then throw("_1") | |
624 | + | else if ((tryGetBoolean(getKeyInitialized()) != unit)) | |
625 | + | then throw("_2") | |
626 | + | else { | |
627 | + | let shareTokens = 10000 | |
628 | + | let shareToken = Issue(name, (("Share token for the \"" + name) + "\" collective farm"), shareTokens, 8, true) | |
629 | + | [StringEntry(getKeyShareAssetId(), toBase58String(calculateAssetId(shareToken))), BooleanEntry(getKeyInitialized(), true), IntegerEntry(getKeyTotalLiquidity(), 10), IntegerEntry(getKeyTotalShareTokens(), shareTokens), IntegerEntry(getKeyLiquidityThreshold(), minimumThreshold)] | |
630 | + | } | |
631 | + | ||
632 | + | ||
633 | + | ||
634 | + | @Callable(i) | |
635 | + | func provideLiquidity () = { | |
636 | + | let eggAssetId = getEggAssetId() | |
637 | + | if ((i.payments[0].assetId != eggAssetId)) | |
638 | + | then throw("_4") | |
639 | + | else { | |
640 | + | let totalLiquidity = tryGetInteger(getKeyTotalLiquidity()) | |
641 | + | let totalShareTokens = tryGetInteger(getKeyTotalShareTokens()) | |
642 | + | let currentLiquidityAmount = i.payments[0].amount | |
643 | + | let currentTotalFarmingReward = tryGetInteger(getKeyTotalFarmingReward()) | |
644 | + | let shareTokensToGive = ((totalShareTokens * currentLiquidityAmount) / (totalLiquidity + currentTotalFarmingReward)) | |
645 | + | let shareTokensId = getEggAssetId() | |
646 | + | let reissue = Reissue(getShareAssetId(), shareTokensToGive, true) | |
647 | + | [reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(getKeyTotalLiquidity(), (totalLiquidity + value(i.payments[0].amount)))] | |
648 | + | } | |
649 | + | } | |
650 | + | ||
651 | + | ||
652 | + | ||
653 | + | @Callable(i) | |
654 | + | func claimFarmingRewardProxy (nftIds) = { | |
655 | + | let farmingDappAddress = tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyFarmingAddress()) | |
656 | + | func claimOneReward (accum,nftId) = { | |
657 | + | let invResult = invoke(addressFromStringValue(farmingDappAddress), "claimReward", [nftId], nil) | |
658 | + | if ((invResult == invResult)) | |
659 | + | then match invResult { | |
660 | + | case int: Int => | |
661 | + | (accum + int) | |
662 | + | case _ => | |
663 | + | throw("_5") | |
664 | + | } | |
665 | + | else throw("Strict value is not equal to itself.") | |
666 | + | } | |
667 | + | ||
668 | + | let foldResult = { | |
669 | + | let $list80268061 = nftIds | |
670 | + | let $size80268061 = size($list80268061) | |
671 | + | let $acc080268061 = 0 | |
672 | + | if (($size80268061 == 0)) | |
673 | + | then $acc080268061 | |
674 | + | else { | |
675 | + | let $acc180268061 = claimOneReward($acc080268061, $list80268061[0]) | |
676 | + | if (($size80268061 == 1)) | |
677 | + | then $acc180268061 | |
678 | + | else { | |
679 | + | let $acc280268061 = claimOneReward($acc180268061, $list80268061[1]) | |
680 | + | if (($size80268061 == 2)) | |
681 | + | then $acc280268061 | |
682 | + | else { | |
683 | + | let $acc380268061 = claimOneReward($acc280268061, $list80268061[2]) | |
684 | + | if (($size80268061 == 3)) | |
685 | + | then $acc380268061 | |
686 | + | else { | |
687 | + | let $acc480268061 = claimOneReward($acc380268061, $list80268061[3]) | |
688 | + | if (($size80268061 == 4)) | |
689 | + | then $acc480268061 | |
690 | + | else { | |
691 | + | let $acc580268061 = claimOneReward($acc480268061, $list80268061[4]) | |
692 | + | if (($size80268061 == 5)) | |
693 | + | then $acc580268061 | |
694 | + | else { | |
695 | + | let $acc680268061 = claimOneReward($acc580268061, $list80268061[5]) | |
696 | + | if (($size80268061 == 6)) | |
697 | + | then $acc680268061 | |
698 | + | else { | |
699 | + | let $acc780268061 = claimOneReward($acc680268061, $list80268061[6]) | |
700 | + | if (($size80268061 == 7)) | |
701 | + | then $acc780268061 | |
702 | + | else { | |
703 | + | let $acc880268061 = claimOneReward($acc780268061, $list80268061[7]) | |
704 | + | if (($size80268061 == 8)) | |
705 | + | then $acc880268061 | |
706 | + | else { | |
707 | + | let $acc980268061 = claimOneReward($acc880268061, $list80268061[8]) | |
708 | + | if (($size80268061 == 9)) | |
709 | + | then $acc980268061 | |
710 | + | else { | |
711 | + | let $acc1080268061 = claimOneReward($acc980268061, $list80268061[9]) | |
712 | + | if (($size80268061 == 10)) | |
713 | + | then $acc1080268061 | |
714 | + | else { | |
715 | + | let $acc1180268061 = claimOneReward($acc1080268061, $list80268061[10]) | |
716 | + | if (($size80268061 == 11)) | |
717 | + | then $acc1180268061 | |
718 | + | else { | |
719 | + | let $acc1280268061 = claimOneReward($acc1180268061, $list80268061[11]) | |
720 | + | if (($size80268061 == 12)) | |
721 | + | then $acc1280268061 | |
722 | + | else { | |
723 | + | let $acc1380268061 = claimOneReward($acc1280268061, $list80268061[12]) | |
724 | + | if (($size80268061 == 13)) | |
725 | + | then $acc1380268061 | |
726 | + | else { | |
727 | + | let $acc1480268061 = claimOneReward($acc1380268061, $list80268061[13]) | |
728 | + | if (($size80268061 == 14)) | |
729 | + | then $acc1480268061 | |
730 | + | else { | |
731 | + | let $acc1580268061 = claimOneReward($acc1480268061, $list80268061[14]) | |
732 | + | if (($size80268061 == 15)) | |
733 | + | then $acc1580268061 | |
734 | + | else { | |
735 | + | let $acc1680268061 = claimOneReward($acc1580268061, $list80268061[15]) | |
736 | + | if (($size80268061 == 16)) | |
737 | + | then $acc1680268061 | |
738 | + | else { | |
739 | + | let $acc1780268061 = claimOneReward($acc1680268061, $list80268061[16]) | |
740 | + | if (($size80268061 == 17)) | |
741 | + | then $acc1780268061 | |
742 | + | else { | |
743 | + | let $acc1880268061 = claimOneReward($acc1780268061, $list80268061[17]) | |
744 | + | if (($size80268061 == 18)) | |
745 | + | then $acc1880268061 | |
746 | + | else { | |
747 | + | let $acc1980268061 = claimOneReward($acc1880268061, $list80268061[18]) | |
748 | + | if (($size80268061 == 19)) | |
749 | + | then $acc1980268061 | |
750 | + | else { | |
751 | + | let $acc2080268061 = claimOneReward($acc1980268061, $list80268061[19]) | |
752 | + | if (($size80268061 == 20)) | |
753 | + | then $acc2080268061 | |
754 | + | else { | |
755 | + | let $acc2180268061 = claimOneReward($acc2080268061, $list80268061[20]) | |
756 | + | if (($size80268061 == 21)) | |
757 | + | then $acc2180268061 | |
758 | + | else { | |
759 | + | let $acc2280268061 = claimOneReward($acc2180268061, $list80268061[21]) | |
760 | + | if (($size80268061 == 22)) | |
761 | + | then $acc2280268061 | |
762 | + | else { | |
763 | + | let $acc2380268061 = claimOneReward($acc2280268061, $list80268061[22]) | |
764 | + | if (($size80268061 == 23)) | |
765 | + | then $acc2380268061 | |
766 | + | else { | |
767 | + | let $acc2480268061 = claimOneReward($acc2380268061, $list80268061[23]) | |
768 | + | if (($size80268061 == 24)) | |
769 | + | then $acc2480268061 | |
770 | + | else { | |
771 | + | let $acc2580268061 = claimOneReward($acc2480268061, $list80268061[24]) | |
772 | + | if (($size80268061 == 25)) | |
773 | + | then $acc2580268061 | |
774 | + | else { | |
775 | + | let $acc2680268061 = claimOneReward($acc2580268061, $list80268061[25]) | |
776 | + | if (($size80268061 == 26)) | |
777 | + | then $acc2680268061 | |
778 | + | else { | |
779 | + | let $acc2780268061 = claimOneReward($acc2680268061, $list80268061[26]) | |
780 | + | if (($size80268061 == 27)) | |
781 | + | then $acc2780268061 | |
782 | + | else { | |
783 | + | let $acc2880268061 = claimOneReward($acc2780268061, $list80268061[27]) | |
784 | + | if (($size80268061 == 28)) | |
785 | + | then $acc2880268061 | |
786 | + | else { | |
787 | + | let $acc2980268061 = claimOneReward($acc2880268061, $list80268061[28]) | |
788 | + | if (($size80268061 == 29)) | |
789 | + | then $acc2980268061 | |
790 | + | else { | |
791 | + | let $acc3080268061 = claimOneReward($acc2980268061, $list80268061[29]) | |
792 | + | if (($size80268061 == 30)) | |
793 | + | then $acc3080268061 | |
794 | + | else { | |
795 | + | let $acc3180268061 = claimOneReward($acc3080268061, $list80268061[30]) | |
796 | + | throw("List size exceed 30") | |
797 | + | } | |
798 | + | } | |
799 | + | } | |
800 | + | } | |
801 | + | } | |
802 | + | } | |
803 | + | } | |
804 | + | } | |
805 | + | } | |
806 | + | } | |
807 | + | } | |
808 | + | } | |
809 | + | } | |
810 | + | } | |
811 | + | } | |
812 | + | } | |
813 | + | } | |
814 | + | } | |
815 | + | } | |
816 | + | } | |
817 | + | } | |
818 | + | } | |
819 | + | } | |
820 | + | } | |
821 | + | } | |
822 | + | } | |
823 | + | } | |
824 | + | } | |
825 | + | } | |
826 | + | } | |
827 | + | } | |
828 | + | } | |
829 | + | let claimedReward = match foldResult { | |
830 | + | case int: Int => | |
831 | + | int | |
832 | + | case _ => | |
833 | + | throw("_6") | |
834 | + | } | |
835 | + | let farmCeoFeeSize = fraction(claimedReward, feePercent, 100) | |
836 | + | let currentTotalFarmingReward = tryGetInteger(getKeyTotalFarmingReward()) | |
837 | + | let currentCeoCollectedFee = tryGetInteger(getKeyCeoCollectedFee()) | |
838 | + | let currentCeoCollectedFeeOverall = tryGetInteger(getKeyCeoCollectedFeeOverall()) | |
839 | + | [IntegerEntry(getKeyTotalFarmingReward(), (currentTotalFarmingReward + (claimedReward - farmCeoFeeSize))), IntegerEntry(getKeyCeoCollectedFee(), (currentCeoCollectedFee + farmCeoFeeSize)), IntegerEntry(getKeyCeoCollectedFeeOverall(), (currentCeoCollectedFeeOverall + farmCeoFeeSize))] | |
840 | + | } | |
841 | + | ||
842 | + | ||
843 | + | ||
844 | + | @Callable(i) | |
845 | + | func claimCeoFee (address) = if ((i.caller == this)) | |
846 | + | then { | |
847 | + | let currentCeoCollectedFee = tryGetInteger(getKeyCeoCollectedFee()) | |
848 | + | [ScriptTransfer(addressFromStringValue(address), currentCeoCollectedFee, getEggAssetId()), IntegerEntry(getKeyCeoCollectedFee(), 0)] | |
849 | + | } | |
850 | + | else throw("_8") | |
851 | + | ||
852 | + | ||
853 | + | ||
854 | + | @Callable(i) | |
855 | + | func startLiquidation (auctionId) = throw("_7") | |
856 | + | ||
857 | + | ||
858 | + | ||
859 | + | @Callable(i) | |
860 | + | func voteForLiquidation (auctionId) = throw("_7") | |
861 | + | ||
862 | + | ||
863 | + | ||
864 | + | @Callable(i) | |
865 | + | func callMarketplaceProxy (function,int1,int2,str1,str2) = { | |
866 | + | let marketplaceDappAddress = addressFromStringValue(tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), getKeyMarketplaceAddress())) | |
867 | + | if ((function == "initAuction")) | |
868 | + | then { | |
869 | + | let asset = value(i.payments[0]) | |
870 | + | let duckMarketPrice = getDuckMarketPrice(value(asset.assetId)) | |
871 | + | let initialPrice = int1 | |
872 | + | let buyoutPrice = int2 | |
873 | + | if (if ((initialPrice >= (duckMarketPrice - ((duckMarketPrice / 100) * 15)))) | |
874 | + | then (buyoutPrice >= initialPrice) | |
875 | + | else false) | |
876 | + | then { | |
877 | + | let initAuction = invoke(marketplaceDappAddress, "initAuction", [initialPrice, buyoutPrice, str1], [AttachedPayment(value(asset.assetId), 1)]) | |
878 | + | if ((initAuction == initAuction)) | |
879 | + | then nil | |
880 | + | else throw("Strict value is not equal to itself.") | |
881 | + | } | |
882 | + | else throw(("_9=" + toString(duckMarketPrice))) | |
883 | + | } | |
884 | + | else if ((function == "placeBid")) | |
885 | + | then { | |
886 | + | let auctionId = str1 | |
887 | + | let duckAssetId = getDuckAssetIdByAuctionId(auctionId) | |
888 | + | let duckMarketPrice = getDuckMarketPrice(fromBase58String(duckAssetId)) | |
889 | + | let bidAmount = value(value(i.payments[0]).amount) | |
890 | + | if (((duckMarketPrice + ((duckMarketPrice / 100) * 10)) > bidAmount)) | |
891 | + | then { | |
892 | + | let placeBid = invoke(marketplaceDappAddress, "placeBid", [auctionId], [AttachedPayment(unit, bidAmount)]) | |
893 | + | if ((placeBid == placeBid)) | |
894 | + | then nil | |
895 | + | else throw("Strict value is not equal to itself.") | |
896 | + | } | |
897 | + | else throw(("_10=" + toString(duckMarketPrice))) | |
898 | + | } | |
899 | + | else if ((function == "acceptBid")) | |
900 | + | then { | |
901 | + | let auctionId = str1 | |
902 | + | let bidId = str2 | |
903 | + | let duckAssetId = getDuckAssetIdByAuctionId(auctionId) | |
904 | + | let duckMarketPrice = getDuckMarketPrice(fromBase58String(duckAssetId)) | |
905 | + | let bidAmount = getBidAmount(auctionId, bidId) | |
906 | + | if ((bidAmount >= (duckMarketPrice - ((duckMarketPrice / 100) * 15)))) | |
907 | + | then { | |
908 | + | let acceptBid = invoke(marketplaceDappAddress, "acceptBid", [auctionId, bidId], nil) | |
909 | + | if ((acceptBid == acceptBid)) | |
910 | + | then nil | |
911 | + | else throw("Strict value is not equal to itself.") | |
912 | + | } | |
913 | + | else throw(("_11=" + toString(duckMarketPrice))) | |
914 | + | } | |
915 | + | else if ((function == "instantBuy")) | |
916 | + | then { | |
917 | + | let auctionId = str1 | |
918 | + | let duckAssetId = getDuckAssetIdByAuctionId(auctionId) | |
919 | + | let duckMarketPrice = getDuckMarketPrice(fromBase58String(duckAssetId)) | |
920 | + | let bidAmount = value(value(i.payments[0]).amount) | |
921 | + | if (((duckMarketPrice + ((duckMarketPrice / 100) * 10)) > bidAmount)) | |
922 | + | then { | |
923 | + | let instantBuy = invoke(marketplaceDappAddress, "instantBuy", [auctionId], [AttachedPayment(unit, bidAmount)]) | |
924 | + | if ((instantBuy == instantBuy)) | |
925 | + | then nil | |
926 | + | else throw("Strict value is not equal to itself.") | |
927 | + | } | |
928 | + | else throw(("_12" + toString(duckMarketPrice))) | |
929 | + | } | |
930 | + | else throw("_13") | |
931 | + | } | |
932 | + | ||
933 | + | ||
934 | + | @Verifier(tx) | |
935 | + | func verify () = { | |
936 | + | let checkStarted = (tryGetInteger(getKeyTotalLiquidity()) >= tryGetInteger(getKeyLiquidityThreshold())) | |
937 | + | func totalEggSpending (accum,payment) = if ((payment.assetId == getEggAssetId())) | |
938 | + | then (accum + payment.amount) | |
939 | + | else accum | |
940 | + | ||
941 | + | if ((valueOrElse(checkStarted, false) == false)) | |
942 | + | then throw("_14") | |
943 | + | else match tx { | |
944 | + | case inv: InvokeScriptTransaction => | |
945 | + | let currentTotalFarmingReward = tryGetInteger(getKeyTotalFarmingReward()) | |
946 | + | if (if ((inv.fee > 900000)) | |
947 | + | then true | |
948 | + | else (inv.feeAssetId != unit)) | |
949 | + | then throw("_15") | |
950 | + | else if ((inv.function == "claimReward")) | |
951 | + | then throw("_16") | |
952 | + | else if ((size(inv.payments) > 2)) | |
953 | + | then throw("_17") | |
954 | + | else if ((currentTotalFarmingReward > (assetBalance(this, getEggAssetId()) - { | |
955 | + | let $list1278212824 = inv.payments | |
956 | + | let $size1278212824 = size($list1278212824) | |
957 | + | let $acc01278212824 = 0 | |
958 | + | if (($size1278212824 == 0)) | |
959 | + | then $acc01278212824 | |
960 | + | else { | |
961 | + | let $acc11278212824 = totalEggSpending($acc01278212824, $list1278212824[0]) | |
962 | + | if (($size1278212824 == 1)) | |
963 | + | then $acc11278212824 | |
964 | + | else { | |
965 | + | let $acc21278212824 = totalEggSpending($acc11278212824, $list1278212824[1]) | |
966 | + | if (($size1278212824 == 2)) | |
967 | + | then $acc21278212824 | |
968 | + | else { | |
969 | + | let $acc31278212824 = totalEggSpending($acc21278212824, $list1278212824[2]) | |
970 | + | if (($size1278212824 == 3)) | |
971 | + | then $acc31278212824 | |
972 | + | else { | |
973 | + | let $acc41278212824 = totalEggSpending($acc31278212824, $list1278212824[3]) | |
974 | + | throw("List size exceed 3") | |
975 | + | } | |
976 | + | } | |
977 | + | } | |
978 | + | } | |
979 | + | }))) | |
980 | + | then throw(("_18=" + toString(currentTotalFarmingReward))) | |
981 | + | else if (if ((addressFromRecipient(inv.dApp) == this)) | |
982 | + | then (inv.function == "claimCeoFee") | |
983 | + | else false) | |
984 | + | then true | |
985 | + | else if (if ((addressFromRecipient(inv.dApp) == this)) | |
986 | + | then (inv.function == "startCollectiveFarm") | |
987 | + | else false) | |
988 | + | then true | |
989 | + | else { | |
990 | + | let allowedContracts = tryGetStringFromAccount(addressFromPublicKey(masterAccountPubKey), "allowed_contracts") | |
991 | + | let marketplaceAddress = getMarketplaceAddress() | |
992 | + | let allowedContractsList = split(allowedContracts, ";") | |
993 | + | let dappToCall = toString(addressFromRecipient(inv.dApp)) | |
994 | + | if ((dappToCall == marketplaceAddress)) | |
995 | + | then throw("_19") | |
996 | + | else (indexOf(allowedContractsList, dappToCall) != unit) | |
997 | + | } | |
998 | + | case ss: SetScriptTransaction => | |
999 | + | sigVerify(tx.bodyBytes, tx.proofs[0], masterAccountPubKey) | |
1000 | + | case _ => | |
1001 | + | false | |
1002 | + | } | |
1003 | + | } | |
1004 | + |
github/deemru/w8io/3ef1775 68.70 ms ◑