tx · D1vbruiRNqzZ51ZrrpWWnXHEYzmP7WHQQMcSjU8e1zAa

3N29w4u1KAEydahgLZBbjxRvu2Hx6k727EF:  -0.02000000 Waves

2022.09.08 11:14 [2219866] smart account 3N29w4u1KAEydahgLZBbjxRvu2Hx6k727EF > SELF 0.00000000 Waves

{ "type": 13, "id": "D1vbruiRNqzZ51ZrrpWWnXHEYzmP7WHQQMcSjU8e1zAa", "fee": 2000000, "feeAssetId": null, "timestamp": 1662624902363, "version": 1, "sender": "3N29w4u1KAEydahgLZBbjxRvu2Hx6k727EF", "senderPublicKey": "4g6gkRwdYwZxyU3tnN69rJgbeuGRc131ENTwcPoZW7v1", "proofs": [ "3E1VUMmvDkoDjjCzyJ71F7S8efZrY5QvEg8fiG7xaejBTHiietq733FerUcbwkf1G8C6zirVpgpSJkTCYoahm8zU" ], "script": "base64:BgK/GQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgMKAQESABIHCgUBAQEIARIECgIBARIDCgEBEgQKAggIEgQKAggIEgQKAggBEgASAwoBCBIFCgMBAQESBAoCCAESBAoCAQESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgiD2RlZmF1bHREZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiCW9uZUJpZ0ludCIKc2xpcHBhZ2U0RCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiBWRlbGF5IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBWxnb3RjIgZjYWxsZXIiBWxzb3RjIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIglwckJhbGFuY2UiHGFtb3VudEJhbGFuY2VEZWZhdWx0RGVjaW1hbHMiG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscyIMYW1CYWxhbmNlWDE4IgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIeb3V0QW1vdW50QW1vdW50RGVmYXVsdERlY2ltYWxzIh1vdXRQcmljZUFtb3VudERlZmF1bHREZWNpbWFscyIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIiJpbkFtb3VudEFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzIiFpblByaWNlQXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE2NjQ3MTY5OTIiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgNtb2EiBW9yZGVyIgdhbXRBc0lkIgZwckFzSWQiD2FjY0FtdEFzQmFsYW5jZSIOYWNjUHJBc0JhbGFuY2UiCm9yQW10QXNzZXQiCm9yQW10QXNTdHIiCW9yUHJBc3NldCIJb3JQckFzU3RyIgpvcmRlclByaWNlIg5jYXN0T3JkZXJQcmljZSIRaXNPcmRlclByaWNlVmFsaWQiAmNnIgFpIgNwbXQiAmNwIgdhbUFzUG10IgdwckFzUG10IgFtIgFzIgJwbSICcGQiAm1tIgJwayIBYyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiC2FtQXNzZXRQYXJ0IgtwckFzc2V0UGFydCIFb3V0THAiB2d3eENudHIiB3Bvb2xDZmciBWFkZG9uIg0kdDAyNTY0MjI2MjE4IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyIMdmlydFN3YXBJbkFtIg12aXJ0U3dhcE91dFByIgx2aXJ0U3dhcEluUHIiDXZpcnRTd2FwT3V0QW0iBkQwdnNEMSIGZXN0UHV0Igdlc3RpbUxQIglscENhbGNSZXMiB21heFNscGciCW91dEFtdEFtdCIBYiIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50IgpvdXRBc3NldElkIgplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDAzMDk5NzMxNDU0Igh0b3RhbEdldCIIZmluYWxSZXMiDSR0MDMyMTU5MzIyNjMiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIgRidXJuIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSIGYW1vdW50Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoTwABYQDAhD0AAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBCQBlAgUBYgkAaQIJAGgCBQFiAAEFAWIAAWgCAzEwMAABaQIBMQABagICX18AAWsCAAABbAABAAFtAAIAAW4AAwABbwAEAAFwAAEAAXEAAgABcgADAAFzAAQAAXQABQABdQAGAAF2AAcAAXcACAABeAAJAAF5AAEAAXoABwABQQAKAAFCAgklc19fZGVsYXkBAUMCAUQBRQkAvAIDCQC2AgEFAUQFAWQJALYCAQUBRQEBRgIBRwFICQCgAwEJALwCAwUBRwkAtgIBBQFIBQFkAQFJAwFKAUsBTAkAawMFAUoFAUsFAUwBAU0BAUcDCQC/AgIFAWUFAUcJAL4CAQUBRwUBRwEBTgACEyVzX19mYWN0b3J5Q29udHJhY3QBAU8AAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUQACESVzJXNfX3ByaWNlX19sYXN0AQFSAgFTAVQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFTCQDMCAIJAKQDAQUBVAUDbmlsBQFqAQFVAgFWAVcJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFWAgJfXwUBVwEBWAIBVgFXCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBVgICX18FAVcBAVkAAg8lc19fYW1vdW50QXNzZXQBAVoAAg4lc19fcHJpY2VBc3NldAECYWEAAgclc19fYW1wAQJhYgACDSVzX19hZGRvbkFkZHIBAmFjAQJhZAkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFAmFkBQNuaWwFAWoBAmFlAQJhZAkAuQkCCQDMCAICFyVzJXNfX2xhc3RQdXRPbmVUa25DYWxsCQDMCAIFAmFkBQNuaWwFAWoBAmFmAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFnAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhaAICYWkCYWoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFpAgJfXwUCYWoCCF9fY29uZmlnAQJhawECYWwJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWwBAmFtAAIMJXNfX3NodXRkb3duAQJhbgACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbwMCYXACYXECYXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXACCyBzbmRyVmFsaWQ9CQClAwEFAmFxAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXIBAmFzAQFHBAJhdAUBRwMJAAECBQJhdAIGU3RyaW5nBAJhdQUCYXQFAmF1CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXYCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdgIFBHRoaXMJAQFOAAACYUEJAQJhdgIFBHRoaXMJAQJhYQABAmFCAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhegkBAmFtAAcBAmFDAAkA2QQBCQECYXYCBQJhegkBAmFnAAECYUQABAJhRQkBAmF2AgUEdGhpcwkBAVkABAJhRgkBAmF2AgUEdGhpcwkBAVoABAJhRwkBAmF5AgUCYXoJAQJhawEFAmFGBAJhaQkBAmF5AgUCYXoJAQJhawEFAmFFCQC1CQIJAQJhdgIFAmF6CQECYWgCCQCkAwEFAmFpCQCkAwEFAmFHBQFqAQJhSAAJALUJAgkBAmF2AgUCYXoJAQJhZgAFAWoBAmFJCgJhSgJhSwJhTAJhTQJhTgJhTwJhUAJhUQJhUgJhUwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYUoJAMwIAgkApAMBBQJhSwkAzAgCCQCkAwEFAmFMCQDMCAIJAKQDAQUCYU0JAMwIAgkApAMBBQJhTgkAzAgCCQCkAwEFAmFPCQDMCAIJAKQDAQUCYVAJAMwIAgkApAMBBQJhUQkAzAgCCQCkAwEFAmFSCQDMCAIJAKQDAQUCYVMFA25pbAUBagECYVQGAmFVAmFWAmFXAmFNAmFQAmFRCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXCQDMCAIJAKQDAQUCYU0JAMwIAgkApAMBBQJhUAkAzAgCCQCkAwEFAmFRBQNuaWwFAWoBAmFYAQJhWQMJAAACBQJhWQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYVkBAmFaAgJiYQJiYgkAvAIDBQJiYQUBZAUCYmIBAmJjAwJiZAJiZQJiZgQCYmcJALwCAwkAuAICBQJiZAUCYmUFAWMFAmJlBAJiaAkAvwICCQC4AgIFAmJmCQEBTQEFAmJnBQFlAwkBASEBBQJiaAkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiZwkAlAoCBQJiaAkAmQMBCQDMCAIFAmJkCQDMCAIFAmJlBQNuaWwBAmJpAwJiagJiawJibAQCYmcJALwCAwUCYmsFAWMFAmJqBAJibQkAvwICBQJibAUCYmcDAwUCYm0GCQC/AgIFAmJrBQJiagkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYmsCASAJAKYDAQUCYmoCASAJAKYDAQUCYmcCASAJAKYDAQUCYmwFAmJtAQJibgQCYm8CYnACYnECYnIEAmJzCQEBQwIFAmJxBQJibwQCYnQJAQFDAgUCYnIFAmJwCQECYVoCBQJidAUCYnMBAmJ1AwJicQJicgJidgQCYncJAQJhRAAEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXUEAmJ5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXYEAmJ6CQECYm4EBQJieAUCYnkFAmJxBQJicgQCYmIJAQFDAgUCYnEFAmJ4BAJiYQkBAUMCBQJicgUCYnkEAmJBCQEBQwIFAmJ2BQFiBAJiQgkBAmFaAgUCYmIFAmJBBAJiQwkBAmFaAgUCYmEFAmJBCQDMCAIFAmJ6CQDMCAIFAmJCCQDMCAIFAmJDBQNuaWwBAmJEAwJicQJicgJidgQCYkUJAQJidQMFAmJxBQJicgUCYnYJAMwIAgkBAUYCCQCRAwIFAmJFAAAFAWIJAMwIAgkBAUYCCQCRAwIFAmJFAAEFAWIJAMwIAgkBAUYCCQCRAwIFAmJFAAIFAWIFA25pbAECYkYEAmJHAmJIAmJJAmJKBAJidwkBAmFEAAQCYksJAJEDAgUCYncFAXIEAmJMCQCRAwIFAmJ3BQFzBAJiTQkAkQMCBQJidwUBdAQCYk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdQQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdgQCYlAJAJEDAgUCYncFAXEEAmJRCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYksCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYksFAmJICQACAQIPV3JvbmcgcG10IGFzc2V0BAJiUgkBAmFYAQUCYkwEAmJTCQECYVgBBQJiTQQCYlQJAGsDBQJiUgUBYQUCYk4EAmJVCQBrAwUCYlMFAWEFAmJPBAJiVgkBAUMCBQJiVAUBYQQCYlcJAQFDAgUCYlUFAWEEAmJYCQECYVoCBQJiVwUCYlYEAmJZCQEBRgIFAmJYBQFiBAJiWgkBAUMCBQJiSQUBYgQCY2EJAQFDAgUCYlEFAWIEAmNiCQC8AgMFAmJWBQJiWgUCY2EEAmNjCQC8AgMFAmJXBQJiWgUCY2EEAmNkCQEBRgIFAmNiBQFhBAJjZQkBAUYCBQJjYwUBYQQCY2YJAGsDBQJjZAUCYk4FAWEEAmNnCQBrAwUCY2UFAmJPBQFhBAJjaAMJAAACBQJiRwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYkoFAmNmAwkAAAIFAmJMAgVXQVZFUwUEdW5pdAkA2QQBBQJiTAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiSgUCY2cDCQAAAgUCYk0CBVdBVkVTBQR1bml0CQDZBAEFAmJNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAgkApQgBBQJiSgUCYkcJAQJhVAYFAmNmBQJjZwUCYkkFAmJZBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQAFAmJZCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmJZBQNuaWwJAJwKCgUCY2YFAmNnBQJiTAUCYk0FAmJSBQJiUwUCYlEFAmJYBQJiUAUCY2gBAmNpDAJiRwJiZgJjagJjawJjbAJjbQJiSgJjbgJjbwJjcAJjcQJjcgQCYncJAQJhRAAEAmJLCQDZBAEJAJEDAgUCYncFAXIEAmNzCQCRAwIFAmJ3BQFzBAJjdAkAkQMCBQJidwUBdAQCY3UJAJEDAgUCYncFAXcEAmN2CQCRAwIFAmJ3BQF4BAJjdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF1BAJjeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF2BAJiUAkAkQMCBQJidwUBcQQCY3kICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYksCCFdyIGxwIGFzCHF1YW50aXR5BAJiUgMFAmNuCQECYVgBBQJjcwMDBQJjcAkAAAIFAmNyBQJjcwcJAGUCCQECYVgBBQJjcwUCY3EDBQJjcAkBAmFYAQUCY3MJAGUCCQECYVgBBQJjcwUCY2oEAmJTAwUCY24JAQJhWAEFAmN0AwMFAmNwCQAAAgUCY3IFAmN0BwkAZQIJAQJhWAEFAmN0BQJjcQMFAmNwCQECYVgBBQJjdAkAZQIJAQJhWAEFAmN0BQJjbAQCYlQJAGsDBQJiUgUBYQUCY3cEAmJVCQBrAwUCYlMFAWEFAmN4BAJjegkAawMFAmNqBQFhBQJjdwQCY0EJAGsDBQJjbAUBYQUCY3gEAmNCCQEBQwIFAmN6BQFhBAJjQwkBAUMCBQJjQQUBYQQCY0QJAQJhWgIFAmNDBQJjQgQCYlYJAQFDAgUCYlQFAWEEAmJXCQEBQwIFAmJVBQFhBAJjRQMJAAACBQJjeQAABAJiWAUBZQQCY0YFAWUEAmJBCQB2BgkAuQICBQJjQgUCY0MAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFGAgUCYkEFAWIJAQFGAgUCY0IFAWEJAQFGAgUCY0MFAWEJAQJhWgIJALcCAgUCYlcFAmNDCQC3AgIFAmJWBQJjQgUCY0YEAmJYCQECYVoCBQJiVwUCYlYEAmNHCQC8AgMJAQFNAQkAuAICBQJiWAUCY0QFAWQFAmJYBAJjRgkBAUMCBQJiZgUBYgMDCQECIT0CBQJiWAUBZQkAvwICBQJjRwUCY0YHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNHAgMgPiAJAKYDAQUCY0YEAmNICQEBQwIFAmN5BQFiBAJjSQkAvAIDBQJjQgUCYlgFAWQEAmNKCQC8AgMFAmNDBQFkBQJiWAQCY0sDCQC/AgIFAmNJBQJjQwkAlAoCBQJjSgUCY0MJAJQKAgUCY0IFAmNJBAJjTAgFAmNLAl8xBAJjTQgFAmNLAl8yBAJiQQkAvAIDBQJjSAUCY00FAmJXCQCXCgUJAQFGAgUCYkEFAWIJAQFGAgUCY0wFAWEJAQFGAgUCY00FAWEFAmJYBQJjRgQCY04IBQJjRQJfMQQCY08JAGsDCAUCY0UCXzIFAmN3BQFhBAJjUAkAawMIBQJjRQJfMwUCY3gFAWEEAmJZCQEBRgIIBQJjRQJfNAUBYgQCY1EJAQFGAggFAmNFAl81BQFiAwkAZwIAAAUCY04JAAIBAgdMUCA8PSAwBAJjUgMJAQEhAQUCY28AAAUCY04EAmNTCQBlAgUCY2oFAmNPBAJjVAkAZQIFAmNsBQJjUAQCY1UDAwUCY3AJAAACBQJjcgUCY3MHCQCUCgIFAmNxAAADAwUCY3AJAAACBQJjcgUCY3QHCQCUCgIAAAUCY3EJAJQKAgUCY08FAmNQBAJjVggFAmNVAl8xBAJjVwgFAmNVAl8yBAJjWAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVEABQJiWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVICBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJiWQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAmJKBQJiRwkBAmFJCgUCY1YFAmNXBQJjUgUCYlkFAmJmBQJjUQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1MFAmNUBQNuaWwJAJ8KDQUCY04FAmNSBQJiWQUCYlIFAmJTBQJjeQUCYksFAmJQBQJjWAUCY1MFAmNUBQJjawUCY20BAmNZAQJjWgQCYncJAQJhRAAEAmRhCQCRAwIFAmJ3BQFzBAJkYgkAkQMCBQJidwUBdAQCYlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBcQQCYngJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdQQCYnkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdgQCZGMJAQJhWAEFAmRhBAJkZAkBAmFYAQUCZGIEAmJYAwkAAAIIBQJjWglvcmRlclR5cGUFA0J1eQkBAmJuBAUCYngFAmJ5CQBkAgUCZGMIBQJjWgZhbW91bnQFAmRkCQECYm4EBQJieAUCYnkJAGUCBQJkYwgFAmNaBmFtb3VudAUCZGQEAmJZCQEBRgIFAmJYBQFiAwMDCQECYUIABgkAAAIFAmJQBQFuBgkAAAIFAmJQBQFvCQACAQINQWRtaW4gYmxvY2tlZAQCZGUICAUCY1oJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkZgMJAAACBQJkZQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGUEAmRnCAgFAmNaCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkaAMJAAACBQJkZwUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGcDAwkBAiE9AgUCZGYFAmRhBgkBAiE9AgUCZGgFAmRiCQACAQIJV3IgYXNzZXRzBAJkaQgFAmNaBXByaWNlBAJjeAkAawMFAWIFAmJ5BQJieAQCZGoJAQFJAwUCZGkFAWIFAmN4BAJkawMJAAACCAUCY1oJb3JkZXJUeXBlBQNCdXkJAGcCBQJiWQUCZGoJAGcCBQJkagUCYlkGAQJkbAECZG0DCQECIT0CCQCQAwEIBQJkbQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZG4JAQV2YWx1ZQEJAJEDAggFAmRtCHBheW1lbnRzAAAEAmJICQEFdmFsdWUBCAUCZG4HYXNzZXRJZAQCY3EIBQJkbgZhbW91bnQEAmNFCQECYkYECQDYBAEIBQJkbQ10cmFuc2FjdGlvbklkCQDYBAEFAmJIBQJjcQgFAmRtBmNhbGxlcgQCY2YIBQJjRQJfMQQCY2cIBQJjRQJfMgQCYlAJAQ1wYXJzZUludFZhbHVlAQgFAmNFAl85BAJjaAgFAmNFA18xMAMDCQECYUIABgkAAAIFAmJQBQFvCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYlAJAJcKBQUCY2YFAmNnBQJjcQUCYkgFAmNoAQJkbwkCYWQBVwJkcAJkcQJiZgJjbwJjcAJjcQJjcgQCY0UJAQJjaQwFAVcFAmJmCAkBBXZhbHVlAQUCZHAGYW1vdW50CAkBBXZhbHVlAQUCZHAHYXNzZXRJZAgJAQV2YWx1ZQEFAmRxBmFtb3VudAgJAQV2YWx1ZQEFAmRxB2Fzc2V0SWQFAmFkBwUCY28FAmNwBQJjcQUCY3IEAmJQCQENcGFyc2VJbnRWYWx1ZQEIBQJjRQJfOAMDAwkBAmFCAAYJAAACBQJiUAUBbQYJAAACBQJiUAUBbwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYlAFAmNFAQJkcgAEAmF0CQCiCAEJAQFPAAMJAAECBQJhdAIGU3RyaW5nBAJkcwUCYXQJANkEAQUCZHMDCQABAgUCYXQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZHQABAJhdAkAoggBCQEBUAADCQABAgUCYXQCBlN0cmluZwQCZHMFAmF0CQDZBAEFAmRzAwkAAQIFAmF0AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmR1CQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmR2AQJkbQQCYXQJAQJkcgADCQABAgUCYXQCCkJ5dGVWZWN0b3IEAmR3BQJhdAMJAAACCAUCZG0PY2FsbGVyUHVibGljS2V5BQJkdwYFAmR1AwkAAQIFAmF0AgRVbml0AwkAAAIIBQJkbQZjYWxsZXIFBHRoaXMGBQJkdQkAAgECC01hdGNoIGVycm9yFQJkbQELY29uc3RydWN0b3IBAU4EAmR4CQECZHYBBQJkbQMJAAACBQJkeAUCZHgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU4ABQFOBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG0BCnNldE1hbmFnZXIBAmR5BAJkeAkBAmR2AQUCZG0DCQAAAgUCZHgFAmR4BAJkegkA2QQBBQJkeQMJAAACBQJkegUCZHoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAABQJkeQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRtAQ5jb25maXJtTWFuYWdlcgAEAmJFCQECZHQABAJkQQMJAQlpc0RlZmluZWQBBQJiRQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZEEFAmRBBAJkQgMJAAACCAUCZG0PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiRQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZEIFAmRCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFPAAkA2AQBCQEFdmFsdWUBBQJiRQkAzAgCCQELRGVsZXRlRW50cnkBCQEBUAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbQEDcHV0AgJkQwJkRAQCZEUJAQJhSAAEAmRGCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJkRQUBeQIKV3Igc3QgYWRkcgQCZEcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmRFBQF6AgpXciBzbCBhZGRyAwkAZgIAAAUCZEMJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRtCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmRICQECZG8JCQClCAEIBQJkbQZjYWxsZXIJANgEAQgFAmRtDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZG0IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZG0IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRtCHBheW1lbnRzAAEFAmRDBgcAAAIABAJjUggFAmRIAl8yBAJkSQgFAmRIAl83BAJjaAgFAmRIAl85BAJjUwgFAmRIA18xMAQCY1QIBQJkSANfMTEEAmJMCAUCZEgDXzEyBAJiTQgFAmRIA18xMwQCY0UJAPwHBAUCYXoCBGVtaXQJAMwIAgUCY1IFA25pbAUDbmlsAwkAAAIFAmNFBQJjRQQCZEoEAmF0BQJjRQMJAAECBQJhdAIHQWRkcmVzcwQCZEsFAmF0CQD8BwQFAmRLAgRlbWl0CQDMCAIFAmNSBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkSgUCZEoEAmRMAwkAZgIFAmNTAAAJAPwHBAUCZEcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTAUCY1MFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0DCQBmAgUCY1QAAAkA/AcEBQJkRwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJNBQJjVAUDbmlsBQNuaWwDCQAAAgUCZE0FAmRNBAJkTgMFAmREBAJkTwkA/AcEBQJkRgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZEkFAmNSBQNuaWwDCQAAAgUCZE8FAmRPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRtBmNhbGxlcgUCY1IFAmRJBQNuaWwJAM4IAgUCY2gFAmROCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRtAQlwdXRPbmVUa24FAmRQAmRRAmRSAmJmAmREBAJidwkBAmFIAAQCZEYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ3BQF5AgpXciBzdCBhZGRyBAJkRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYncFAXoCCldyIHNsIGFkZHIEAmRTCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJidwUBQQILV3IgZ3d4IGFkZHIEAmRUCQECYUQABAJiTAkAkQMCBQJkVAUBcwQCYk0JAJEDAgUCZFQFAXQEAmJOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZFQFAXUEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZFQFAXYEAmRVCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYgACAAQCYkoDCQAAAgUCZFUJAKUIAQgFAmRtBmNhbGxlcggFAmRtDG9yaWdpbkNhbGxlcggFAmRtBmNhbGxlcgMDAwMJAGcCAAAFAmJmBgkAZwIAAAUCZFAGCQBnAgAABQJkUQYJAGcCAAAFAmRSCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUCZG0IcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkbgkBBXZhbHVlAQkAkQMCCAUCZG0IcGF5bWVudHMAAAQCYkgJANgEAQkBBXZhbHVlAQgFAmRuB2Fzc2V0SWQEAmNxCAUCZG4GYW1vdW50AwkAZgIAgK3iBAUCY3EJAAIBAg1Xcm9uZyBwbXQgYW10BAJiUgkBAmFYAQUCYkwEAmJTCQECYVgBBQJiTQQCZFYDCQAAAgUCYkgFAmJMAwMJAGYCBQJjcQUCYlIGCQBmAgUCZFAFAmNxCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCYlIFAmNxBQJiUwkAZQIFAmNxBQJkUAUCZFEAAAAAAwkAAAIFAmJIBQJiTQMDCQBmAgUCY3EFAmJTBgkAZgIFAmRRBQJjcQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCYlIJAGUCBQJiUwUCY3EAAAAACQBlAgUCY3EFAmRRBQJkUAkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRXCAUCZFYCXzEEAmRYCAUCZFYCXzIEAmRZCAUCZFYCXzMEAmRaCAUCZFYCXzQEAmVhCAUCZFYCXzUEAmViCAUCZFYCXzYEAmJrCQD8BwQFAmRTAgVjYWxjRAkAzAgCCQCkAwEFAmRXCQDMCAIJAKQDAQUCZFgJAMwIAgUCYUEJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYmoJAPwHBAUCZFMCBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRXBQJkWQUCZWIJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZFgFAmVhBQJkWgkAzAgCBQJhQQkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJlYwkBAmJpAwkApwMBCQECYXMBBQJiagkApwMBCQECYXMBBQJiawUBZwMJAAACBQJlYwUCZWMEAmVkCQECZG8JCQClCAEIBQJkbQZjYWxsZXIJANgEAQgFAmRtDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJMBQJkUAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYk0FAmRRBQJiZgYGBQJjcQUCYkgEAmVlCAUCZWQCXzIEAmRJCAUCZWQCXzcEAmNoCAUCZWQCXzkEAmNTCAUCZWQDXzEwBAJjVAgFAmVkA18xMQQCZWYJAQJiYwMJALYCAQUCZWUJALYCAQUCZFIJALYCAQUCYmYEAmNSCQCgAwEIBQJlZgJfMgQCZEgJAPwHBAUCYXoCBGVtaXQJAMwIAgUCY1IFA25pbAUDbmlsAwkAAAIFAmRIBQJkSAQCZEoEAmF0BQJkSAMJAAECBQJhdAIHQWRkcmVzcwQCZEsFAmF0CQD8BwQFAmRLAgRlbWl0CQDMCAIFAmNSBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkSgUCZEoEAmRMAwkAZgIFAmNTAAAJAPwHBAUCZEcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJMBQJjUwUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQMJAGYCBQJjVAAACQD8BwQFAmRHAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiTQUCY1QFA25pbAUDbmlsAwkAAAIFAmRNBQJkTQQCZE4DBQJkRAQCZE8JAPwHBAUCZEYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRJBQJjUgUDbmlsAwkAAAIFAmRPBQJkTwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbQZjYWxsZXIFAmNSBQJkSQUDbmlsCQDOCAIFAmNoBQJkTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbQEKcHV0Rm9yRnJlZQECZWcDCQBmAgAABQJlZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkbQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJlZAkBAmRvCQkApQgBCAUCZG0GY2FsbGVyCQDYBAEIBQJkbQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRtCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRtCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkbQhwYXltZW50cwABBQJlZwcHAAACAAgFAmVkAl85AmRtAQNnZXQABAJjRQkBAmRsAQUCZG0EAmVoCAUCY0UCXzEEAmNnCAUCY0UCXzIEAmNxCAUCY0UCXzMEAmJICAUCY0UCXzQEAmNoCAUCY0UCXzUEAmVpCQD8BwQFAmF6AgRidXJuCQDMCAIFAmNxBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJIBQJjcQUDbmlsAwkAAAIFAmVpBQJlaQUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG0BCWdldE9uZVRrbgUCZWoCZWsCZWwCZW0CYmYDCQECIT0CCQCQAwEIBQJkbQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJ3CQECYUQABAJiSwkAkQMCBQJidwUBcgQCYkwJAJEDAgUCYncFAXMEAmJNCQCRAwIFAmJ3BQF0BAJiTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF1BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF2BAJiUAkAkQMCBQJidwUBcQQCZEUJAQJhSAAEAmRTCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJkRQUBQQIKV3Igc2wgYWRkcgQCZG4JAQV2YWx1ZQEJAJEDAggFAmRtCHBheW1lbnRzAAAEAmRVCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYgACAAQCYkoDCQAAAgUCZFUJAKUIAQgFAmRtBmNhbGxlcggFAmRtDG9yaWdpbkNhbGxlcggFAmRtBmNhbGxlcgQCYkcJANgEAQgFAmRtDXRyYW5zYWN0aW9uSWQEAmJICQEFdmFsdWUBCAUCZG4HYXNzZXRJZAQCY3EIBQJkbgZhbW91bnQDCQBmAgCAlOvcAwUCY3EJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJiZgYJAGYCAAAFAmVqBgkAZgIAAAUCZWwJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiSwkA2AQBBQJiSAkAAgECCFdyb25nIExQBAJjRQkBAmJGBAkA2AQBCAUCZG0NdHJhbnNhY3Rpb25JZAkA2AQBBQJiSAUCY3EIBQJkbQZjYWxsZXIEAmVuCAUCY0UCXzEEAmVvCAUCY0UCXzIEAmJSCQECYVgBBQJiTAQCYlMJAQJhWAEFAmJNBAJlcAMJAAACBQJlbQUCYkwJAJkKBwkAZQIFAmJSBQJlbgkAZQIFAmJTBQJlbwUCZWoFAmVvAAAAAAkAZAIFAmVuBQJlagMJAAACBQJlbQUCYk0JAJkKBwkAZQIFAmJSBQJlbgkAZQIFAmJTBQJlbwAAAAAFAmVqBQJlbgkAZAIFAmVvBQJlagkAAgECEHdyb25nIG91dEFzc2V0SWQEAmRXCAUCZXACXzEEAmRYCAUCZXACXzIEAmRZCAUCZXACXzMEAmRaCAUCZXACXzQEAmVhCAUCZXACXzUEAmViCAUCZXACXzYEAmVxCAUCZXACXzcDAwkAZgIAAAUCZFkGCQBmAgAABQJlYQkAAgECCldyb25nIGNhbGMEAmJrCQD8BwQFAmRTAgVjYWxjRAkAzAgCCQCkAwEFAmRXCQDMCAIJAKQDAQUCZFgJAMwIAgUCYUEJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYmoJAPwHBAUCZFMCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkVwUCZFkFAmViCQDMCAIJAKQDAQkAZQIJAGQCBQJkWAUCZFoFAmVhCQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmVjCQECYmkDCQCnAwEJAQJhcwEFAmJqCQCnAwEJAQJhcwEFAmJrBQFnAwkAAAIFAmVjBQJlYwQCZXIJAQJiYwMJALYCAQUCZXEJALYCAQUCZWwJALYCAQUCYmYDCQAAAgUCZXIFAmVyBAJlcwMJAAACBQJlbQUCYkwJAJQKAgkAoAMBCAUCZXICXzIAAAkAlAoCAAAJAKADAQgFAmVyAl8yBAJldAgFAmVzAl8xBAJldQgFAmVzAl8yBAJldgkBAmFaAgkBAUMCBQJiUwUCYk8JAQFDAgUCYlIFAmJOBAJldwkBAUYCBQJldgUBYgQCY2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYkoJAGQCBQJldAUCZXUDCQAAAgUCZW0CBVdBVkVTBQR1bml0CQDZBAEFAmVtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAgkApQgBBQJiSgUCYkcJAQJhVAYFAmV0BQJldQUCY3EFAmV3BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQAFAmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmV3BQNuaWwDCQAAAgUCY2gFAmNoBAJleAkA/AcEBQJhegIEYnVybgkAzAgCBQJjcQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiSAUCY3EFA25pbAMJAAACBQJleAUCZXgFAmNoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRtAQlnZXROb0xlc3MCAmV5AmV6BAJjRQkBAmRsAQUCZG0EAmNmCAUCY0UCXzEEAmNnCAUCY0UCXzIEAmNxCAUCY0UCXzMEAmJICAUCY0UCXzQEAmNoCAUCY0UCXzUDCQBmAgUCZXkFAmNmCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNmAgMgPCAJAKQDAQUCZXkDCQBmAgUCZXoFAmNnCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY2cCAyA8IAkApAMBBQJlegQCZUEJAPwHBAUCYXoCBGJ1cm4JAMwIAgUCY3EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYkgF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BQJjRQJfNggFAmNFAl83CQCmAwEIBQJjRQJfOAgFAmNFAl85CAUCY0UDXzEwAQJlUAECZVEABAJlUgQCYXQJAQJkcgADCQABAgUCYXQCCkJ5dGVWZWN0b3IEAmR3BQJhdAUCZHcDCQABAgUCYXQCBFVuaXQIBQJlUA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXQFAmVQAwkAAQIFAmF0AgVPcmRlcgQCY1oFAmF0BAJlUwkBAmFDAAQCZVQJAQJjWQEFAmNaBAJlVQkA9AMDCAUCY1oJYm9keUJ5dGVzCQCRAwIIBQJjWgZwcm9vZnMAAAgFAmNaD3NlbmRlclB1YmxpY0tleQQCZVYJAPQDAwgFAmNaCWJvZHlCeXRlcwkAkQMCCAUCY1oGcHJvb2ZzAAEFAmVTAwMDBQJlVAUCZVUHBQJlVgcGCQECYW8DBQJlVAUCZVUFAmVWAwkAAQIFAmF0AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZHMFAmF0BAJlVwkA9gMBCQEFdmFsdWUBCAUCZHMGc2NyaXB0BAJlWAkA2wQBCQEFdmFsdWUBCQCdCAIFAmF6CQECYW4ABAJlWQkA8QcBBQR0aGlzAwMJAAACBQJlWAUCZVcJAQIhPQIFAmVZBQJlVwcGCQD0AwMIBQJlUAlib2R5Qnl0ZXMJAJEDAggFAmVQBnByb29mcwAABQJlUgkA9AMDCAUCZVAJYm9keUJ5dGVzCQCRAwIIBQJlUAZwcm9vZnMAAAUCZVIHGPNq", "chainId": 84, "height": 2219866, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: DAembCnE6xmE1v8XNu43Hu2AnaBo4bj54kFRHDJpUkx7 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 1000000
5+
6+let b = 100000000
7+
8+let c = toBigInt(100000000)
9+
10+let d = toBigInt(1000000000000000000)
11+
12+let e = toBigInt(0)
13+
14+let f = toBigInt(1)
15+
16+let g = toBigInt((b - ((b * 1) / b)))
17+
18+let h = "100"
19+
20+let i = "1"
21+
22+let j = "__"
23+
24+let k = ""
25+
26+let l = 1
27+
28+let m = 2
29+
30+let n = 3
31+
32+let o = 4
33+
34+let p = 1
35+
36+let q = 2
37+
38+let r = 3
39+
40+let s = 4
41+
42+let t = 5
43+
44+let u = 6
45+
46+let v = 7
47+
48+let w = 8
49+
50+let x = 9
51+
52+let y = 1
53+
54+let z = 7
55+
56+let A = 10
57+
58+let B = "%s__delay"
59+
60+func C (D,E) = fraction(toBigInt(D), d, toBigInt(E))
61+
62+
63+func F (G,H) = toInt(fraction(G, toBigInt(H), d))
64+
65+
66+func I (J,K,L) = fraction(J, K, L)
67+
68+
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
72+
73+
74+func N () = "%s__factoryContract"
75+
76+
77+func O () = "%s__managerPublicKey"
78+
79+
80+func P () = "%s__pendingManagerPublicKey"
81+
82+
83+func Q () = "%s%s__price__last"
84+
85+
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
87+
88+
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
90+
91+
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
93+
94+
95+func Y () = "%s__amountAsset"
96+
97+
98+func Z () = "%s__priceAsset"
99+
100+
101+func aa () = "%s__amp"
102+
103+
104+func ab () = "%s__addonAddr"
105+
106+
107+func ac (ad) = makeString(["%s%s__lastGetOneTknCall", ad], j)
108+
109+
110+func ae (ad) = makeString(["%s%s__lastPutOneTknCall", ad], j)
111+
112+
113+func af () = "%s__factoryConfig"
114+
115+
116+func ag () = "%s%s__matcher__publicKey"
117+
118+
119+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
120+
121+
122+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
123+
124+
125+func am () = "%s__shutdown"
126+
127+
128+func an () = "%s__allowedLpStableScriptHash"
129+
130+
131+func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
132+
133+
134+func as (G) = {
135+ let at = G
136+ if ($isInstanceOf(at, "String"))
137+ then {
138+ let au = at
139+ au
140+ }
141+ else throw("fail cast to String")
142+ }
143+
144+
145+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146+
147+
148+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
149+
150+
151+let az = addressFromStringValue(av(this, N()))
152+
153+let aA = av(this, aa())
154+
155+func aB () = valueOrElse(getBoolean(az, am()), false)
156+
157+
158+func aC () = fromBase58String(av(az, ag()))
159+
160+
161+func aD () = {
162+ let aE = av(this, Y())
163+ let aF = av(this, Z())
164+ let aG = ay(az, ak(aF))
165+ let ai = ay(az, ak(aE))
166+ split(av(az, ah(toString(ai), toString(aG))), j)
167+ }
168+
169+
170+func aH () = split(av(az, af()), j)
171+
172+
173+func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
174+
175+
176+func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
177+
178+
179+func aX (aY) = if ((aY == "WAVES"))
180+ then wavesBalance(this).available
181+ else assetBalance(this, fromBase58String(aY))
182+
183+
184+func aZ (ba,bb) = fraction(ba, d, bb)
185+
186+
187+func bc (bd,be,bf) = {
188+ let bg = fraction((bd - be), c, be)
189+ let bh = ((bf - M(bg)) > e)
190+ if (!(bh))
191+ then throw(("Big slpg: " + toString(bg)))
192+ else $Tuple2(bh, min([bd, be]))
193+ }
194+
195+
196+func bi (bj,bk,bl) = {
197+ let bg = fraction(bk, c, bj)
198+ let bm = (bl > bg)
199+ if (if (bm)
200+ then true
201+ else (bk > bj))
202+ then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203+ else bm
204+ }
205+
206+
207+func bn (bo,bp,bq,br) = {
208+ let bs = C(bq, bo)
209+ let bt = C(br, bp)
210+ aZ(bt, bs)
211+ }
212+
213+
214+func bu (bq,br,bv) = {
215+ let bw = aD()
216+ let bx = parseIntValue(bw[u])
217+ let by = parseIntValue(bw[v])
218+ let bz = bn(bx, by, bq, br)
219+ let bb = C(bq, bx)
220+ let ba = C(br, by)
221+ let bA = C(bv, b)
222+ let bB = aZ(bb, bA)
223+ let bC = aZ(ba, bA)
224+[bz, bB, bC]
225+ }
226+
227+
228+func bD (bq,br,bv) = {
229+ let bE = bu(bq, br, bv)
230+[F(bE[0], b), F(bE[1], b), F(bE[2], b)]
231+ }
232+
233+
234+func bF (bG,bH,bI,bJ) = {
235+ let bw = aD()
236+ let bK = bw[r]
237+ let bL = bw[s]
238+ let bM = bw[t]
239+ let bN = parseIntValue(bw[u])
240+ let bO = parseIntValue(bw[v])
241+ let bP = bw[q]
242+ let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243+ if ((bK != bH))
244+ then throw("Wrong pmt asset")
245+ else {
246+ let bR = aX(bL)
247+ let bS = aX(bM)
248+ let bT = fraction(bR, a, bN)
249+ let bU = fraction(bS, a, bO)
250+ let bV = C(bT, a)
251+ let bW = C(bU, a)
252+ let bX = aZ(bW, bV)
253+ let bY = F(bX, b)
254+ let bZ = C(bI, b)
255+ let ca = C(bQ, b)
256+ let cb = fraction(bV, bZ, ca)
257+ let cc = fraction(bW, bZ, ca)
258+ let cd = F(cb, a)
259+ let ce = F(cc, a)
260+ let cf = fraction(cd, bN, a)
261+ let cg = fraction(ce, bO, a)
262+ let ch = if ((bG == ""))
263+ then nil
264+ else [ScriptTransfer(bJ, cf, if ((bL == "WAVES"))
265+ then unit
266+ else fromBase58String(bL)), ScriptTransfer(bJ, cg, if ((bM == "WAVES"))
267+ then unit
268+ else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cf, cg, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
269+ $Tuple10(cf, cg, bL, bM, bR, bS, bQ, bX, bP, ch)
270+ }
271+ }
272+
273+
274+func ci (bG,bf,cj,ck,cl,cm,bJ,cn,co,cp,cq,cr) = {
275+ let bw = aD()
276+ let bK = fromBase58String(bw[r])
277+ let cs = bw[s]
278+ let ct = bw[t]
279+ let cu = bw[w]
280+ let cv = bw[x]
281+ let cw = parseIntValue(bw[u])
282+ let cx = parseIntValue(bw[v])
283+ let bP = bw[q]
284+ let cy = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
285+ let bR = if (cn)
286+ then aX(cs)
287+ else if (if (cp)
288+ then (cr == cs)
289+ else false)
290+ then (aX(cs) - cq)
291+ else if (cp)
292+ then aX(cs)
293+ else (aX(cs) - cj)
294+ let bS = if (cn)
295+ then aX(ct)
296+ else if (if (cp)
297+ then (cr == ct)
298+ else false)
299+ then (aX(ct) - cq)
300+ else if (cp)
301+ then aX(ct)
302+ else (aX(ct) - cl)
303+ let bT = fraction(bR, a, cw)
304+ let bU = fraction(bS, a, cx)
305+ let cz = fraction(cj, a, cw)
306+ let cA = fraction(cl, a, cx)
307+ let cB = C(cz, a)
308+ let cC = C(cA, a)
309+ let cD = aZ(cC, cB)
310+ let bV = C(bT, a)
311+ let bW = C(bU, a)
312+ let cE = if ((cy == 0))
313+ then {
314+ let bX = e
315+ let cF = e
316+ let bA = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
317+ $Tuple5(F(bA, b), F(cB, a), F(cC, a), aZ((bW + cC), (bV + cB)), cF)
318+ }
319+ else {
320+ let bX = aZ(bW, bV)
321+ let cG = fraction(M((bX - cD)), d, bX)
322+ let cF = C(bf, b)
323+ if (if ((bX != e))
324+ then (cG > cF)
325+ else false)
326+ then throw(((("Price slippage " + toString(cG)) + " > ") + toString(cF)))
327+ else {
328+ let cH = C(cy, b)
329+ let cI = fraction(cB, bX, d)
330+ let cJ = fraction(cC, d, bX)
331+ let cK = if ((cI > cC))
332+ then $Tuple2(cJ, cC)
333+ else $Tuple2(cB, cI)
334+ let cL = cK._1
335+ let cM = cK._2
336+ let bA = fraction(cH, cM, bW)
337+ $Tuple5(F(bA, b), F(cL, a), F(cM, a), bX, cF)
338+ }
339+ }
340+ let cN = cE._1
341+ let cO = fraction(cE._2, cw, a)
342+ let cP = fraction(cE._3, cx, a)
343+ let bY = F(cE._4, b)
344+ let cQ = F(cE._5, b)
345+ if ((0 >= cN))
346+ then throw("LP <= 0")
347+ else {
348+ let cR = if (!(co))
349+ then 0
350+ else cN
351+ let cS = (cj - cO)
352+ let cT = (cl - cP)
353+ let cU = if (if (cp)
354+ then (cr == cs)
355+ else false)
356+ then $Tuple2(cq, 0)
357+ else if (if (cp)
358+ then (cr == ct)
359+ else false)
360+ then $Tuple2(0, cq)
361+ else $Tuple2(cO, cP)
362+ let cV = cU._1
363+ let cW = cU._2
364+ let cX = [IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY), StringEntry(U(bJ, bG), aI(cV, cW, cR, bY, bf, cQ, height, lastBlock.timestamp, cS, cT))]
365+ $Tuple13(cN, cR, bY, bR, bS, cy, bK, bP, cX, cS, cT, ck, cm)
366+ }
367+ }
368+
369+
370+func cY (cZ) = {
371+ let bw = aD()
372+ let da = bw[s]
373+ let db = bw[t]
374+ let bP = parseIntValue(bw[q])
375+ let bx = parseIntValue(bw[u])
376+ let by = parseIntValue(bw[v])
377+ let dc = aX(da)
378+ let dd = aX(db)
379+ let bX = if ((cZ.orderType == Buy))
380+ then bn(bx, by, (dc + cZ.amount), dd)
381+ else bn(bx, by, (dc - cZ.amount), dd)
382+ let bY = F(bX, b)
383+ if (if (if (aB())
384+ then true
385+ else (bP == n))
386+ then true
387+ else (bP == o))
388+ then throw("Admin blocked")
389+ else {
390+ let de = cZ.assetPair.amountAsset
391+ let df = if ((de == unit))
392+ then "WAVES"
393+ else toBase58String(value(de))
394+ let dg = cZ.assetPair.priceAsset
395+ let dh = if ((dg == unit))
396+ then "WAVES"
397+ else toBase58String(value(dg))
398+ if (if ((df != da))
399+ then true
400+ else (dh != db))
401+ then throw("Wr assets")
402+ else {
403+ let di = cZ.price
404+ let cx = fraction(b, by, bx)
405+ let dj = I(di, b, cx)
406+ let dk = if ((cZ.orderType == Buy))
407+ then (bY >= dj)
408+ else (dj >= bY)
409+ true
410+ }
411+ }
412+ }
413+
414+
415+func dl (dm) = if ((size(dm.payments) != 1))
416+ then throw("1 pmnt exp")
417+ else {
418+ let dn = value(dm.payments[0])
419+ let bH = value(dn.assetId)
420+ let cq = dn.amount
421+ let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
422+ let cf = cE._1
423+ let cg = cE._2
424+ let bP = parseIntValue(cE._9)
425+ let ch = cE._10
426+ if (if (aB())
427+ then true
428+ else (bP == o))
429+ then throw(("Admin blocked: " + toString(bP)))
430+ else $Tuple5(cf, cg, cq, bH, ch)
431+ }
432+
433+
434+func do (ad,W,dp,dq,bf,co,cp,cq,cr) = {
435+ let cE = ci(W, bf, value(dp).amount, value(dp).assetId, value(dq).amount, value(dq).assetId, ad, false, co, cp, cq, cr)
436+ let bP = parseIntValue(cE._8)
437+ if (if (if (aB())
438+ then true
439+ else (bP == m))
440+ then true
441+ else (bP == o))
442+ then throw(("Blocked:" + toString(bP)))
443+ else cE
444+ }
445+
446+
447+func dr () = {
448+ let at = getString(O())
449+ if ($isInstanceOf(at, "String"))
450+ then {
451+ let ds = at
452+ fromBase58String(ds)
453+ }
454+ else if ($isInstanceOf(at, "Unit"))
455+ then unit
456+ else throw("Match error")
457+ }
458+
459+
460+func dt () = {
461+ let at = getString(P())
462+ if ($isInstanceOf(at, "String"))
463+ then {
464+ let ds = at
465+ fromBase58String(ds)
466+ }
467+ else if ($isInstanceOf(at, "Unit"))
468+ then unit
469+ else throw("Match error")
470+ }
471+
472+
473+let du = throw("Permission denied")
474+
475+func dv (dm) = {
476+ let at = dr()
477+ if ($isInstanceOf(at, "ByteVector"))
478+ then {
479+ let dw = at
480+ if ((dm.callerPublicKey == dw))
481+ then true
482+ else du
483+ }
484+ else if ($isInstanceOf(at, "Unit"))
485+ then if ((dm.caller == this))
486+ then true
487+ else du
488+ else throw("Match error")
489+ }
490+
491+
492+@Callable(dm)
493+func constructor (N) = {
494+ let dx = dv(dm)
495+ if ((dx == dx))
496+ then [StringEntry(N(), N)]
497+ else throw("Strict value is not equal to itself.")
498+ }
499+
500+
501+
502+@Callable(dm)
503+func setManager (dy) = {
504+ let dx = dv(dm)
505+ if ((dx == dx))
506+ then {
507+ let dz = fromBase58String(dy)
508+ if ((dz == dz))
509+ then [StringEntry(P(), dy)]
510+ else throw("Strict value is not equal to itself.")
511+ }
512+ else throw("Strict value is not equal to itself.")
513+ }
514+
515+
516+
517+@Callable(dm)
518+func confirmManager () = {
519+ let bE = dt()
520+ let dA = if (isDefined(bE))
521+ then true
522+ else throw("No pending manager")
523+ if ((dA == dA))
524+ then {
525+ let dB = if ((dm.callerPublicKey == value(bE)))
526+ then true
527+ else throw("You are not pending manager")
528+ if ((dB == dB))
529+ then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
530+ else throw("Strict value is not equal to itself.")
531+ }
532+ else throw("Strict value is not equal to itself.")
533+ }
534+
535+
536+
537+@Callable(dm)
538+func put (dC,dD) = {
539+ let dE = aH()
540+ let dF = valueOrErrorMessage(addressFromString(dE[y]), "Wr st addr")
541+ let dG = valueOrErrorMessage(addressFromString(dE[z]), "Wr sl addr")
542+ if ((0 > dC))
543+ then throw("Wrong slippage")
544+ else if ((size(dm.payments) != 2))
545+ then throw("2 pmnts expd")
546+ else {
547+ let dH = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], dC, true, false, 0, "")
548+ let cR = dH._2
549+ let dI = dH._7
550+ let ch = dH._9
551+ let cS = dH._10
552+ let cT = dH._11
553+ let bL = dH._12
554+ let bM = dH._13
555+ let cE = invoke(az, "emit", [cR], nil)
556+ if ((cE == cE))
557+ then {
558+ let dJ = {
559+ let at = cE
560+ if ($isInstanceOf(at, "Address"))
561+ then {
562+ let dK = at
563+ invoke(dK, "emit", [cR], nil)
564+ }
565+ else unit
566+ }
567+ if ((dJ == dJ))
568+ then {
569+ let dL = if ((cS > 0))
570+ then invoke(dG, "put", nil, [AttachedPayment(bL, cS)])
571+ else nil
572+ if ((dL == dL))
573+ then {
574+ let dM = if ((cT > 0))
575+ then invoke(dG, "put", nil, [AttachedPayment(bM, cT)])
576+ else nil
577+ if ((dM == dM))
578+ then {
579+ let dN = if (dD)
580+ then {
581+ let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
582+ if ((dO == dO))
583+ then nil
584+ else throw("Strict value is not equal to itself.")
585+ }
586+ else [ScriptTransfer(dm.caller, cR, dI)]
587+ (ch ++ dN)
588+ }
589+ else throw("Strict value is not equal to itself.")
590+ }
591+ else throw("Strict value is not equal to itself.")
592+ }
593+ else throw("Strict value is not equal to itself.")
594+ }
595+ else throw("Strict value is not equal to itself.")
596+ }
597+ }
598+
599+
600+
601+@Callable(dm)
602+func putOneTkn (dP,dQ,dR,bf,dD) = {
603+ let bw = aH()
604+ let dF = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
605+ let dG = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
606+ let dS = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
607+ let dT = aD()
608+ let bL = dT[s]
609+ let bM = dT[t]
610+ let bN = parseIntValue(dT[u])
611+ let bO = parseIntValue(dT[v])
612+ let dU = valueOrElse(getString(this, ab()), "")
613+ let bJ = if ((dU == toString(dm.caller)))
614+ then dm.originCaller
615+ else dm.caller
616+ if (if (if (if ((0 >= bf))
617+ then true
618+ else (0 >= dP))
619+ then true
620+ else (0 >= dQ))
621+ then true
622+ else (0 >= dR))
623+ then throw("Wrong params")
624+ else if ((size(dm.payments) != 1))
625+ then throw("1 pmnt expd")
626+ else {
627+ let dn = value(dm.payments[0])
628+ let bH = toBase58String(value(dn.assetId))
629+ let cq = dn.amount
630+ if ((10000000 > cq))
631+ then throw("Wrong pmt amt")
632+ else {
633+ let bR = aX(bL)
634+ let bS = aX(bM)
635+ let dV = if ((bH == bL))
636+ then if (if ((cq > bR))
637+ then true
638+ else (dP > cq))
639+ then throw("invalid payment amount")
640+ else $Tuple6((bR - cq), bS, (cq - dP), dQ, 0, 0)
641+ else if ((bH == bM))
642+ then if (if ((cq > bS))
643+ then true
644+ else (dQ > cq))
645+ then throw("invalid payment amount")
646+ else $Tuple6(bR, (bS - cq), 0, 0, (cq - dQ), dP)
647+ else throw("wrong pmtAssetId")
648+ let dW = dV._1
649+ let dX = dV._2
650+ let dY = dV._3
651+ let dZ = dV._4
652+ let ea = dV._5
653+ let eb = dV._6
654+ let bk = invoke(dS, "calcD", [toString(dW), toString(dX), aA, h, i], nil)
655+ let bj = invoke(dS, "calcD", [toString(toBigInt(((dW + dY) - eb))), toString(toBigInt(((dX + ea) - dZ))), aA, h, i], nil)
656+ let ec = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
657+ if ((ec == ec))
658+ then {
659+ let ed = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
660+ let ee = ed._2
661+ let dI = ed._7
662+ let ch = ed._9
663+ let cS = ed._10
664+ let cT = ed._11
665+ let ef = bc(toBigInt(ee), toBigInt(dR), toBigInt(bf))
666+ let cR = toInt(ef._2)
667+ let dH = invoke(az, "emit", [cR], nil)
668+ if ((dH == dH))
669+ then {
670+ let dJ = {
671+ let at = dH
672+ if ($isInstanceOf(at, "Address"))
673+ then {
674+ let dK = at
675+ invoke(dK, "emit", [cR], nil)
676+ }
677+ else unit
678+ }
679+ if ((dJ == dJ))
680+ then {
681+ let dL = if ((cS > 0))
682+ then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bL), cS)])
683+ else nil
684+ if ((dL == dL))
685+ then {
686+ let dM = if ((cT > 0))
687+ then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bM), cT)])
688+ else nil
689+ if ((dM == dM))
690+ then {
691+ let dN = if (dD)
692+ then {
693+ let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
694+ if ((dO == dO))
695+ then nil
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else [ScriptTransfer(dm.caller, cR, dI)]
699+ (ch ++ dN)
700+ }
701+ else throw("Strict value is not equal to itself.")
702+ }
703+ else throw("Strict value is not equal to itself.")
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+ else throw("Strict value is not equal to itself.")
708+ }
709+ else throw("Strict value is not equal to itself.")
710+ }
711+ }
712+ }
713+
714+
715+
716+@Callable(dm)
717+func putForFree (eg) = if ((0 > eg))
718+ then throw("Wrong slpg")
719+ else if ((size(dm.payments) != 2))
720+ then throw("2 pmnts expd")
721+ else {
722+ let ed = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], eg, false, false, 0, "")
723+ ed._9
724+ }
725+
726+
727+
728+@Callable(dm)
729+func get () = {
730+ let cE = dl(dm)
731+ let eh = cE._1
732+ let cg = cE._2
733+ let cq = cE._3
734+ let bH = cE._4
735+ let ch = cE._5
736+ let ei = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
737+ if ((ei == ei))
738+ then ch
739+ else throw("Strict value is not equal to itself.")
740+ }
741+
742+
743+
744+@Callable(dm)
745+func getOneTkn (ej,ek,el,em,bf) = if ((size(dm.payments) != 1))
746+ then throw("1 pmnt expd")
747+ else {
748+ let bw = aD()
749+ let bK = bw[r]
750+ let bL = bw[s]
751+ let bM = bw[t]
752+ let bN = parseIntValue(bw[u])
753+ let bO = parseIntValue(bw[v])
754+ let bP = bw[q]
755+ let dE = aH()
756+ let dS = valueOrErrorMessage(addressFromString(dE[A]), "Wr sl addr")
757+ let dn = value(dm.payments[0])
758+ let dU = valueOrElse(getString(this, ab()), "")
759+ let bJ = if ((dU == toString(dm.caller)))
760+ then dm.originCaller
761+ else dm.caller
762+ let bG = toBase58String(dm.transactionId)
763+ let bH = value(dn.assetId)
764+ let cq = dn.amount
765+ if ((1000000000 > cq))
766+ then throw("Min pmt 10 LP")
767+ else if (if (if ((0 > bf))
768+ then true
769+ else (0 > ej))
770+ then true
771+ else (0 > el))
772+ then throw("Wrong params")
773+ else if ((bK != toBase58String(bH)))
774+ then throw("Wrong LP")
775+ else {
776+ let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
777+ let en = cE._1
778+ let eo = cE._2
779+ let bR = aX(bL)
780+ let bS = aX(bM)
781+ let ep = if ((em == bL))
782+ then $Tuple7((bR - en), (bS - eo), ej, eo, 0, 0, (en + ej))
783+ else if ((em == bM))
784+ then $Tuple7((bR - en), (bS - eo), 0, 0, ej, en, (eo + ej))
785+ else throw("wrong outAssetId")
786+ let dW = ep._1
787+ let dX = ep._2
788+ let dY = ep._3
789+ let dZ = ep._4
790+ let ea = ep._5
791+ let eb = ep._6
792+ let eq = ep._7
793+ if (if ((0 > dY))
794+ then true
795+ else (0 > ea))
796+ then throw("Wrong calc")
797+ else {
798+ let bk = invoke(dS, "calcD", [toString(dW), toString(dX), aA, h, i], nil)
799+ let bj = invoke(dS, "calcD", [toString(((dW - dY) + eb)), toString(((dX + dZ) - ea)), aA, h, i], nil)
800+ let ec = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
801+ if ((ec == ec))
802+ then {
803+ let er = bc(toBigInt(eq), toBigInt(el), toBigInt(bf))
804+ if ((er == er))
805+ then {
806+ let es = if ((em == bL))
807+ then $Tuple2(toInt(er._2), 0)
808+ else $Tuple2(0, toInt(er._2))
809+ let et = es._1
810+ let eu = es._2
811+ let ev = aZ(C(bS, bO), C(bR, bN))
812+ let ew = F(ev, b)
813+ let ch = [ScriptTransfer(bJ, (et + eu), if ((em == "WAVES"))
814+ then unit
815+ else fromBase58String(em)), StringEntry(X(toString(bJ), bG), aT(et, eu, cq, ew, height, lastBlock.timestamp)), IntegerEntry(Q(), ew), IntegerEntry(R(height, lastBlock.timestamp), ew)]
816+ if ((ch == ch))
817+ then {
818+ let ex = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
819+ if ((ex == ex))
820+ then ch
821+ else throw("Strict value is not equal to itself.")
822+ }
823+ else throw("Strict value is not equal to itself.")
824+ }
825+ else throw("Strict value is not equal to itself.")
826+ }
827+ else throw("Strict value is not equal to itself.")
828+ }
829+ }
830+ }
831+
832+
833+
834+@Callable(dm)
835+func getNoLess (ey,ez) = {
836+ let cE = dl(dm)
837+ let cf = cE._1
838+ let cg = cE._2
839+ let cq = cE._3
840+ let bH = cE._4
841+ let ch = cE._5
842+ if ((ey > cf))
843+ then throw(((("Failed: " + toString(cf)) + " < ") + toString(ey)))
844+ else if ((ez > cg))
845+ then throw(((("Failed: " + toString(cg)) + " < ") + toString(ez)))
846+ else {
847+ let eA = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
848+ if ((eA == eA))
849+ then ch
850+ else throw("Strict value is not equal to itself.")
851+ }
852+ }
853+
854+
855+
856+@Callable(dm)
857+func unstakeAndGet (eB) = {
858+ let eC = if ((size(dm.payments) != 0))
859+ then throw("No pmnts expd")
860+ else true
861+ if ((eC == eC))
862+ then {
863+ let bw = aD()
864+ let eD = aH()
865+ let dI = fromBase58String(bw[r])
866+ let eE = valueOrErrorMessage(addressFromString(eD[y]), "Wr st addr")
867+ let eF = invoke(eE, "unstake", [toBase58String(dI), eB], nil)
868+ if ((eF == eF))
869+ then {
870+ let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eB, dm.caller)
871+ let bP = parseIntValue(cE._9)
872+ let ch = cE._10
873+ let eG = if (if (aB())
874+ then true
875+ else (bP == o))
876+ then throw(("Blocked: " + toString(bP)))
877+ else true
878+ if ((eG == eG))
879+ then {
880+ let eH = invoke(az, "burn", [eB], [AttachedPayment(dI, eB)])
881+ if ((eH == eH))
882+ then ch
883+ else throw("Strict value is not equal to itself.")
884+ }
885+ else throw("Strict value is not equal to itself.")
886+ }
887+ else throw("Strict value is not equal to itself.")
888+ }
889+ else throw("Strict value is not equal to itself.")
890+ }
891+
892+
893+
894+@Callable(dm)
895+func activate (eI,eJ) = if ((toString(dm.caller) != toString(az)))
896+ then throw("denied")
897+ else $Tuple2([StringEntry(Y(), eI), StringEntry(Z(), eJ)], "success")
898+
899+
900+
901+@Callable(dm)
902+func setS (eK,eG) = if ((toString(dm.caller) != av(this, ab())))
903+ then du
904+ else [StringEntry(eK, eG)]
905+
906+
907+
908+@Callable(dm)
909+func setI (eK,eG) = if ((toString(dm.caller) != av(this, ab())))
910+ then du
911+ else [IntegerEntry(eK, eG)]
912+
913+
914+
915+@Callable(dm)
916+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
917+
918+
919+
920+@Callable(dm)
921+func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
922+
923+
924+
925+@Callable(dm)
926+func calcPricesWrapperREADONLY (bq,br,bv) = {
927+ let eL = bu(bq, br, bv)
928+ $Tuple2(nil, [toString(eL[0]), toString(eL[1]), toString(eL[2])])
929+ }
930+
931+
932+
933+@Callable(dm)
934+func fromX18WrapperREADONLY (G,eM) = $Tuple2(nil, F(parseBigIntValue(G), eM))
935+
936+
937+
938+@Callable(dm)
939+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
940+
941+
942+
943+@Callable(dm)
944+func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
945+
946+
947+
948+@Callable(dm)
949+func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eN,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eN, cn, co, false, 0, ""))
950+
951+
952+
953+@Callable(dm)
954+func estimateGetOperationWrapperREADONLY (bG,eO,bI,eN) = {
955+ let cE = bF(bG, eO, bI, addressFromStringValue(eN))
956+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
957+ }
958+
959+
960+@Verifier(eP)
961+func eQ () = {
962+ let eR = {
963+ let at = dr()
964+ if ($isInstanceOf(at, "ByteVector"))
965+ then {
966+ let dw = at
967+ dw
968+ }
969+ else if ($isInstanceOf(at, "Unit"))
970+ then eP.senderPublicKey
971+ else throw("Match error")
972+ }
973+ let at = eP
974+ if ($isInstanceOf(at, "Order"))
975+ then {
976+ let cZ = at
977+ let eS = aC()
978+ let eT = cY(cZ)
979+ let eU = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
980+ let eV = sigVerify(cZ.bodyBytes, cZ.proofs[1], eS)
981+ if (if (if (eT)
982+ then eU
983+ else false)
984+ then eV
985+ else false)
986+ then true
987+ else ao(eT, eU, eV)
988+ }
989+ else if ($isInstanceOf(at, "SetScriptTransaction"))
990+ then {
991+ let ds = at
992+ let eW = blake2b256(value(ds.script))
993+ let eX = fromBase64String(value(getString(az, an())))
994+ let eY = scriptHash(this)
995+ if (if ((eX == eW))
996+ then (eY != eW)
997+ else false)
998+ then true
999+ else sigVerify(eP.bodyBytes, eP.proofs[0], eR)
1000+ }
1001+ else sigVerify(eP.bodyBytes, eP.proofs[0], eR)
1002+ }
1003+

github/deemru/w8io/169f3d6 
44.71 ms