avantis-trader-sdk 0.6.0__py3-none-any.whl → 0.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"acceptCodeOwnership","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"codeOwners","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"codes","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getTraderReferralInfo","inputs":[{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"govSetCodeOwner","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_newAccount","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isHandler","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingCodeOwners","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"referrerTiers","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerCode","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestedGov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHandler","inputs":[{"name":"_handler","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPendingCodeOwnershipTransfer","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_newAccount","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setReferrerTier","inputs":[{"name":"_referrer","type":"address","internalType":"address"},{"name":"_tierId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTier","inputs":[{"name":"_tierId","type":"uint256","internalType":"uint256"},{"name":"_feeDiscountPct","type":"uint256","internalType":"uint256"},{"name":"_refRebatePct","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderReferralCode","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderReferralCodeByUser","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tiers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"feeDiscountPct","type":"uint256","internalType":"uint256"},{"name":"refRebatePct","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"traderReferralCodes","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"traderReferralDiscount","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"traderFeesPostDiscount","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"},{"name":"rebateShare","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"GovSetCodeOwner","inputs":[{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newAccount","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RegisterCode","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetCodeOwner","inputs":[{"name":"oldOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetGov","inputs":[{"name":"gov","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetHandler","inputs":[{"name":"handler","type":"address","indexed":false,"internalType":"address"},{"name":"isActive","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetPendingCodeOwner","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"newAccount","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetReferrerDiscountShare","inputs":[{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"discountShare","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetReferrerTier","inputs":[{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"tierId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetTier","inputs":[{"name":"tierId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeDiscountPct","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"refRebatePct","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetTraderReferralCode","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610fa2806100326000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063836a0187116100b8578063ce18b98d1161007c578063ce18b98d14610347578063cfad57a21461037d578063dfcfa25014610390578063e1e01bf3146103a3578063fcccd11d146103b6578063fdb41ed3146103df57600080fd5b8063836a0187146102b857806385725b58146102cb5780639cb7de4b146102eb578063b35569dd146102fe578063c8b3c4601461031e57600080fd5b806346ea87af1161010a57806346ea87af1461020957806350bb25781461023c578063534ef8831461024f57806356b4b2ad1461027f57806366ac654d146102925780636b364489146102a557600080fd5b8063039af9eb1461014757806312d43a51146101885780631582a018146101b357806336def2c8146101e15780633fb8b323146101f6575b600080fd5b61016e610155366004610df0565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b60005461019b906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b6101d36101c1366004610d68565b60026020526000908152604090205481565b60405190815260200161017f565b6101f46101ef366004610df0565b6103f2565b005b6101f4610204366004610dc6565b610572565b61022c610217366004610d68565b60046020526000908152604090205460ff1681565b604051901515815260200161017f565b6101f461024a366004610d68565b6105f5565b61026261025d366004610d68565b610654565b604080519283526001600160a01b0390911660208301520161017f565b6101f461028d366004610dc6565b61069a565b60015461019b906001600160a01b031681565b6101f46102b3366004610df0565b6106d7565b6101f46102c6366004610e35565b610814565b6101d36102d9366004610d68565b60086020526000908152604090205481565b6101f46102f9366004610d8a565b610979565b6101d361030c366004610d68565b60076020526000908152604090205481565b61019b61032c366004610df0565b6005602052600090815260409020546001600160a01b031681565b61035a610355366004610dc6565b6109ff565b604080519384526001600160a01b0390921660208401529082015260600161017f565b6101f461038b366004610d68565b610a93565b6101f461039e366004610e09565b610b38565b6101f46103b1366004610df0565b610c33565b61019b6103c4366004610df0565b6006602052600090815260409020546001600160a01b031681565b6101f46103ed366004610e09565b610c40565b806104185760405162461bcd60e51b815260040161040f90610e98565b60405180910390fd5b6000818152600560205260409020546001600160a01b0316156104895760405162461bcd60e51b8152602060048201526024808201527f526566657272616c53746f726167653a20636f646520616c72656164792065786044820152636973747360e01b606482015260840161040f565b33600090815260076020526040902054156104fb5760405162461bcd60e51b815260206004820152602c60248201527f526566657272616c53746f726167653a20726566657272657220616c7265616460448201526b1e481c9959da5cdd195c995960a21b606482015260840161040f565b600081815260056020908152604080832080546001600160a01b031916339081179091558084526007835281842085905560028352928190206001905580519283529082018390527f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d802991015b60405180910390a150565b6000546001600160a01b0316331461059c5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038216600081815260026020908152604091829020849055815192835282018390527f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc91015b60405180910390a15050565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b03811661063257600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260086020526040812054819081811561069057506000818152600560205260409020546001600160a01b03165b9094909350915050565b3360009081526004602052604090205460ff166106c95760405162461bcd60e51b815260040161040f90610e61565b6106d38282610cfb565b5050565b6000818152600560209081526040808320546006909252909120546001600160a01b039182169116331461071d5760405162461bcd60e51b815260040161040f90610e61565b33600081815260076020908152604080832080548452600580845282852080546001600160a01b031990811690915582548652600685528386208054821690558886529084528285208054909116861790558690556001600160a01b038516808452600283528184205485855293829020939093558051928352908201929092529081018390527f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979060600160405180910390a16001600160a01b031660008181526007602090815260408083208390559382526006815283822080546001600160a01b0319169055918152600290915290812055565b6000546001600160a01b0316331461083e5760405162461bcd60e51b815260040161040f90610ecf565b61271082111561089c5760405162461bcd60e51b8152602060048201526024808201527f526566657272616c53746f726167653a20696e76616c696420746f74616c52656044820152636261746560e01b606482015260840161040f565b6127108111156108fd5760405162461bcd60e51b815260206004820152602660248201527f526566657272616c53746f726167653a20696e76616c696420646973636f756e60448201526574536861726560d01b606482015260840161040f565b600083815260036020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052918201839052907f4ebd23a492b2bd79586cb57cae40d7793408265f20320f68b478b971e696f4c79060600160405180910390a150505050565b6000546001600160a01b031633146109a35760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e91016105e9565b6000806000610a0d85610654565b6001600160a01b038116600090815260026020908152604080832054808452600390925290912054919450915061271090610a489087610f20565b610a529190610efe565b610a5c9086610f3f565b60008281526003602052604090206001015490945061271090610a7f9086610f20565b610a899190610efe565b9150509250925092565b6000546001600160a01b03163314610abd5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038116610ad057600080fd5b6001546001600160a01b03828116911614610aea57600080fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f91a8c1cc2d4a3bb60738481947a00cbb9899c822916694cf8bb1d68172fdcd5490602001610567565b6000546001600160a01b03163314610b625760405162461bcd60e51b815260040161040f90610ecf565b81610b7f5760405162461bcd60e51b815260040161040f90610e98565b600082815260056020818152604080842080546001600160a01b03908116808752600785528387208790559087168087528387208054885295855283872080546001600160a01b0319908116909155835416811790925593879055838552600283528185208054828752838720558486529490945580518681529182019390935290917f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e9791015b60405180910390a1505050565b610c3d3382610cfb565b50565b81610c5d5760405162461bcd60e51b815260040161040f90610e98565b6000828152600560205260409020546001600160a01b0316338114610c945760405162461bcd60e51b815260040161040f90610e61565b60008381526006602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251338152918201529081018490527fb48e9dd1d295e82e90cbbe8e05f2249fcdfab0bf75504df039330004b280784090606001610c26565b6001600160a01b038216600081815260086020908152604091829020849055815192835282018390527f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f191016105e9565b80356001600160a01b0381168114610d6357600080fd5b919050565b600060208284031215610d7a57600080fd5b610d8382610d4c565b9392505050565b60008060408385031215610d9d57600080fd5b610da683610d4c565b915060208301358015158114610dbb57600080fd5b809150509250929050565b60008060408385031215610dd957600080fd5b610de283610d4c565b946020939093013593505050565b600060208284031215610e0257600080fd5b5035919050565b60008060408385031215610e1c57600080fd5b82359150610e2c60208401610d4c565b90509250929050565b600080600060608486031215610e4a57600080fd5b505081359360208301359350604090920135919050565b6020808252601a908201527f526566657272616c53746f726167653a20666f7262696464656e000000000000604082015260600190565b6020808252601e908201527f526566657272616c53746f726167653a20696e76616c6964205f636f64650000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b600082610f1b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610f3a57610f3a610f56565b500290565b600082821015610f5157610f51610f56565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cf1e8584aa2fb5e3eeecef6d10942fb1392108098e7774ef5155346a5df7ffaa64736f6c63430008070033","sourceMap":"126:7684:106:-:0;;;935:47;;;;;;;;;-1:-1:-1;959:3:106;:16;;-1:-1:-1;;;;;;959:16:106;965:10;959:16;;;-1:-1:-1;;;;126:7684:106;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063836a0187116100b8578063ce18b98d1161007c578063ce18b98d14610347578063cfad57a21461037d578063dfcfa25014610390578063e1e01bf3146103a3578063fcccd11d146103b6578063fdb41ed3146103df57600080fd5b8063836a0187146102b857806385725b58146102cb5780639cb7de4b146102eb578063b35569dd146102fe578063c8b3c4601461031e57600080fd5b806346ea87af1161010a57806346ea87af1461020957806350bb25781461023c578063534ef8831461024f57806356b4b2ad1461027f57806366ac654d146102925780636b364489146102a557600080fd5b8063039af9eb1461014757806312d43a51146101885780631582a018146101b357806336def2c8146101e15780633fb8b323146101f6575b600080fd5b61016e610155366004610df0565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b60005461019b906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b6101d36101c1366004610d68565b60026020526000908152604090205481565b60405190815260200161017f565b6101f46101ef366004610df0565b6103f2565b005b6101f4610204366004610dc6565b610572565b61022c610217366004610d68565b60046020526000908152604090205460ff1681565b604051901515815260200161017f565b6101f461024a366004610d68565b6105f5565b61026261025d366004610d68565b610654565b604080519283526001600160a01b0390911660208301520161017f565b6101f461028d366004610dc6565b61069a565b60015461019b906001600160a01b031681565b6101f46102b3366004610df0565b6106d7565b6101f46102c6366004610e35565b610814565b6101d36102d9366004610d68565b60086020526000908152604090205481565b6101f46102f9366004610d8a565b610979565b6101d361030c366004610d68565b60076020526000908152604090205481565b61019b61032c366004610df0565b6005602052600090815260409020546001600160a01b031681565b61035a610355366004610dc6565b6109ff565b604080519384526001600160a01b0390921660208401529082015260600161017f565b6101f461038b366004610d68565b610a93565b6101f461039e366004610e09565b610b38565b6101f46103b1366004610df0565b610c33565b61019b6103c4366004610df0565b6006602052600090815260409020546001600160a01b031681565b6101f46103ed366004610e09565b610c40565b806104185760405162461bcd60e51b815260040161040f90610e98565b60405180910390fd5b6000818152600560205260409020546001600160a01b0316156104895760405162461bcd60e51b8152602060048201526024808201527f526566657272616c53746f726167653a20636f646520616c72656164792065786044820152636973747360e01b606482015260840161040f565b33600090815260076020526040902054156104fb5760405162461bcd60e51b815260206004820152602c60248201527f526566657272616c53746f726167653a20726566657272657220616c7265616460448201526b1e481c9959da5cdd195c995960a21b606482015260840161040f565b600081815260056020908152604080832080546001600160a01b031916339081179091558084526007835281842085905560028352928190206001905580519283529082018390527f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d802991015b60405180910390a150565b6000546001600160a01b0316331461059c5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038216600081815260026020908152604091829020849055815192835282018390527f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc91015b60405180910390a15050565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b03811661063257600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260086020526040812054819081811561069057506000818152600560205260409020546001600160a01b03165b9094909350915050565b3360009081526004602052604090205460ff166106c95760405162461bcd60e51b815260040161040f90610e61565b6106d38282610cfb565b5050565b6000818152600560209081526040808320546006909252909120546001600160a01b039182169116331461071d5760405162461bcd60e51b815260040161040f90610e61565b33600081815260076020908152604080832080548452600580845282852080546001600160a01b031990811690915582548652600685528386208054821690558886529084528285208054909116861790558690556001600160a01b038516808452600283528184205485855293829020939093558051928352908201929092529081018390527f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979060600160405180910390a16001600160a01b031660008181526007602090815260408083208390559382526006815283822080546001600160a01b0319169055918152600290915290812055565b6000546001600160a01b0316331461083e5760405162461bcd60e51b815260040161040f90610ecf565b61271082111561089c5760405162461bcd60e51b8152602060048201526024808201527f526566657272616c53746f726167653a20696e76616c696420746f74616c52656044820152636261746560e01b606482015260840161040f565b6127108111156108fd5760405162461bcd60e51b815260206004820152602660248201527f526566657272616c53746f726167653a20696e76616c696420646973636f756e60448201526574536861726560d01b606482015260840161040f565b600083815260036020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052918201839052907f4ebd23a492b2bd79586cb57cae40d7793408265f20320f68b478b971e696f4c79060600160405180910390a150505050565b6000546001600160a01b031633146109a35760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e91016105e9565b6000806000610a0d85610654565b6001600160a01b038116600090815260026020908152604080832054808452600390925290912054919450915061271090610a489087610f20565b610a529190610efe565b610a5c9086610f3f565b60008281526003602052604090206001015490945061271090610a7f9086610f20565b610a899190610efe565b9150509250925092565b6000546001600160a01b03163314610abd5760405162461bcd60e51b815260040161040f90610ecf565b6001600160a01b038116610ad057600080fd5b6001546001600160a01b03828116911614610aea57600080fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f91a8c1cc2d4a3bb60738481947a00cbb9899c822916694cf8bb1d68172fdcd5490602001610567565b6000546001600160a01b03163314610b625760405162461bcd60e51b815260040161040f90610ecf565b81610b7f5760405162461bcd60e51b815260040161040f90610e98565b600082815260056020818152604080842080546001600160a01b03908116808752600785528387208790559087168087528387208054885295855283872080546001600160a01b0319908116909155835416811790925593879055838552600283528185208054828752838720558486529490945580518681529182019390935290917f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e9791015b60405180910390a1505050565b610c3d3382610cfb565b50565b81610c5d5760405162461bcd60e51b815260040161040f90610e98565b6000828152600560205260409020546001600160a01b0316338114610c945760405162461bcd60e51b815260040161040f90610e61565b60008381526006602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251338152918201529081018490527fb48e9dd1d295e82e90cbbe8e05f2249fcdfab0bf75504df039330004b280784090606001610c26565b6001600160a01b038216600081815260086020908152604091829020849055815192835282018390527f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f191016105e9565b80356001600160a01b0381168114610d6357600080fd5b919050565b600060208284031215610d7a57600080fd5b610d8382610d4c565b9392505050565b60008060408385031215610d9d57600080fd5b610da683610d4c565b915060208301358015158114610dbb57600080fd5b809150509250929050565b60008060408385031215610dd957600080fd5b610de283610d4c565b946020939093013593505050565b600060208284031215610e0257600080fd5b5035919050565b60008060408385031215610e1c57600080fd5b82359150610e2c60208401610d4c565b90509250929050565b600080600060608486031215610e4a57600080fd5b505081359360208301359350604090920135919050565b6020808252601a908201527f526566657272616c53746f726167653a20666f7262696464656e000000000000604082015260600190565b6020808252601e908201527f526566657272616c53746f726167653a20696e76616c6964205f636f64650000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b600082610f1b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610f3a57610f3a610f56565b500290565b600082821015610f5157610f51610f56565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cf1e8584aa2fb5e3eeecef6d10942fb1392108098e7774ef5155346a5df7ffaa64736f6c63430008070033","sourceMap":"126:7684:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;390:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;7691:25:150;;;7747:2;7732:18;;7725:34;;;;7664:18;390:37:106;;;;;;;;269:18;;;;;-1:-1:-1;;;;;269:18:106;;;;;;-1:-1:-1;;;;;2367:32:150;;;;2349:51;;2337:2;2322:18;269::106;2203:203:150;327:57:106;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3976:25:150;;;3964:2;3949:18;327:57:106;3830:177:150;3737:490:106;;;;;;:::i;:::-;;:::i;:::-;;2841:188;;;;;;:::i;:::-;;:::i;433:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3803:14:150;;3796:22;3778:41;;3766:2;3751:18;433:41:106;3638:187:150;1152:124:106;;;;;;:::i;:::-;;:::i;7261:302::-;;;;;;:::i;:::-;;:::i;:::-;;;;4186:25:150;;;-1:-1:-1;;;;;4247:32:150;;;;4242:2;4227:18;;4220:60;4159:18;7261:302:106;4012:274:150;3186:150:106;;;;;;:::i;:::-;;:::i;293:27::-;;;;;-1:-1:-1;;;;;293:27:106;;;4915:617;;;;;;:::i;:::-;;:::i;2148:526::-;;;;;;:::i;:::-;;:::i;644:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1759:165;;;;;;:::i;:::-;;:::i;598:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;480:54;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;480:54:106;;;6558:481;;;;;;:::i;:::-;;:::i;:::-;;;;7369:25:150;;;-1:-1:-1;;;;;7430:32:150;;;;7425:2;7410:18;;7403:60;7479:18;;;7472:34;7357:2;7342:18;6558:481:106;7167:345:150;1388:177:106;;;;;;:::i;:::-;;:::i;5690:519::-;;;;;;:::i;:::-;;:::i;3464:119::-;;;;;;:::i;:::-;;:::i;540:52::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;540:52:106;;;4398:396;;;;;;:::i;:::-;;:::i;3737:490::-;3801:19;3793:62;;;;-1:-1:-1;;;3793:62:106;;;;;;;:::i;:::-;;;;;;;;;3902:1;3873:17;;;:10;:17;;;;;;-1:-1:-1;;;;;3873:17:106;:31;3865:80;;;;-1:-1:-1;;;3865:80:106;;6375:2:150;3865:80:106;;;6357:21:150;6414:2;6394:18;;;6387:30;6453:34;6433:18;;;6426:62;-1:-1:-1;;;6504:18:150;;;6497:34;6548:19;;3865:80:106;6173:400:150;3865:80:106;3969:10;3992:1;3963:17;;;:5;:17;;;;;;:31;3955:87;;;;-1:-1:-1;;;3955:87:106;;4898:2:150;3955:87:106;;;4880:21:150;4937:2;4917:18;;;4910:30;4976:34;4956:18;;;4949:62;-1:-1:-1;;;5027:18:150;;;5020:42;5079:19;;3955:87:106;4696:408:150;3955:87:106;4053:17;;;;:10;:17;;;;;;;;:30;;-1:-1:-1;;;;;;4053:30:106;4073:10;4053:30;;;;;;4093:17;;;:5;:17;;;;;:26;;;4129:13;:25;;;;;;-1:-1:-1;4129:44:106;;4189:31;;3254:51:150;;;3321:18;;;3314:34;;;4189:31:106;;3227:18:150;4189:31:106;;;;;;;;3737:490;:::o;2841:188::-;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;-1:-1:-1;;;;;2938:24:106;::::1;;::::0;;;:13:::1;:24;::::0;;;;;;;;:34;;;2987:35;;3254:51:150;;;3321:18;;3314:34;;;2987:35:106::1;::::0;3227:18:150;2987:35:106::1;;;;;;;;2841:188:::0;;:::o;1152:124::-;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;-1:-1:-1;;;;;1221:18:106;::::1;1213:27;;;::::0;::::1;;1250:12;:19:::0;;-1:-1:-1;;;;;;1250:19:106::1;-1:-1:-1::0;;;;;1250:19:106;;;::::1;::::0;;;::::1;::::0;;1152:124::o;7261:302::-;-1:-1:-1;;;;;7383:29:106;;7340:7;7383:29;;;:19;:29;;;;;;7340:7;;;7452:18;;7448:76;;-1:-1:-1;7497:16:106;;;;:10;:16;;;;;;-1:-1:-1;;;;;7497:16:106;7448:76;7541:4;;7547:8;;-1:-1:-1;7261:302:106;-1:-1:-1;;7261:302:106:o;3186:150::-;765:10;755:21;;;;:9;:21;;;;;;;;747:60;;;;-1:-1:-1;;;747:60:106;;;;;;;:::i;:::-;3290:39:::1;3313:8;3323:5;3290:22;:39::i;:::-;3186:150:::0;;:::o;4915:617::-;4987:16;5006:17;;;:10;:17;;;;;;;;;5041;:24;;;;;;;-1:-1:-1;;;;;5006:17:106;;;;5041:24;5069:10;5041:38;5033:77;;;;-1:-1:-1;;;5033:77:106;;;;;;;:::i;:::-;5145:10;5128:29;5139:17;;;:5;:17;;;;;;;;;;5128:29;;:10;:29;;;;;;5121:36;;-1:-1:-1;;;;;;5121:36:106;;;;;;5192:17;;5174:36;;:17;:36;;;;;5167:43;;;;;;5229:17;;;;;;;;;:30;;;;;;;;;5269:25;;;-1:-1:-1;;;;;5332:23:106;;;;;:13;:23;;;;;;5304:25;;;;;;;:51;;;;5370:41;;2651:34:150;;;2701:18;;;2694:43;;;;2753:18;;;2746:34;;;5370:41:106;;;;;;;2601:2:150;5370:41:106;;;-1:-1:-1;;;;;5429:15:106;;;;;:5;:15;;;;;;;;5422:22;;;5461:24;;;:17;:24;;;;;5454:31;;-1:-1:-1;;;;;;5454:31:106;;;5502:23;;;:13;:23;;;;;;5495:30;4915:617::o;2148:526::-;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;205:5:::1;2274:15;:32;;2266:81;;;::::0;-1:-1:-1;;;2266:81:106;;4493:2:150;2266:81:106::1;::::0;::::1;4475:21:150::0;4532:2;4512:18;;;4505:30;4571:34;4551:18;;;4544:62;-1:-1:-1;;;4622:18:150;;;4615:34;4666:19;;2266:81:106::1;4291:400:150::0;2266:81:106::1;205:5;2365:13;:30;;2357:81;;;::::0;-1:-1:-1;;;2357:81:106;;6780:2:150;2357:81:106::1;::::0;::::1;6762:21:150::0;6819:2;6799:18;;;6792:30;6858:34;6838:18;;;6831:62;-1:-1:-1;;;6909:18:150;;;6902:36;6955:19;;2357:81:106::1;6578:402:150::0;2357:81:106::1;2449:16;2468:14:::0;;;:5:::1;:14;::::0;;;;;;;2449:33;;;;::::1;::::0;;2492:37;;;2449:33;;::::1;2539::::0;;;2582:14;;;;;;;:21;;;;;;2449:33:::1;::::0;;::::1;2582:21:::0;;;;2619:48;;7972:25:150;;;8013:18;;;8006:34;;;8056:18;;;8049:34;;;2449:33:106;2619:48:::1;::::0;7960:2:150;7945:18;2619:48:106::1;;;;;;;2256:418;2148:526:::0;;;:::o;1759:165::-;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;-1:-1:-1;;;;;1840:19:106;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;;:31;;-1:-1:-1;;1840:31:106::1;::::0;::::1;;::::0;;::::1;::::0;;;1886;;2959:51:150;;;3026:18;;;3019:50;1886:31:106::1;::::0;2932:18:150;1886:31:106::1;2791:284:150::0;6558:481:106;6673:27;6702:16;6720;6763:31;6785:8;6763:21;:31::i;:::-;-1:-1:-1;;;;;6819:23:106;;6804:12;6819:23;;;:13;:23;;;;;;;;;6892:14;;;:5;:14;;;;;;:29;6819:23;;-1:-1:-1;6819:23:106;-1:-1:-1;205:5:106;;6885:36;;:4;:36;:::i;:::-;6884:54;;;;:::i;:::-;6877:61;;:4;:61;:::i;:::-;6988:14;;;;:5;:14;;;;;:27;;;6852:86;;-1:-1:-1;205:5:106;;6963:52;;6852:86;6963:52;:::i;:::-;6962:70;;;;:::i;:::-;6948:84;;6738:301;6558:481;;;;;:::o;1388:177::-;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;-1:-1:-1;;;;;1453:18:106;::::1;1445:27;;;::::0;::::1;;1498:12;::::0;-1:-1:-1;;;;;1490:20:106;;::::1;1498:12:::0;::::1;1490:20;1482:29;;;::::0;::::1;;1521:3;:10:::0;;-1:-1:-1;;;;;;1521:10:106::1;-1:-1:-1::0;;;;;1521:10:106;::::1;::::0;;::::1;::::0;;;1546:12:::1;::::0;2349:51:150;;;1546:12:106::1;::::0;2337:2:150;2322:18;1546:12:106::1;2203:203:150::0;5690:519:106;882:3;;-1:-1:-1;;;;;882:3:106;868:10;:17;860:51;;;;-1:-1:-1;;;860:51:106;;;;;;;:::i;:::-;5795:19;5787:62:::1;;;::::0;-1:-1:-1;;;5787:62:106;;::::1;::::0;::::1;;;:::i;:::-;5860:15;5878:17:::0;;;:10:::1;:17;::::0;;;;;;;;;-1:-1:-1;;;;;5878:17:106;;::::1;5912:14:::0;;;:5:::1;:14:::0;;;;;5905:21;;;5954:18;;::::1;::::0;;;;;;;;5943:30;;;;;;;;5936:37;;-1:-1:-1;;;;;;5936:37:106;;::::1;::::0;;;5984:31;;::::1;::::0;::::1;::::0;;;6025:26;;;;6090:22;;;:13:::1;:22:::0;;;;;;;6061:26;;;;;;:51;6130:22;;;6123:29;;;;6167:35;;4186:25:150;;;4227:18;;;4220:60;;;;5878:17:106;;6167:35:::1;::::0;4159:18:150;6167:35:106::1;;;;;;;;5777:432;5690:519:::0;;:::o;3464:119::-;3535:41;3558:10;3570:5;3535:22;:41::i;:::-;3464:119;:::o;4398:396::-;4502:19;4494:62;;;;-1:-1:-1;;;4494:62:106;;;;;;;:::i;:::-;4567:15;4585:17;;;:10;:17;;;;;;-1:-1:-1;;;;;4585:17:106;4620:10;:21;;4612:60;;;;-1:-1:-1;;;4612:60:106;;;;;;;:::i;:::-;4683:24;;;;:17;:24;;;;;;;;;:38;;-1:-1:-1;;;;;;4683:38:106;-1:-1:-1;;;;;4683:38:106;;;;;;;;4736:51;;4756:10;2651:34:150;;2701:18;;;2694:43;2753:18;;;2746:34;;;4736:51:106;;2601:2:150;2586:18;4736:51:106;2411:375:150;7627:180:106;-1:-1:-1;;;;;7710:29:106;;;;;;:19;:29;;;;;;;;;:37;;;7762:38;;3254:51:150;;;3321:18;;3314:34;;;7762:38:106;;3227:18:150;7762:38:106;3080:274:150;14:173;82:20;;-1:-1:-1;;;;;131:31:150;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:150:o;383:347::-;448:6;456;509:2;497:9;488:7;484:23;480:32;477:52;;;525:1;522;515:12;477:52;548:29;567:9;548:29;:::i;:::-;538:39;;627:2;616:9;612:18;599:32;674:5;667:13;660:21;653:5;650:32;640:60;;696:1;693;686:12;640:60;719:5;709:15;;;383:347;;;;;:::o;735:254::-;803:6;811;864:2;852:9;843:7;839:23;835:32;832:52;;;880:1;877;870:12;832:52;903:29;922:9;903:29;:::i;:::-;893:39;979:2;964:18;;;;951:32;;-1:-1:-1;;;735:254:150:o;1253:180::-;1312:6;1365:2;1353:9;1344:7;1340:23;1336:32;1333:52;;;1381:1;1378;1371:12;1333:52;-1:-1:-1;1404:23:150;;1253:180;-1:-1:-1;1253:180:150:o;1438:254::-;1506:6;1514;1567:2;1555:9;1546:7;1542:23;1538:32;1535:52;;;1583:1;1580;1573:12;1535:52;1619:9;1606:23;1596:33;;1648:38;1682:2;1671:9;1667:18;1648:38;:::i;:::-;1638:48;;1438:254;;;;;:::o;1882:316::-;1959:6;1967;1975;2028:2;2016:9;2007:7;2003:23;1999:32;1996:52;;;2044:1;2041;2034:12;1996:52;-1:-1:-1;;2067:23:150;;;2137:2;2122:18;;2109:32;;-1:-1:-1;2188:2:150;2173:18;;;2160:32;;1882:316;-1:-1:-1;1882:316:150:o;5109:350::-;5311:2;5293:21;;;5350:2;5330:18;;;5323:30;5389:28;5384:2;5369:18;;5362:56;5450:2;5435:18;;5109:350::o;5464:354::-;5666:2;5648:21;;;5705:2;5685:18;;;5678:30;5744:32;5739:2;5724:18;;5717:60;5809:2;5794:18;;5464:354::o;5823:345::-;6025:2;6007:21;;;6064:2;6044:18;;;6037:30;-1:-1:-1;;;6098:2:150;6083:18;;6076:51;6159:2;6144:18;;5823:345::o;8094:217::-;8134:1;8160;8150:132;;8204:10;8199:3;8195:20;8192:1;8185:31;8239:4;8236:1;8229:15;8267:4;8264:1;8257:15;8150:132;-1:-1:-1;8296:9:150;;8094:217::o;8316:168::-;8356:7;8422:1;8418;8414:6;8410:14;8407:1;8404:21;8399:1;8392:9;8385:17;8381:45;8378:71;;;8429:18;;:::i;:::-;-1:-1:-1;8469:9:150;;8316:168::o;8489:125::-;8529:4;8557:1;8554;8551:8;8548:34;;;8562:18;;:::i;:::-;-1:-1:-1;8599:9:150;;8489:125::o;8619:127::-;8680:10;8675:3;8671:20;8668:1;8661:31;8711:4;8708:1;8701:15;8735:4;8732:1;8725:15","linkReferences":{}},"methodIdentifiers":{"acceptCodeOwnership(bytes32)":"6b364489","codeOwners(bytes32)":"c8b3c460","codes(address)":"b35569dd","getTraderReferralInfo(address)":"534ef883","gov()":"12d43a51","govSetCodeOwner(bytes32,address)":"dfcfa250","isHandler(address)":"46ea87af","pendingCodeOwners(bytes32)":"fcccd11d","referrerTiers(address)":"1582a018","registerCode(bytes32)":"36def2c8","requestGov(address)":"50bb2578","requestedGov()":"66ac654d","setGov(address)":"cfad57a2","setHandler(address,bool)":"9cb7de4b","setPendingCodeOwnershipTransfer(bytes32,address)":"fdb41ed3","setReferrerTier(address,uint256)":"3fb8b323","setTier(uint256,uint256,uint256)":"836a0187","setTraderReferralCode(address,bytes32)":"56b4b2ad","setTraderReferralCodeByUser(bytes32)":"e1e01bf3","tiers(uint256)":"039af9eb","traderReferralCodes(address)":"85725b58","traderReferralDiscount(address,uint256)":"ce18b98d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccount\",\"type\":\"address\"}],\"name\":\"GovSetCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"RegisterCode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gov\",\"type\":\"address\"}],\"name\":\"SetGov\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"SetHandler\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetPendingCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"discountShare\",\"type\":\"uint256\"}],\"name\":\"SetReferrerDiscountShare\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tierId\",\"type\":\"uint256\"}],\"name\":\"SetReferrerTier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tierId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refRebatePct\",\"type\":\"uint256\"}],\"name\":\"SetTier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetTraderReferralCode\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"acceptCodeOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"codeOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"codes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTraderReferralInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_newAccount\",\"type\":\"address\"}],\"name\":\"govSetCodeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isHandler\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingCodeOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"referrerTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"registerCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"requestGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestedGov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"setGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_handler\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_newAccount\",\"type\":\"address\"}],\"name\":\"setPendingCodeOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tierId\",\"type\":\"uint256\"}],\"name\":\"setReferrerTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tierId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_feeDiscountPct\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refRebatePct\",\"type\":\"uint256\"}],\"name\":\"setTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"setTraderReferralCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"setTraderReferralCodeByUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refRebatePct\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"traderReferralCodes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"name\":\"traderReferralDiscount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"traderFeesPostDiscount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rebateShare\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptCodeOwnership(bytes32)\":{\"params\":{\"_code\":\"Code which was transferred\"}},\"getTraderReferralInfo(address)\":{\"params\":{\"_account\":\"The address of the trader\"},\"returns\":{\"_0\":\"code The referral code\",\"_1\":\"referrer The referrer address\"}},\"govSetCodeOwner(bytes32,address)\":{\"params\":{\"_code\":\"The referral code\",\"_newAccount\":\"The new owner address\"}},\"registerCode(bytes32)\":{\"params\":{\"_code\":\"The referral code to register\"}},\"requestGov(address)\":{\"details\":\"Only callable by the current governance.\",\"params\":{\"_gov\":\"The new governance address.\"}},\"setGov(address)\":{\"params\":{\"_gov\":\"The new governance address\"}},\"setHandler(address,bool)\":{\"params\":{\"_handler\":\"The address of the handler\",\"_isActive\":\"Boolean to indicate if handler is active\"}},\"setPendingCodeOwnershipTransfer(bytes32,address)\":{\"params\":{\"_code\":\"Code to be transferred\",\"_newAccount\":\"The new owner address \"}},\"setReferrerTier(address,uint256)\":{\"params\":{\"_referrer\":\"The address of the referrer\",\"_tierId\":\"The ID of the tier to set\"}},\"setTier(uint256,uint256,uint256)\":{\"params\":{\"_feeDiscountPct\":\"The discount percent\",\"_refRebatePct\":\"The rebate percent for referrer\",\"_tierId\":\"The ID of the tier\"}},\"setTraderReferralCode(address,bytes32)\":{\"params\":{\"_account\":\"The address of the trader\",\"_code\":\"The referral code\"}},\"setTraderReferralCodeByUser(bytes32)\":{\"params\":{\"_code\":\"The referral code\"}},\"traderReferralDiscount(address,uint256)\":{\"params\":{\"_account\":\"The address of the trader\",\"_fee\":\"The fee amount\"},\"returns\":{\"rebateShare\":\"The share of rebate for referrer\",\"referrer\":\"The address of the referrer\",\"traderFeesPostDiscount\":\"Trader fee post discount\"}}},\"title\":\"Referral contract \",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptCodeOwnership(bytes32)\":{\"notice\":\"Acceptabnce Code ownership transfer\"},\"getTraderReferralInfo(address)\":{\"notice\":\"Gets the code and referrer for a trader account\"},\"govSetCodeOwner(bytes32,address)\":{\"notice\":\"Sets the code owner by governance\"},\"registerCode(bytes32)\":{\"notice\":\"Register a referral code for the sender. To be called by referrer\"},\"requestGov(address)\":{\"notice\":\"Requests the governance address.\"},\"setGov(address)\":{\"notice\":\"Sets the governance address\"},\"setHandler(address,bool)\":{\"notice\":\"Sets the handler for the referral system\"},\"setPendingCodeOwnershipTransfer(bytes32,address)\":{\"notice\":\"initiated Code ownership transfer\"},\"setReferrerTier(address,uint256)\":{\"notice\":\"Sets the tier for a referrer\"},\"setTier(uint256,uint256,uint256)\":{\"notice\":\"Sets the tier for referral program\"},\"setTraderReferralCode(address,bytes32)\":{\"notice\":\"Sets the trader's referral code\"},\"setTraderReferralCodeByUser(bytes32)\":{\"notice\":\"Sets the trader's referral code. Callable by user. \"},\"traderReferralDiscount(address,uint256)\":{\"notice\":\"Returns the trader discount and referrer information\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Referral.sol\":\"Referral\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"src/Referral.sol\":{\"keccak256\":\"0x55bdb63e6d3c214793da9477825bac2a7757eea918d08a4a5a79fb3dcedc95fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65a30d44b9e7af0e26787d17d87045d2372a7320beedf519df548c886410fb28\",\"dweb:/ipfs/QmeABgj5Jcymf6k1DRm3B9VE78avGVFXcb5ii8HYQTN5F6\"]},\"src/interfaces/IReferral.sol\":{\"keccak256\":\"0xa95953627911c481cbf3da33446ef91c144dfcfe84f7ee9d6dc95e18efe39283\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13cb98ca670e6814a436614d3103ec00bd37a779cdbf73674d703862af02a8a5\",\"dweb:/ipfs/QmZPWF9ZczJwmY9bn7yAcQEpj8euFhFY9s2zkyDqC1Qg25\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false},{"internalType":"address","name":"newAccount","type":"address","indexed":false}],"type":"event","name":"GovSetCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"RegisterCode","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"gov","type":"address","indexed":false}],"type":"event","name":"SetGov","anonymous":false},{"inputs":[{"internalType":"address","name":"handler","type":"address","indexed":false},{"internalType":"bool","name":"isActive","type":"bool","indexed":false}],"type":"event","name":"SetHandler","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"address","name":"newAccount","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetPendingCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"referrer","type":"address","indexed":false},{"internalType":"uint256","name":"discountShare","type":"uint256","indexed":false}],"type":"event","name":"SetReferrerDiscountShare","anonymous":false},{"inputs":[{"internalType":"address","name":"referrer","type":"address","indexed":false},{"internalType":"uint256","name":"tierId","type":"uint256","indexed":false}],"type":"event","name":"SetReferrerTier","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeDiscountPct","type":"uint256","indexed":false},{"internalType":"uint256","name":"refRebatePct","type":"uint256","indexed":false}],"type":"event","name":"SetTier","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetTraderReferralCode","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"acceptCodeOwnership"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"codes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTraderReferralInfo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"govSetCodeOwner"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingCodeOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"referrerTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"registerCode"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"requestGov"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestedGov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGov"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setHandler"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPendingCodeOwnershipTransfer"},{"inputs":[{"internalType":"address","name":"_referrer","type":"address"},{"internalType":"uint256","name":"_tierId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setReferrerTier"},{"inputs":[{"internalType":"uint256","name":"_tierId","type":"uint256"},{"internalType":"uint256","name":"_feeDiscountPct","type":"uint256"},{"internalType":"uint256","name":"_refRebatePct","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTier"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setTraderReferralCode"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setTraderReferralCodeByUser"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tiers","outputs":[{"internalType":"uint256","name":"feeDiscountPct","type":"uint256"},{"internalType":"uint256","name":"refRebatePct","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"traderReferralCodes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"stateMutability":"view","type":"function","name":"traderReferralDiscount","outputs":[{"internalType":"uint256","name":"traderFeesPostDiscount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"rebateShare","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"acceptCodeOwnership(bytes32)":{"params":{"_code":"Code which was transferred"}},"getTraderReferralInfo(address)":{"params":{"_account":"The address of the trader"},"returns":{"_0":"code The referral code","_1":"referrer The referrer address"}},"govSetCodeOwner(bytes32,address)":{"params":{"_code":"The referral code","_newAccount":"The new owner address"}},"registerCode(bytes32)":{"params":{"_code":"The referral code to register"}},"requestGov(address)":{"details":"Only callable by the current governance.","params":{"_gov":"The new governance address."}},"setGov(address)":{"params":{"_gov":"The new governance address"}},"setHandler(address,bool)":{"params":{"_handler":"The address of the handler","_isActive":"Boolean to indicate if handler is active"}},"setPendingCodeOwnershipTransfer(bytes32,address)":{"params":{"_code":"Code to be transferred","_newAccount":"The new owner address "}},"setReferrerTier(address,uint256)":{"params":{"_referrer":"The address of the referrer","_tierId":"The ID of the tier to set"}},"setTier(uint256,uint256,uint256)":{"params":{"_feeDiscountPct":"The discount percent","_refRebatePct":"The rebate percent for referrer","_tierId":"The ID of the tier"}},"setTraderReferralCode(address,bytes32)":{"params":{"_account":"The address of the trader","_code":"The referral code"}},"setTraderReferralCodeByUser(bytes32)":{"params":{"_code":"The referral code"}},"traderReferralDiscount(address,uint256)":{"params":{"_account":"The address of the trader","_fee":"The fee amount"},"returns":{"rebateShare":"The share of rebate for referrer","referrer":"The address of the referrer","traderFeesPostDiscount":"Trader fee post discount"}}},"version":1},"userdoc":{"kind":"user","methods":{"acceptCodeOwnership(bytes32)":{"notice":"Acceptabnce Code ownership transfer"},"getTraderReferralInfo(address)":{"notice":"Gets the code and referrer for a trader account"},"govSetCodeOwner(bytes32,address)":{"notice":"Sets the code owner by governance"},"registerCode(bytes32)":{"notice":"Register a referral code for the sender. To be called by referrer"},"requestGov(address)":{"notice":"Requests the governance address."},"setGov(address)":{"notice":"Sets the governance address"},"setHandler(address,bool)":{"notice":"Sets the handler for the referral system"},"setPendingCodeOwnershipTransfer(bytes32,address)":{"notice":"initiated Code ownership transfer"},"setReferrerTier(address,uint256)":{"notice":"Sets the tier for a referrer"},"setTier(uint256,uint256,uint256)":{"notice":"Sets the tier for referral program"},"setTraderReferralCode(address,bytes32)":{"notice":"Sets the trader's referral code"},"setTraderReferralCodeByUser(bytes32)":{"notice":"Sets the trader's referral code. Callable by user. "},"traderReferralDiscount(address,uint256)":{"notice":"Returns the trader discount and referrer information"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Referral.sol":"Referral"},"evmVersion":"london","libraries":{}},"sources":{"src/Referral.sol":{"keccak256":"0x55bdb63e6d3c214793da9477825bac2a7757eea918d08a4a5a79fb3dcedc95fe","urls":["bzz-raw://65a30d44b9e7af0e26787d17d87045d2372a7320beedf519df548c886410fb28","dweb:/ipfs/QmeABgj5Jcymf6k1DRm3B9VE78avGVFXcb5ii8HYQTN5F6"],"license":"MIT"},"src/interfaces/IReferral.sol":{"keccak256":"0xa95953627911c481cbf3da33446ef91c144dfcfe84f7ee9d6dc95e18efe39283","urls":["bzz-raw://13cb98ca670e6814a436614d3103ec00bd37a779cdbf73674d703862af02a8a5","dweb:/ipfs/QmZPWF9ZczJwmY9bn7yAcQEpj8euFhFY9s2zkyDqC1Qg25"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/Referral.sol","id":76218,"exportedSymbols":{"IReferral":[89393],"Referral":[76217]},"nodeType":"SourceUnit","src":"32:7779:106","nodes":[{"id":75567,"nodeType":"PragmaDirective","src":"32:22:106","nodes":[],"literals":["solidity","0.8",".7"]},{"id":75568,"nodeType":"ImportDirective","src":"56:36:106","nodes":[],"absolutePath":"src/interfaces/IReferral.sol","file":"./interfaces/IReferral.sol","nameLocation":"-1:-1:-1","scope":76218,"sourceUnit":89394,"symbolAliases":[],"unitAlias":""},{"id":76217,"nodeType":"ContractDefinition","src":"126:7684:106","nodes":[{"id":75574,"nodeType":"VariableDeclaration","src":"164:46:106","nodes":[],"constant":true,"mutability":"constant","name":"_BASIS_POINTS","nameLocation":"189:13:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75572,"name":"uint256","nodeType":"ElementaryTypeName","src":"164:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":75573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"205:5:106","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"private"},{"id":75577,"nodeType":"VariableDeclaration","src":"216:42:106","nodes":[],"constant":true,"mutability":"constant","name":"_DEFAULT_TIER_ID","nameLocation":"238:16:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75575,"name":"uint","nodeType":"ElementaryTypeName","src":"216:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":75576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"257:1:106","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"id":75579,"nodeType":"VariableDeclaration","src":"269:18:106","nodes":[],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"284:3:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75578,"name":"address","nodeType":"ElementaryTypeName","src":"269:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":75581,"nodeType":"VariableDeclaration","src":"293:27:106","nodes":[],"constant":false,"functionSelector":"66ac654d","mutability":"mutable","name":"requestedGov","nameLocation":"308:12:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75580,"name":"address","nodeType":"ElementaryTypeName","src":"293:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":75586,"nodeType":"VariableDeclaration","src":"327:57:106","nodes":[],"baseFunctions":[89340],"constant":false,"functionSelector":"1582a018","mutability":"mutable","name":"referrerTiers","nameLocation":"371:13:106","overrides":{"id":75585,"nodeType":"OverrideSpecifier","overrides":[],"src":"362:8:106"},"scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":75584,"keyType":{"id":75582,"name":"address","nodeType":"ElementaryTypeName","src":"335:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"327:27:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":75583,"name":"uint256","nodeType":"ElementaryTypeName","src":"346:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":75591,"nodeType":"VariableDeclaration","src":"390:37:106","nodes":[],"constant":false,"functionSelector":"039af9eb","mutability":"mutable","name":"tiers","nameLocation":"422:5:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier)"},"typeName":{"id":75590,"keyType":{"id":75587,"name":"uint256","nodeType":"ElementaryTypeName","src":"398:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"390:24:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier)"},"valueType":{"id":75589,"nodeType":"UserDefinedTypeName","pathNode":{"id":75588,"name":"Tier","nodeType":"IdentifierPath","referencedDeclaration":89255,"src":"409:4:106"},"referencedDeclaration":89255,"src":"409:4:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage_ptr","typeString":"struct IReferral.Tier"}}},"visibility":"public"},{"id":75595,"nodeType":"VariableDeclaration","src":"433:41:106","nodes":[],"constant":false,"functionSelector":"46ea87af","mutability":"mutable","name":"isHandler","nameLocation":"465:9:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":75594,"keyType":{"id":75592,"name":"address","nodeType":"ElementaryTypeName","src":"441:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"433:24:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":75593,"name":"bool","nodeType":"ElementaryTypeName","src":"452:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":75600,"nodeType":"VariableDeclaration","src":"480:54:106","nodes":[],"baseFunctions":[89326],"constant":false,"functionSelector":"c8b3c460","mutability":"mutable","name":"codeOwners","nameLocation":"524:10:106","overrides":{"id":75599,"nodeType":"OverrideSpecifier","overrides":[],"src":"515:8:106"},"scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":75598,"keyType":{"id":75596,"name":"bytes32","nodeType":"ElementaryTypeName","src":"488:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"480:27:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueType":{"id":75597,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":75604,"nodeType":"VariableDeclaration","src":"540:52:106","nodes":[],"constant":false,"functionSelector":"fcccd11d","mutability":"mutable","name":"pendingCodeOwners","nameLocation":"575:17:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":75603,"keyType":{"id":75601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"548:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"540:27:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueType":{"id":75602,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":75608,"nodeType":"VariableDeclaration","src":"598:40:106","nodes":[],"constant":false,"functionSelector":"b35569dd","mutability":"mutable","name":"codes","nameLocation":"633:5:106","scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"typeName":{"id":75607,"keyType":{"id":75605,"name":"address","nodeType":"ElementaryTypeName","src":"606:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"598:27:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"valueType":{"id":75606,"name":"bytes32","nodeType":"ElementaryTypeName","src":"617:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"public"},{"id":75613,"nodeType":"VariableDeclaration","src":"644:63:106","nodes":[],"baseFunctions":[89333],"constant":false,"functionSelector":"85725b58","mutability":"mutable","name":"traderReferralCodes","nameLocation":"688:19:106","overrides":{"id":75612,"nodeType":"OverrideSpecifier","overrides":[],"src":"679:8:106"},"scope":76217,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"typeName":{"id":75611,"keyType":{"id":75609,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"644:27:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"valueType":{"id":75610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"663:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"public"},{"id":75625,"nodeType":"ModifierDefinition","src":"714:111:106","nodes":[],"body":{"id":75624,"nodeType":"Block","src":"737:88:106","nodes":[],"statements":[{"expression":{"arguments":[{"baseExpression":{"id":75616,"name":"isHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75595,"src":"755:9:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75619,"indexExpression":{"expression":{"id":75617,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"765:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"765:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"755:21:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20666f7262696464656e","id":75620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"778:28:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""},"value":"ReferralStorage: forbidden"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""}],"id":75615,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"747:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"747:60:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75622,"nodeType":"ExpressionStatement","src":"747:60:106"},{"id":75623,"nodeType":"PlaceholderStatement","src":"817:1:106"}]},"name":"onlyHandler","nameLocation":"723:11:106","parameters":{"id":75614,"nodeType":"ParameterList","parameters":[],"src":"734:2:106"},"virtual":false,"visibility":"internal"},{"id":75637,"nodeType":"ModifierDefinition","src":"831:98:106","nodes":[],"body":{"id":75636,"nodeType":"Block","src":"850:79:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75628,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"868:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75630,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75579,"src":"882:3:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:17:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"476f7665726e61626c653a20666f7262696464656e","id":75632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"887:23:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c373f67adcbe4f625c77b41add5bb962fe163bb1074a4b62c183ae15e01149c","typeString":"literal_string \"Governable: forbidden\""},"value":"Governable: forbidden"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7c373f67adcbe4f625c77b41add5bb962fe163bb1074a4b62c183ae15e01149c","typeString":"literal_string \"Governable: forbidden\""}],"id":75627,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"860:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"860:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75634,"nodeType":"ExpressionStatement","src":"860:51:106"},{"id":75635,"nodeType":"PlaceholderStatement","src":"921:1:106"}]},"name":"onlyGov","nameLocation":"840:7:106","parameters":{"id":75626,"nodeType":"ParameterList","parameters":[],"src":"847:2:106"},"virtual":false,"visibility":"internal"},{"id":75646,"nodeType":"FunctionDefinition","src":"935:47:106","nodes":[],"body":{"id":75645,"nodeType":"Block","src":"949:33:106","nodes":[],"statements":[{"expression":{"id":75643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75640,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75579,"src":"959:3:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75641,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"965:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"959:16:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75644,"nodeType":"ExpressionStatement","src":"959:16:106"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75638,"nodeType":"ParameterList","parameters":[],"src":"946:2:106"},"returnParameters":{"id":75639,"nodeType":"ParameterList","parameters":[],"src":"949:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75668,"nodeType":"FunctionDefinition","src":"1152:124:106","nodes":[],"body":{"id":75667,"nodeType":"Block","src":"1203:73:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75655,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75649,"src":"1221:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1237:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1229:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75656,"name":"address","nodeType":"ElementaryTypeName","src":"1229:7:106","typeDescriptions":{}}},"id":75659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1229:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1221:18:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":75654,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1213:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":75661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1213:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75662,"nodeType":"ExpressionStatement","src":"1213:27:106"},{"expression":{"id":75665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75663,"name":"requestedGov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75581,"src":"1250:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75664,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75649,"src":"1265:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1250:19:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75666,"nodeType":"ExpressionStatement","src":"1250:19:106"}]},"documentation":{"id":75647,"nodeType":"StructuredDocumentation","src":"988:159:106","text":" @notice Requests the governance address.\n @dev Only callable by the current governance.\n @param _gov The new governance address."},"functionSelector":"50bb2578","implemented":true,"kind":"function","modifiers":[{"id":75652,"kind":"modifierInvocation","modifierName":{"id":75651,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"1195:7:106"},"nodeType":"ModifierInvocation","src":"1195:7:106"}],"name":"requestGov","nameLocation":"1161:10:106","parameters":{"id":75650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75649,"mutability":"mutable","name":"_gov","nameLocation":"1180:4:106","nodeType":"VariableDeclaration","scope":75668,"src":"1172:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75648,"name":"address","nodeType":"ElementaryTypeName","src":"1172:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1171:14:106"},"returnParameters":{"id":75653,"nodeType":"ParameterList","parameters":[],"src":"1203:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75700,"nodeType":"FunctionDefinition","src":"1388:177:106","nodes":[],"body":{"id":75699,"nodeType":"Block","src":"1435:130:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75677,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75671,"src":"1453:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1469:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1461:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75678,"name":"address","nodeType":"ElementaryTypeName","src":"1461:7:106","typeDescriptions":{}}},"id":75681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1461:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1453:18:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":75676,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1445:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":75683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1445:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75684,"nodeType":"ExpressionStatement","src":"1445:27:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75686,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75671,"src":"1490:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75687,"name":"requestedGov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75581,"src":"1498:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1490:20:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":75685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1482:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":75689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1482:29:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75690,"nodeType":"ExpressionStatement","src":"1482:29:106"},{"expression":{"id":75693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75691,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75579,"src":"1521:3:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75692,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75671,"src":"1527:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1521:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75694,"nodeType":"ExpressionStatement","src":"1521:10:106"},{"eventCall":{"arguments":[{"id":75696,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75671,"src":"1553:4:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75695,"name":"SetGov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89259,"src":"1546:6:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1546:12:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75698,"nodeType":"EmitStatement","src":"1541:17:106"}]},"documentation":{"id":75669,"nodeType":"StructuredDocumentation","src":"1282:101:106","text":" @notice Sets the governance address\n @param _gov The new governance address"},"functionSelector":"cfad57a2","implemented":true,"kind":"function","modifiers":[{"id":75674,"kind":"modifierInvocation","modifierName":{"id":75673,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"1427:7:106"},"nodeType":"ModifierInvocation","src":"1427:7:106"}],"name":"setGov","nameLocation":"1397:6:106","parameters":{"id":75672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75671,"mutability":"mutable","name":"_gov","nameLocation":"1412:4:106","nodeType":"VariableDeclaration","scope":75700,"src":"1404:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75670,"name":"address","nodeType":"ElementaryTypeName","src":"1404:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1403:14:106"},"returnParameters":{"id":75675,"nodeType":"ParameterList","parameters":[],"src":"1435:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75722,"nodeType":"FunctionDefinition","src":"1759:165:106","nodes":[],"body":{"id":75721,"nodeType":"Block","src":"1830:94:106","nodes":[],"statements":[{"expression":{"id":75714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75710,"name":"isHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75595,"src":"1840:9:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75712,"indexExpression":{"id":75711,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75703,"src":"1850:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1840:19:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75713,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75705,"src":"1862:9:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1840:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75715,"nodeType":"ExpressionStatement","src":"1840:31:106"},{"eventCall":{"arguments":[{"id":75717,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75703,"src":"1897:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75718,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75705,"src":"1907:9:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":75716,"name":"SetHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89265,"src":"1886:10:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":75719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1886:31:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75720,"nodeType":"EmitStatement","src":"1881:36:106"}]},"documentation":{"id":75701,"nodeType":"StructuredDocumentation","src":"1571:183:106","text":" @notice Sets the handler for the referral system\n @param _handler The address of the handler\n @param _isActive Boolean to indicate if handler is active"},"functionSelector":"9cb7de4b","implemented":true,"kind":"function","modifiers":[{"id":75708,"kind":"modifierInvocation","modifierName":{"id":75707,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"1822:7:106"},"nodeType":"ModifierInvocation","src":"1822:7:106"}],"name":"setHandler","nameLocation":"1768:10:106","parameters":{"id":75706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75703,"mutability":"mutable","name":"_handler","nameLocation":"1787:8:106","nodeType":"VariableDeclaration","scope":75722,"src":"1779:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75702,"name":"address","nodeType":"ElementaryTypeName","src":"1779:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75705,"mutability":"mutable","name":"_isActive","nameLocation":"1802:9:106","nodeType":"VariableDeclaration","scope":75722,"src":"1797:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75704,"name":"bool","nodeType":"ElementaryTypeName","src":"1797:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1778:34:106"},"returnParameters":{"id":75709,"nodeType":"ParameterList","parameters":[],"src":"1830:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75781,"nodeType":"FunctionDefinition","src":"2148:526:106","nodes":[],"body":{"id":75780,"nodeType":"Block","src":"2256:418:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75736,"name":"_feeDiscountPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75727,"src":"2274:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":75737,"name":"_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75574,"src":"2293:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2274:32:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20696e76616c696420746f74616c526562617465","id":75739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2308:38:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_4d33eb580886f04fd9ff51e197cf41f7959996ab7282f71945dcfa581f4d9b16","typeString":"literal_string \"ReferralStorage: invalid totalRebate\""},"value":"ReferralStorage: invalid totalRebate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4d33eb580886f04fd9ff51e197cf41f7959996ab7282f71945dcfa581f4d9b16","typeString":"literal_string \"ReferralStorage: invalid totalRebate\""}],"id":75735,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2266:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2266:81:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75741,"nodeType":"ExpressionStatement","src":"2266:81:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75743,"name":"_refRebatePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75729,"src":"2365:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":75744,"name":"_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75574,"src":"2382:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2365:30:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20696e76616c696420646973636f756e745368617265","id":75746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2397:40:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_c46d8d93b77cffbb9e78ce163b985d96aa8f9f84c357795ff72b4672415b6e56","typeString":"literal_string \"ReferralStorage: invalid discountShare\""},"value":"ReferralStorage: invalid discountShare"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c46d8d93b77cffbb9e78ce163b985d96aa8f9f84c357795ff72b4672415b6e56","typeString":"literal_string \"ReferralStorage: invalid discountShare\""}],"id":75742,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2357:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2357:81:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75748,"nodeType":"ExpressionStatement","src":"2357:81:106"},{"assignments":[75751],"declarations":[{"constant":false,"id":75751,"mutability":"mutable","name":"tier","nameLocation":"2461:4:106","nodeType":"VariableDeclaration","scope":75780,"src":"2449:16:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_memory_ptr","typeString":"struct IReferral.Tier"},"typeName":{"id":75750,"nodeType":"UserDefinedTypeName","pathNode":{"id":75749,"name":"Tier","nodeType":"IdentifierPath","referencedDeclaration":89255,"src":"2449:4:106"},"referencedDeclaration":89255,"src":"2449:4:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage_ptr","typeString":"struct IReferral.Tier"}},"visibility":"internal"}],"id":75755,"initialValue":{"baseExpression":{"id":75752,"name":"tiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75591,"src":"2468:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier storage ref)"}},"id":75754,"indexExpression":{"id":75753,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75725,"src":"2474:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2468:14:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage","typeString":"struct IReferral.Tier storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2449:33:106"},{"expression":{"id":75760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75756,"name":"tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75751,"src":"2492:4:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_memory_ptr","typeString":"struct IReferral.Tier memory"}},"id":75758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeDiscountPct","nodeType":"MemberAccess","referencedDeclaration":89252,"src":"2492:19:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75759,"name":"_feeDiscountPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75727,"src":"2514:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2492:37:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75761,"nodeType":"ExpressionStatement","src":"2492:37:106"},{"expression":{"id":75766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75762,"name":"tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75751,"src":"2539:4:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_memory_ptr","typeString":"struct IReferral.Tier memory"}},"id":75764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"refRebatePct","nodeType":"MemberAccess","referencedDeclaration":89254,"src":"2539:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75765,"name":"_refRebatePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75729,"src":"2559:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2539:33:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75767,"nodeType":"ExpressionStatement","src":"2539:33:106"},{"expression":{"id":75772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75768,"name":"tiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75591,"src":"2582:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier storage ref)"}},"id":75770,"indexExpression":{"id":75769,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75725,"src":"2588:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2582:14:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage","typeString":"struct IReferral.Tier storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75771,"name":"tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75751,"src":"2599:4:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_memory_ptr","typeString":"struct IReferral.Tier memory"}},"src":"2582:21:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage","typeString":"struct IReferral.Tier storage ref"}},"id":75773,"nodeType":"ExpressionStatement","src":"2582:21:106"},{"eventCall":{"arguments":[{"id":75775,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75725,"src":"2627:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75776,"name":"_feeDiscountPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75727,"src":"2636:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75777,"name":"_refRebatePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75729,"src":"2653:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75774,"name":"SetTier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89279,"src":"2619:7:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":75778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2619:48:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75779,"nodeType":"EmitStatement","src":"2614:53:106"}]},"baseFunctions":[89365],"documentation":{"id":75723,"nodeType":"StructuredDocumentation","src":"1929:214:106","text":" @notice Sets the tier for referral program\n @param _tierId The ID of the tier\n @param _feeDiscountPct The discount percent\n @param _refRebatePct The rebate percent for referrer"},"functionSelector":"836a0187","implemented":true,"kind":"function","modifiers":[{"id":75733,"kind":"modifierInvocation","modifierName":{"id":75732,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"2248:7:106"},"nodeType":"ModifierInvocation","src":"2248:7:106"}],"name":"setTier","nameLocation":"2157:7:106","overrides":{"id":75731,"nodeType":"OverrideSpecifier","overrides":[],"src":"2239:8:106"},"parameters":{"id":75730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75725,"mutability":"mutable","name":"_tierId","nameLocation":"2173:7:106","nodeType":"VariableDeclaration","scope":75781,"src":"2165:15:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75724,"name":"uint256","nodeType":"ElementaryTypeName","src":"2165:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75727,"mutability":"mutable","name":"_feeDiscountPct","nameLocation":"2190:15:106","nodeType":"VariableDeclaration","scope":75781,"src":"2182:23:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2182:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75729,"mutability":"mutable","name":"_refRebatePct","nameLocation":"2215:13:106","nodeType":"VariableDeclaration","scope":75781,"src":"2207:21:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2164:65:106"},"returnParameters":{"id":75734,"nodeType":"ParameterList","parameters":[],"src":"2256:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75804,"nodeType":"FunctionDefinition","src":"2841:188:106","nodes":[],"body":{"id":75803,"nodeType":"Block","src":"2928:101:106","nodes":[],"statements":[{"expression":{"id":75796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75792,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"2938:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75794,"indexExpression":{"id":75793,"name":"_referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75784,"src":"2952:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2938:24:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75795,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75786,"src":"2965:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2938:34:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75797,"nodeType":"ExpressionStatement","src":"2938:34:106"},{"eventCall":{"arguments":[{"id":75799,"name":"_referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75784,"src":"3003:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75800,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75786,"src":"3014:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75798,"name":"SetReferrerTier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89285,"src":"2987:15:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":75801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2987:35:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75802,"nodeType":"EmitStatement","src":"2982:40:106"}]},"baseFunctions":[89372],"documentation":{"id":75782,"nodeType":"StructuredDocumentation","src":"2680:156:106","text":" @notice Sets the tier for a referrer\n @param _referrer The address of the referrer\n @param _tierId The ID of the tier to set"},"functionSelector":"3fb8b323","implemented":true,"kind":"function","modifiers":[{"id":75790,"kind":"modifierInvocation","modifierName":{"id":75789,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"2920:7:106"},"nodeType":"ModifierInvocation","src":"2920:7:106"}],"name":"setReferrerTier","nameLocation":"2850:15:106","overrides":{"id":75788,"nodeType":"OverrideSpecifier","overrides":[],"src":"2911:8:106"},"parameters":{"id":75787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75784,"mutability":"mutable","name":"_referrer","nameLocation":"2874:9:106","nodeType":"VariableDeclaration","scope":75804,"src":"2866:17:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75783,"name":"address","nodeType":"ElementaryTypeName","src":"2866:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75786,"mutability":"mutable","name":"_tierId","nameLocation":"2893:7:106","nodeType":"VariableDeclaration","scope":75804,"src":"2885:15:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75785,"name":"uint256","nodeType":"ElementaryTypeName","src":"2885:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2865:36:106"},"returnParameters":{"id":75791,"nodeType":"ParameterList","parameters":[],"src":"2928:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75821,"nodeType":"FunctionDefinition","src":"3186:150:106","nodes":[],"body":{"id":75820,"nodeType":"Block","src":"3280:56:106","nodes":[],"statements":[{"expression":{"arguments":[{"id":75816,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75807,"src":"3313:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75817,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75809,"src":"3323:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75815,"name":"_setTraderReferralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"3290:22:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":75818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3290:39:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75819,"nodeType":"ExpressionStatement","src":"3290:39:106"}]},"baseFunctions":[89356],"documentation":{"id":75805,"nodeType":"StructuredDocumentation","src":"3035:146:106","text":" @notice Sets the trader's referral code\n @param _account The address of the trader\n @param _code The referral code"},"functionSelector":"56b4b2ad","implemented":true,"kind":"function","modifiers":[{"id":75813,"kind":"modifierInvocation","modifierName":{"id":75812,"name":"onlyHandler","nodeType":"IdentifierPath","referencedDeclaration":75625,"src":"3268:11:106"},"nodeType":"ModifierInvocation","src":"3268:11:106"}],"name":"setTraderReferralCode","nameLocation":"3195:21:106","overrides":{"id":75811,"nodeType":"OverrideSpecifier","overrides":[],"src":"3259:8:106"},"parameters":{"id":75810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75807,"mutability":"mutable","name":"_account","nameLocation":"3225:8:106","nodeType":"VariableDeclaration","scope":75821,"src":"3217:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75806,"name":"address","nodeType":"ElementaryTypeName","src":"3217:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75809,"mutability":"mutable","name":"_code","nameLocation":"3243:5:106","nodeType":"VariableDeclaration","scope":75821,"src":"3235:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3235:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3216:33:106"},"returnParameters":{"id":75814,"nodeType":"ParameterList","parameters":[],"src":"3280:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75834,"nodeType":"FunctionDefinition","src":"3464:119:106","nodes":[],"body":{"id":75833,"nodeType":"Block","src":"3525:58:106","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75828,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3558:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3558:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75830,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75824,"src":"3570:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75827,"name":"_setTraderReferralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"3535:22:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":75831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3535:41:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75832,"nodeType":"ExpressionStatement","src":"3535:41:106"}]},"documentation":{"id":75822,"nodeType":"StructuredDocumentation","src":"3342:117:106","text":" @notice Sets the trader's referral code. Callable by user. \n @param _code The referral code"},"functionSelector":"e1e01bf3","implemented":true,"kind":"function","modifiers":[],"name":"setTraderReferralCodeByUser","nameLocation":"3473:27:106","parameters":{"id":75825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75824,"mutability":"mutable","name":"_code","nameLocation":"3509:5:106","nodeType":"VariableDeclaration","scope":75834,"src":"3501:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3501:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3500:15:106"},"returnParameters":{"id":75826,"nodeType":"ParameterList","parameters":[],"src":"3525:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75903,"nodeType":"FunctionDefinition","src":"3737:490:106","nodes":[],"body":{"id":75902,"nodeType":"Block","src":"3783:444:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75841,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"3801:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3818:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3810:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3810:7:106","typeDescriptions":{}}},"id":75845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3810:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3801:19:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20696e76616c6964205f636f6465","id":75847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3822:32:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""},"value":"ReferralStorage: invalid _code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""}],"id":75840,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3793:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3793:62:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75849,"nodeType":"ExpressionStatement","src":"3793:62:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":75851,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"3873:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75853,"indexExpression":{"id":75852,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"3884:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3873:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3902:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3894:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75854,"name":"address","nodeType":"ElementaryTypeName","src":"3894:7:106","typeDescriptions":{}}},"id":75857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3894:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3873:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20636f646520616c726561647920657869737473","id":75859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3906:38:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2355e1e82d95d5e6371e02845c6589636ba7aa2b4d4d7f559f753b06b6b417c","typeString":"literal_string \"ReferralStorage: code already exists\""},"value":"ReferralStorage: code already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2355e1e82d95d5e6371e02845c6589636ba7aa2b4d4d7f559f753b06b6b417c","typeString":"literal_string \"ReferralStorage: code already exists\""}],"id":75850,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3865:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:80:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75861,"nodeType":"ExpressionStatement","src":"3865:80:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":75863,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"3963:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75866,"indexExpression":{"expression":{"id":75864,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3969:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3969:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3963:17:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3992:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3984:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3984:7:106","typeDescriptions":{}}},"id":75870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3984:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3963:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20726566657272657220616c72656164792072656769737465726564","id":75872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3995:46:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_76e643af6f1adef17c850481ac4f44163cf72fafb8e0762e1a875dbb3abf92ca","typeString":"literal_string \"ReferralStorage: referrer already registered\""},"value":"ReferralStorage: referrer already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76e643af6f1adef17c850481ac4f44163cf72fafb8e0762e1a875dbb3abf92ca","typeString":"literal_string \"ReferralStorage: referrer already registered\""}],"id":75862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3955:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3955:87:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75874,"nodeType":"ExpressionStatement","src":"3955:87:106"},{"expression":{"id":75880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75875,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"4053:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75877,"indexExpression":{"id":75876,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"4064:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4053:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75878,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4073:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4073:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:30:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75881,"nodeType":"ExpressionStatement","src":"4053:30:106"},{"expression":{"id":75887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75882,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"4093:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75885,"indexExpression":{"expression":{"id":75883,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4099:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4099:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4093:17:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75886,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"4114:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4093:26:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75888,"nodeType":"ExpressionStatement","src":"4093:26:106"},{"expression":{"id":75894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75889,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"4129:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75892,"indexExpression":{"expression":{"id":75890,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4143:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4143:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4129:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75893,"name":"_DEFAULT_TIER_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75577,"src":"4157:16:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4129:44:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75895,"nodeType":"ExpressionStatement","src":"4129:44:106"},{"eventCall":{"arguments":[{"expression":{"id":75897,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4202:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4202:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75899,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"4214:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75896,"name":"RegisterCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89297,"src":"4189:12:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":75900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:31:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75901,"nodeType":"EmitStatement","src":"4184:36:106"}]},"documentation":{"id":75835,"nodeType":"StructuredDocumentation","src":"3589:143:106","text":" @notice Register a referral code for the sender. To be called by referrer\n @param _code The referral code to register"},"functionSelector":"36def2c8","implemented":true,"kind":"function","modifiers":[],"name":"registerCode","nameLocation":"3746:12:106","parameters":{"id":75838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75837,"mutability":"mutable","name":"_code","nameLocation":"3767:5:106","nodeType":"VariableDeclaration","scope":75903,"src":"3759:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75836,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3759:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3758:15:106"},"returnParameters":{"id":75839,"nodeType":"ParameterList","parameters":[],"src":"3783:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75949,"nodeType":"FunctionDefinition","src":"4398:396:106","nodes":[],"body":{"id":75948,"nodeType":"Block","src":"4484:310:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75912,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75906,"src":"4502:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4519:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":75914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4511:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4511:7:106","typeDescriptions":{}}},"id":75916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4511:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4502:19:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20696e76616c6964205f636f6465","id":75918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4523:32:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""},"value":"ReferralStorage: invalid _code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""}],"id":75911,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4494:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4494:62:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75920,"nodeType":"ExpressionStatement","src":"4494:62:106"},{"assignments":[75922],"declarations":[{"constant":false,"id":75922,"mutability":"mutable","name":"account","nameLocation":"4575:7:106","nodeType":"VariableDeclaration","scope":75948,"src":"4567:15:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75921,"name":"address","nodeType":"ElementaryTypeName","src":"4567:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75926,"initialValue":{"baseExpression":{"id":75923,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"4585:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75925,"indexExpression":{"id":75924,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75906,"src":"4596:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4585:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4567:35:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75928,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4620:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4620:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75930,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75922,"src":"4634:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4620:21:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20666f7262696464656e","id":75932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4643:28:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""},"value":"ReferralStorage: forbidden"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""}],"id":75927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4612:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4612:60:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75934,"nodeType":"ExpressionStatement","src":"4612:60:106"},{"expression":{"id":75939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75935,"name":"pendingCodeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75604,"src":"4683:17:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75937,"indexExpression":{"id":75936,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75906,"src":"4701:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4683:24:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75938,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75908,"src":"4710:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4683:38:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75940,"nodeType":"ExpressionStatement","src":"4683:38:106"},{"eventCall":{"arguments":[{"expression":{"id":75942,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4756:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4756:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75944,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75908,"src":"4768:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75945,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75906,"src":"4781:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75941,"name":"SetPendingCodeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89313,"src":"4736:19:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,bytes32)"}},"id":75946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4736:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75947,"nodeType":"EmitStatement","src":"4731:56:106"}]},"documentation":{"id":75904,"nodeType":"StructuredDocumentation","src":"4233:160:106","text":" @notice initiated Code ownership transfer\n @param _code Code to be transferred\n @param _newAccount The new owner address\n "},"functionSelector":"fdb41ed3","implemented":true,"kind":"function","modifiers":[],"name":"setPendingCodeOwnershipTransfer","nameLocation":"4407:31:106","parameters":{"id":75909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75906,"mutability":"mutable","name":"_code","nameLocation":"4447:5:106","nodeType":"VariableDeclaration","scope":75949,"src":"4439:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4439:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75908,"mutability":"mutable","name":"_newAccount","nameLocation":"4462:11:106","nodeType":"VariableDeclaration","scope":75949,"src":"4454:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75907,"name":"address","nodeType":"ElementaryTypeName","src":"4454:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4438:36:106"},"returnParameters":{"id":75910,"nodeType":"ParameterList","parameters":[],"src":"4484:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76033,"nodeType":"FunctionDefinition","src":"4915:617:106","nodes":[],"body":{"id":76032,"nodeType":"Block","src":"4968:564:106","nodes":[],"statements":[{"assignments":[75956],"declarations":[{"constant":false,"id":75956,"mutability":"mutable","name":"oldOwner","nameLocation":"4995:8:106","nodeType":"VariableDeclaration","scope":76032,"src":"4987:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75955,"name":"address","nodeType":"ElementaryTypeName","src":"4987:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75960,"initialValue":{"baseExpression":{"id":75957,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5006:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75959,"indexExpression":{"id":75958,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5017:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5006:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4987:36:106"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":75962,"name":"pendingCodeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75604,"src":"5041:17:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75964,"indexExpression":{"id":75963,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5059:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5041:24:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":75965,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5069:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5069:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5041:38:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20666f7262696464656e","id":75968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5081:28:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""},"value":"ReferralStorage: forbidden"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_779c5a1c38a0f3ec1c777a42c77db0f8053b827abf817531107156fa8c36d718","typeString":"literal_string \"ReferralStorage: forbidden\""}],"id":75961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5033:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5033:77:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75970,"nodeType":"ExpressionStatement","src":"5033:77:106"},{"expression":{"id":75977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5121:36:106","subExpression":{"baseExpression":{"id":75971,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5128:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75976,"indexExpression":{"baseExpression":{"id":75972,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5139:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75975,"indexExpression":{"expression":{"id":75973,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5145:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5145:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5139:17:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5128:29:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75978,"nodeType":"ExpressionStatement","src":"5121:36:106"},{"expression":{"id":75985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5167:43:106","subExpression":{"baseExpression":{"id":75979,"name":"pendingCodeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75604,"src":"5174:17:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75984,"indexExpression":{"baseExpression":{"id":75980,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5192:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75983,"indexExpression":{"expression":{"id":75981,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5198:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5198:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5192:17:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5174:36:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75986,"nodeType":"ExpressionStatement","src":"5167:43:106"},{"expression":{"id":75992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75987,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5229:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":75989,"indexExpression":{"id":75988,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5240:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5229:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5249:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5249:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5229:30:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75993,"nodeType":"ExpressionStatement","src":"5229:30:106"},{"expression":{"id":75999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75994,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5269:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75997,"indexExpression":{"expression":{"id":75995,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5275:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5275:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5269:17:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75998,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5289:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5269:25:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76000,"nodeType":"ExpressionStatement","src":"5269:25:106"},{"expression":{"id":76008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76001,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"5304:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76004,"indexExpression":{"expression":{"id":76002,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5318:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5318:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5304:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":76005,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"5332:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76007,"indexExpression":{"id":76006,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75956,"src":"5346:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5332:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5304:51:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76009,"nodeType":"ExpressionStatement","src":"5304:51:106"},{"eventCall":{"arguments":[{"id":76011,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75956,"src":"5383:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76012,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5393:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5393:10:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76014,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5405:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76010,"name":"SetCodeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89305,"src":"5370:12:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,bytes32)"}},"id":76015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:41:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76016,"nodeType":"EmitStatement","src":"5365:46:106"},{"expression":{"id":76020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5422:22:106","subExpression":{"baseExpression":{"id":76017,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5429:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76019,"indexExpression":{"id":76018,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75956,"src":"5435:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5429:15:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76021,"nodeType":"ExpressionStatement","src":"5422:22:106"},{"expression":{"id":76025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5454:31:106","subExpression":{"baseExpression":{"id":76022,"name":"pendingCodeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75604,"src":"5461:17:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":76024,"indexExpression":{"id":76023,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"5479:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5461:24:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76026,"nodeType":"ExpressionStatement","src":"5454:31:106"},{"expression":{"id":76030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5495:30:106","subExpression":{"baseExpression":{"id":76027,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"5502:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76029,"indexExpression":{"id":76028,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75956,"src":"5516:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5502:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76031,"nodeType":"ExpressionStatement","src":"5495:30:106"}]},"documentation":{"id":75950,"nodeType":"StructuredDocumentation","src":"4800:110:106","text":" @notice Acceptabnce Code ownership transfer\n @param _code Code which was transferred"},"functionSelector":"6b364489","implemented":true,"kind":"function","modifiers":[],"name":"acceptCodeOwnership","nameLocation":"4924:19:106","parameters":{"id":75953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75952,"mutability":"mutable","name":"_code","nameLocation":"4952:5:106","nodeType":"VariableDeclaration","scope":76033,"src":"4944:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4944:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4943:15:106"},"returnParameters":{"id":75954,"nodeType":"ParameterList","parameters":[],"src":"4968:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76103,"nodeType":"FunctionDefinition","src":"5690:519:106","nodes":[],"body":{"id":76102,"nodeType":"Block","src":"5777:432:106","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76045,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76036,"src":"5795:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5812:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5804:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5804:7:106","typeDescriptions":{}}},"id":76049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5804:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5795:19:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526566657272616c53746f726167653a20696e76616c6964205f636f6465","id":76051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5816:32:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""},"value":"ReferralStorage: invalid _code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_78082e8e05f63fb121fad029a978dbd5954f9fcacab40252519d6bd2f9cf379d","typeString":"literal_string \"ReferralStorage: invalid _code\""}],"id":76044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5787:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5787:62:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76053,"nodeType":"ExpressionStatement","src":"5787:62:106"},{"assignments":[76055],"declarations":[{"constant":false,"id":76055,"mutability":"mutable","name":"account","nameLocation":"5868:7:106","nodeType":"VariableDeclaration","scope":76102,"src":"5860:15:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76054,"name":"address","nodeType":"ElementaryTypeName","src":"5860:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76059,"initialValue":{"baseExpression":{"id":76056,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5878:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":76058,"indexExpression":{"id":76057,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76036,"src":"5889:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5878:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5860:35:106"},{"expression":{"id":76063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5905:21:106","subExpression":{"baseExpression":{"id":76060,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5912:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76062,"indexExpression":{"id":76061,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"5918:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5912:14:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76064,"nodeType":"ExpressionStatement","src":"5905:21:106"},{"expression":{"id":76070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5936:37:106","subExpression":{"baseExpression":{"id":76065,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5943:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":76069,"indexExpression":{"baseExpression":{"id":76066,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"5954:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76068,"indexExpression":{"id":76067,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76038,"src":"5960:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5954:18:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5943:30:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76071,"nodeType":"ExpressionStatement","src":"5936:37:106"},{"expression":{"id":76076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76072,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"5984:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":76074,"indexExpression":{"id":76073,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76036,"src":"5995:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5984:17:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76075,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76038,"src":"6004:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5984:31:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76077,"nodeType":"ExpressionStatement","src":"5984:31:106"},{"expression":{"id":76082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76078,"name":"codes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75608,"src":"6025:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76080,"indexExpression":{"id":76079,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76038,"src":"6031:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6025:18:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76081,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76036,"src":"6046:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6025:26:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76083,"nodeType":"ExpressionStatement","src":"6025:26:106"},{"expression":{"id":76090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76084,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"6061:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76086,"indexExpression":{"id":76085,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76038,"src":"6075:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6061:26:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":76087,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"6090:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76089,"indexExpression":{"id":76088,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"6104:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6090:22:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6061:51:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76091,"nodeType":"ExpressionStatement","src":"6061:51:106"},{"expression":{"id":76095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6123:29:106","subExpression":{"baseExpression":{"id":76092,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"6130:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76094,"indexExpression":{"id":76093,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"6144:7:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6130:22:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76096,"nodeType":"ExpressionStatement","src":"6123:29:106"},{"eventCall":{"arguments":[{"id":76098,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76036,"src":"6183:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76099,"name":"_newAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76038,"src":"6190:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":76097,"name":"GovSetCodeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89319,"src":"6167:15:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":76100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6167:35:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76101,"nodeType":"EmitStatement","src":"6162:40:106"}]},"baseFunctions":[89379],"documentation":{"id":76034,"nodeType":"StructuredDocumentation","src":"5538:147:106","text":" @notice Sets the code owner by governance\n @param _code The referral code\n @param _newAccount The new owner address"},"functionSelector":"dfcfa250","implemented":true,"kind":"function","modifiers":[{"id":76042,"kind":"modifierInvocation","modifierName":{"id":76041,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":75637,"src":"5769:7:106"},"nodeType":"ModifierInvocation","src":"5769:7:106"}],"name":"govSetCodeOwner","nameLocation":"5699:15:106","overrides":{"id":76040,"nodeType":"OverrideSpecifier","overrides":[],"src":"5760:8:106"},"parameters":{"id":76039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76036,"mutability":"mutable","name":"_code","nameLocation":"5723:5:106","nodeType":"VariableDeclaration","scope":76103,"src":"5715:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5715:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76038,"mutability":"mutable","name":"_newAccount","nameLocation":"5738:11:106","nodeType":"VariableDeclaration","scope":76103,"src":"5730:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76037,"name":"address","nodeType":"ElementaryTypeName","src":"5730:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5714:36:106"},"returnParameters":{"id":76043,"nodeType":"ParameterList","parameters":[],"src":"5777:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76158,"nodeType":"FunctionDefinition","src":"6558:481:106","nodes":[],"body":{"id":76157,"nodeType":"Block","src":"6738:301:106","nodes":[],"statements":[{"expression":{"id":76123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":76118,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76114,"src":"6751:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76119,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6748:12:106","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_address_$","typeString":"tuple(,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76121,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76106,"src":"6785:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76120,"name":"getTraderReferralInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76197,"src":"6763:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes32_$_t_address_$","typeString":"function (address) view returns (bytes32,address)"}},"id":76122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6763:31:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"src":"6748:46:106","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76124,"nodeType":"ExpressionStatement","src":"6748:46:106"},{"assignments":[76126],"declarations":[{"constant":false,"id":76126,"mutability":"mutable","name":"_tierId","nameLocation":"6809:7:106","nodeType":"VariableDeclaration","scope":76157,"src":"6804:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76125,"name":"uint","nodeType":"ElementaryTypeName","src":"6804:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76130,"initialValue":{"baseExpression":{"id":76127,"name":"referrerTiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75586,"src":"6819:13:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":76129,"indexExpression":{"id":76128,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76114,"src":"6833:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6819:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6804:38:106"},{"expression":{"id":76143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76131,"name":"traderFeesPostDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76112,"src":"6852:22:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76132,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76108,"src":"6877:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76133,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76108,"src":"6885:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":76134,"name":"tiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75591,"src":"6892:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier storage ref)"}},"id":76136,"indexExpression":{"id":76135,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76126,"src":"6898:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6892:14:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage","typeString":"struct IReferral.Tier storage ref"}},"id":76137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeDiscountPct","nodeType":"MemberAccess","referencedDeclaration":89252,"src":"6892:29:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6885:36:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76139,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6884:38:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":76140,"name":"_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75574,"src":"6925:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6884:54:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6877:61:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6852:86:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76144,"nodeType":"ExpressionStatement","src":"6852:86:106"},{"expression":{"id":76155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76145,"name":"rebateShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76116,"src":"6948:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76146,"name":"traderFeesPostDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76112,"src":"6963:22:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":76147,"name":"tiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75591,"src":"6988:5:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Tier_$89255_storage_$","typeString":"mapping(uint256 => struct IReferral.Tier storage ref)"}},"id":76149,"indexExpression":{"id":76148,"name":"_tierId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76126,"src":"6994:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6988:14:106","typeDescriptions":{"typeIdentifier":"t_struct$_Tier_$89255_storage","typeString":"struct IReferral.Tier storage ref"}},"id":76150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"refRebatePct","nodeType":"MemberAccess","referencedDeclaration":89254,"src":"6988:27:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6963:52:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76152,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6962:54:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":76153,"name":"_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75574,"src":"7019:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6962:70:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6948:84:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76156,"nodeType":"ExpressionStatement","src":"6948:84:106"}]},"baseFunctions":[89392],"documentation":{"id":76104,"nodeType":"StructuredDocumentation","src":"6215:338:106","text":" @notice Returns the trader discount and referrer information\n @param _account The address of the trader\n @param _fee The fee amount\n @return traderFeesPostDiscount Trader fee post discount\n @return referrer The address of the referrer\n @return rebateShare The share of rebate for referrer"},"functionSelector":"ce18b98d","implemented":true,"kind":"function","modifiers":[],"name":"traderReferralDiscount","nameLocation":"6567:22:106","overrides":{"id":76110,"nodeType":"OverrideSpecifier","overrides":[],"src":"6655:8:106"},"parameters":{"id":76109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76106,"mutability":"mutable","name":"_account","nameLocation":"6607:8:106","nodeType":"VariableDeclaration","scope":76158,"src":"6599:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76105,"name":"address","nodeType":"ElementaryTypeName","src":"6599:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76108,"mutability":"mutable","name":"_fee","nameLocation":"6630:4:106","nodeType":"VariableDeclaration","scope":76158,"src":"6625:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76107,"name":"uint","nodeType":"ElementaryTypeName","src":"6625:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6589:51:106"},"returnParameters":{"id":76117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76112,"mutability":"mutable","name":"traderFeesPostDiscount","nameLocation":"6678:22:106","nodeType":"VariableDeclaration","scope":76158,"src":"6673:27:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76111,"name":"uint","nodeType":"ElementaryTypeName","src":"6673:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":76114,"mutability":"mutable","name":"referrer","nameLocation":"6710:8:106","nodeType":"VariableDeclaration","scope":76158,"src":"6702:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76113,"name":"address","nodeType":"ElementaryTypeName","src":"6702:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76116,"mutability":"mutable","name":"rebateShare","nameLocation":"6725:11:106","nodeType":"VariableDeclaration","scope":76158,"src":"6720:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76115,"name":"uint","nodeType":"ElementaryTypeName","src":"6720:4:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6672:65:106"},"scope":76217,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":76197,"nodeType":"FunctionDefinition","src":"7261:302:106","nodes":[],"body":{"id":76196,"nodeType":"Block","src":"7358:205:106","nodes":[],"statements":[{"assignments":[76170],"declarations":[{"constant":false,"id":76170,"mutability":"mutable","name":"code","nameLocation":"7376:4:106","nodeType":"VariableDeclaration","scope":76196,"src":"7368:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7368:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76174,"initialValue":{"baseExpression":{"id":76171,"name":"traderReferralCodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75613,"src":"7383:19:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76173,"indexExpression":{"id":76172,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76161,"src":"7403:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7383:29:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7368:44:106"},{"assignments":[76176],"declarations":[{"constant":false,"id":76176,"mutability":"mutable","name":"referrer","nameLocation":"7430:8:106","nodeType":"VariableDeclaration","scope":76196,"src":"7422:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76175,"name":"address","nodeType":"ElementaryTypeName","src":"7422:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76177,"nodeType":"VariableDeclarationStatement","src":"7422:16:106"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76178,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76170,"src":"7452:4:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7468:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7460:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7460:7:106","typeDescriptions":{}}},"id":76182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7460:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7452:18:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76191,"nodeType":"IfStatement","src":"7448:76:106","trueBody":{"id":76190,"nodeType":"Block","src":"7472:52:106","statements":[{"expression":{"id":76188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76184,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76176,"src":"7486:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":76185,"name":"codeOwners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"7497:10:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":76187,"indexExpression":{"id":76186,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76170,"src":"7508:4:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7497:16:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7486:27:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76189,"nodeType":"ExpressionStatement","src":"7486:27:106"}]}},{"expression":{"components":[{"id":76192,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76170,"src":"7541:4:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76193,"name":"referrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76176,"src":"7547:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76194,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:16:106","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"functionReturnParameters":76168,"id":76195,"nodeType":"Return","src":"7533:23:106"}]},"baseFunctions":[89349],"documentation":{"id":76159,"nodeType":"StructuredDocumentation","src":"7049:207:106","text":" @notice Gets the code and referrer for a trader account\n @param _account The address of the trader\n @return code The referral code\n @return referrer The referrer address"},"functionSelector":"534ef883","implemented":true,"kind":"function","modifiers":[],"name":"getTraderReferralInfo","nameLocation":"7270:21:106","overrides":{"id":76163,"nodeType":"OverrideSpecifier","overrides":[],"src":"7322:8:106"},"parameters":{"id":76162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76161,"mutability":"mutable","name":"_account","nameLocation":"7300:8:106","nodeType":"VariableDeclaration","scope":76197,"src":"7292:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76160,"name":"address","nodeType":"ElementaryTypeName","src":"7292:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7291:18:106"},"returnParameters":{"id":76168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76197,"src":"7340:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7340:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76197,"src":"7349:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76166,"name":"address","nodeType":"ElementaryTypeName","src":"7349:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7339:18:106"},"scope":76217,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":76216,"nodeType":"FunctionDefinition","src":"7627:180:106","nodes":[],"body":{"id":76215,"nodeType":"Block","src":"7700:107:106","nodes":[],"statements":[{"expression":{"id":76208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76204,"name":"traderReferralCodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75613,"src":"7710:19:106","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76206,"indexExpression":{"id":76205,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76199,"src":"7730:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7710:29:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76207,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76201,"src":"7742:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7710:37:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76209,"nodeType":"ExpressionStatement","src":"7710:37:106"},{"eventCall":{"arguments":[{"id":76211,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76199,"src":"7784:8:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76212,"name":"_code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76201,"src":"7794:5:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76210,"name":"SetTraderReferralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89271,"src":"7762:21:106","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":76213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76214,"nodeType":"EmitStatement","src":"7757:43:106"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setTraderReferralCode","nameLocation":"7636:22:106","parameters":{"id":76202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76199,"mutability":"mutable","name":"_account","nameLocation":"7667:8:106","nodeType":"VariableDeclaration","scope":76216,"src":"7659:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76198,"name":"address","nodeType":"ElementaryTypeName","src":"7659:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76201,"mutability":"mutable","name":"_code","nameLocation":"7685:5:106","nodeType":"VariableDeclaration","scope":76216,"src":"7677:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7677:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7658:33:106"},"returnParameters":{"id":76203,"nodeType":"ParameterList","parameters":[],"src":"7700:0:106"},"scope":76217,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":75570,"name":"IReferral","nodeType":"IdentifierPath","referencedDeclaration":89393,"src":"147:9:106"},"id":75571,"nodeType":"InheritanceSpecifier","src":"147:9:106"}],"contractDependencies":[],"contractKind":"contract","documentation":{"id":75569,"nodeType":"StructuredDocumentation","src":"94:31:106","text":"@title Referral contract "},"fullyImplemented":true,"linearizedBaseContracts":[76217,89393],"name":"Referral","nameLocation":"135:8:106","scope":76218,"usedErrors":[]}],"license":"MIT"},"id":106}
1
+ {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"acceptCodeOwnership","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"acceptGovTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelRequest","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"codeOwners","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"codes","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"discountTiers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"feeDiscountPct","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTraderReferralInfo","inputs":[{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"govSetCodeOwner","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_newAccount","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initiateGovTransfer","inputs":[{"name":"_newGov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isHandler","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPrivate","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateCode","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_owner","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrateCodes","inputs":[{"name":"_codes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"_owners","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrateTraderReferrals","inputs":[{"name":"_traders","type":"address[]","internalType":"address[]"},{"name":"_codes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrateTraderReferrals","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingCodeOwners","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingGov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"referralTiers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"feeDiscountPct","type":"uint256","internalType":"uint256"},{"name":"refRebatePct","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"referrerTiers","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerCode","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"relinquishCode","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCode","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"requestSpecialCode","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDiscountTier","inputs":[{"name":"_tierId","type":"uint256","internalType":"uint256"},{"name":"_feeDiscountPct","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHandler","inputs":[{"name":"_handler","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPendingCodeOwnershipTransfer","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_newAccount","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setReferralTier","inputs":[{"name":"_tierId","type":"uint256","internalType":"uint256"},{"name":"_feeDiscountPct","type":"uint256","internalType":"uint256"},{"name":"_refRebatePct","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setReferrerTier","inputs":[{"name":"_referrer","type":"address","internalType":"address"},{"name":"_tierId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderReferralCode","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderReferralCodeByOwner","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_trader","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderReferralCodeByUser","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTraderTier","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_tier","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"traderReferralCodes","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"traderReferralDiscount","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"traderFeesPostDiscount","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"},{"name":"rebateShare","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"traderTier","inputs":[{"name":"_trader","type":"address","internalType":"address"}],"outputs":[{"name":"tier","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"traderTiers","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateReferral","inputs":[{"name":"_code","type":"bytes32","internalType":"bytes32"},{"name":"_isPrivate","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CodeUpdated","inputs":[{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isSpecial","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"DiscountTierSet","inputs":[{"name":"tierId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeDiscountPct","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Discounted","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"traderTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeDiscount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"traderFeePostDiscount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"GovSetCodeOwner","inputs":[{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newAccount","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovTransferAccepted","inputs":[{"name":"oldGov","type":"address","indexed":false,"internalType":"address"},{"name":"newGov","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"GovTransferInitiated","inputs":[{"name":"oldGov","type":"address","indexed":false,"internalType":"address"},{"name":"newGov","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrivateCodeRequested","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"_code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ReferralTierSet","inputs":[{"name":"tierId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeDiscountPct","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"refRebatePct","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RegisterCode","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RelinquishedCode","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RequestCancelled","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"_code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetCodeOwner","inputs":[{"name":"oldOwner","type":"address","indexed":false,"internalType":"address"},{"name":"newOwner","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetHandler","inputs":[{"name":"handler","type":"address","indexed":false,"internalType":"address"},{"name":"isActive","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetPendingCodeOwner","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"newAccount","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetReferrerDiscountShare","inputs":[{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"discountShare","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetReferrerTier","inputs":[{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"tierId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetTraderReferralCode","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"code","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TraderTierUpdated","inputs":[{"name":"trader","type":"address","indexed":false,"internalType":"address"},{"name":"_tier","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61257380620000f36000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806385725b5811610146578063c762b03d116100c3578063dfcfa25011610087578063dfcfa25014610603578063e1e01bf314610616578063e51a927714610629578063fa84dc2f1461063c578063fcccd11d1461065c578063fdb41ed31461068557600080fd5b8063c762b03d1461055e578063c8b3c46014610571578063ce18b98d1461059a578063d54c95a5146105d0578063d80a619f146105f057600080fd5b8063a7ad780d1161010a578063a7ad780d146104ed578063b25305a814610500578063b35569dd14610523578063b7f1e9c614610543578063c4d66de81461054b57600080fd5b806385725b581461045857806393e2d3b41461047857806397132232146104b45780639a90031f146104c75780639cb7de4b146104da57600080fd5b80633fb8b323116101df57806356b4b2ad116101a357806356b4b2ad146103ee5780635c975abb146104015780636b3644891461040c5780637b1385ac1461041f5780638456cb5914610448578063851b16f51461045057600080fd5b80633fb8b3231461034557806346ea87af146103585780634c3347721461038b57806350e45ea8146103ab578063534ef883146103be57600080fd5b80632e5cf045116102265780632e5cf045146102fc578063308a1e771461030f5780633611d9391461032257806336def2c81461032a5780633f4ba83a1461033d57600080fd5b806312d43a51146102635780631582a018146102935780631d442517146102c1578063238df96b146102d657806325240810146102e9575b600080fd5b606554610276906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102b36102a1366004612061565b60676020526000908152604090205481565b60405190815260200161028a565b6102d46102cf366004612061565b610698565b005b6102d46102e43660046120e0565b610741565b606654610276906001600160a01b031681565b6102d461030a366004612144565b61086f565b6102d461031d3660046120b6565b610ba7565b6102d4610c44565b6102d4610338366004612229565b610d03565b6102d4610e09565b6102d46103533660046120b6565b610e3d565b61037b610366366004612061565b606b6020526000908152604090205460ff1681565b604051901515815260200161028a565b6102b3610399366004612061565b60686020526000908152604090205481565b6102d46103b936600461229a565b610ece565b6103d16103cc366004612061565b610ff1565b604080519283526001600160a01b0390911660208301520161028a565b6102d46103fc3660046120b6565b611037565b60335460ff1661037b565b6102d461041a366004612229565b611089565b6102b361042d366004612061565b6001600160a01b031660009081526068602052604090205490565b6102d46111f4565b6102d4611226565b6102b3610466366004612061565b606f6020526000908152604090205481565b61049f610486366004612229565b6069602052600090815260409020805460019091015482565b6040805192835260208301919091520161028a565b6102d46104c2366004612242565b6112e5565b6102d46104d53660046120b6565b6113c1565b6102d46104e8366004612083565b611452565b6102d46104fb366004612265565b6114d8565b61037b61050e366004612229565b60706020526000908152604090205460ff1681565b6102b3610531366004612061565b606e6020526000908152604090205481565b6102d4611638565b6102d4610559366004612061565b611715565b6102d461056c3660046122df565b611832565b61027661057f366004612229565b606c602052600090815260409020546001600160a01b031681565b6105ad6105a83660046120b6565b61197c565b604080519384526001600160a01b0390921660208401529082015260600161028a565b6102b36105de366004612061565b60716020526000908152604090205481565b6102d46105fe3660046122bd565b611abf565b6102d4610611366004612242565b611b95565b6102d4610624366004612229565b611ca4565b6102d4610637366004612229565b611d0b565b6102b361064a366004612229565b606a6020526000908152604090205481565b61027661066a366004612229565b606d602052600090815260409020546001600160a01b031681565b6102d4610693366004612242565b611d55565b6065546001600160a01b031633146106cb5760405162461bcd60e51b81526004016106c2906123a0565b60405180910390fd5b6001600160a01b0381166106de57600080fd5b606680546001600160a01b0319166001600160a01b038381169182179092556065546040805191909316815260208101919091527f28f8f8492c19a1f85e6f560618e8278240d002f8534a77be01db9eba1ca5971891015b60405180910390a150565b336000908152606b602052604090205460ff168061076957506065546001600160a01b031633145b6107855760405162461bcd60e51b81526004016106c2906123cf565b60005b825181101561086a578181815181106107a3576107a3612511565b6020026020010151606f60008584815181106107c1576107c1612511565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f183828151811061082057610820612511565b602002602001015183838151811061083a5761083a612511565b602002602001015160405161085092919061230b565b60405180910390a180610862816124e0565b915050610788565b505050565b336000908152606b602052604090205460ff168061089757506065546001600160a01b031633145b6108b35760405162461bcd60e51b81526004016106c2906123cf565b60005b8351811015610ba1576000801b8482815181106108d5576108d5612511565b602002602001015114156108fb5760405162461bcd60e51b81526004016106c2906123fc565b60006001600160a01b0316606c600086848151811061091c5761091c612511565b6020908102919091018101518252810191909152604001600020546001600160a01b03161461095d5760405162461bcd60e51b81526004016106c290612369565b6000801b606e600085848151811061097757610977612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054146109bd5760405162461bcd60e51b81526004016106c290612324565b8281815181106109cf576109cf612511565b6020026020010151606c60008684815181106109ed576109ed612511565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838181518110610a3957610a39612511565b6020026020010151606e6000858481518110610a5757610a57612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550818181518110610a9557610a95612511565b602002602001015160676000858481518110610ab357610ab3612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060706000868481518110610af757610af7612511565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d8029838281518110610b5757610b57612511565b6020026020010151858381518110610b7157610b71612511565b6020026020010151604051610b8792919061230b565b60405180910390a180610b99816124e0565b9150506108b6565b50505050565b336000908152606b602052604090205460ff1680610bcf57506065546001600160a01b031633145b610beb5760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b03821660009081526068602052604090819020829055517f88dbf1ad95227b72fc5331dff3dfcd0e51191478034000b820b15e9eb3cdcaa190610c38908490849061230b565b60405180910390a15050565b610c4c611e3e565b336000908152606f6020526040902054610ca85760405162461bcd60e51b815260206004820152601f60248201527f526566657272616c3a204e6f20436f646520746f2072656c697175696e73680060448201526064016106c2565b336000818152606f6020526040908190205490517fc9bdf7aea80447079a5e67a0d986bc99945fa7ba424d2c06ab394d494b8770bd92610ce992909161230b565b60405180910390a1336000908152606f6020526040812055565b610d0b611e3e565b80610d285760405162461bcd60e51b81526004016106c2906123fc565b6000818152606c60205260409020546001600160a01b031615610d5d5760405162461bcd60e51b81526004016106c290612369565b336000908152606e602052604090205415610d8a5760405162461bcd60e51b81526004016106c290612324565b6000818152606c6020908152604080832080546001600160a01b03191633908117909155808452606e83528184208590556067835281842060019055848452607090925291829020805460ff1916905590517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d80299161073691849061230b565b6065546001600160a01b03163314610e335760405162461bcd60e51b81526004016106c2906123a0565b610e3b611e84565b565b336000908152606b602052604090205460ff1680610e6557506065546001600160a01b031633145b610e815760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b03821660009081526067602052604090819020829055517f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc90610c38908490849061230b565b336000908152606b602052604090205460ff1680610ef657506065546001600160a01b031633145b610f125760405162461bcd60e51b81526004016106c2906123cf565b81610f2f5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c60205260409020546001600160a01b0316610f9f5760405162461bcd60e51b815260206004820152602360248201527f526566657272616c3a20436f6465204f776e657220446f6573204e6f742045786044820152621a5cdd60ea1b60648201526084016106c2565b600082815260706020908152604091829020805460ff19168415159081179091558251858152918201527f3f9c3a98ca92c073219c27626d123cd68be2f9bbf80ef0598e3630ab54e5b4399101610c38565b6001600160a01b0381166000908152606f6020526040812054819081811561102d57506000818152606c60205260409020546001600160a01b03165b9094909350915050565b336000908152606b602052604090205460ff168061105f57506065546001600160a01b031633145b61107b5760405162461bcd60e51b81526004016106c2906123cf565b6110858282611405565b5050565b611091611e3e565b6000818152606c6020908152604080832054606d909252909120546001600160a01b03918216911633146110fd5760405162461bcd60e51b81526020600482015260136024820152722932b332b93930b61d103337b93134b23232b760691b60448201526064016106c2565b336000818152606e6020908152604080832080548452606c80845282852080546001600160a01b031990811690915582548652606d85528386208054821690558886529084528285208054909116861790558690556001600160a01b038516808452606783528184205485855293829020939093558051928352908201929092529081018390527f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979060600160405180910390a16001600160a01b03166000818152606e60209081526040808320839055938252606d815283822080546001600160a01b0319169055918152606790915290812055565b6065546001600160a01b0316331461121e5760405162461bcd60e51b81526004016106c2906123a0565b610e3b611ed6565b61122e611e3e565b3360009081526071602052604090205461128a5760405162461bcd60e51b815260206004820152601b60248201527f526566657272616c3a204e6f20436f646520526571756573746564000000000060448201526064016106c2565b33600081815260716020526040908190205490517f51748af4fe9e894fd926cd621e287217d8d4cd9434159ef54f7ef22fc0e946f5926112cb92909161230b565b60405180910390a133600090815260716020526040812055565b6112ed611e3e565b6000828152606c60205260409020546001600160a01b031633146113405760405162461bcd60e51b815260206004820152600a6024820152694f574e45525f4f4e4c5960b01b60448201526064016106c2565b6001600160a01b038116600090815260716020526040902054821461139c5760405162461bcd60e51b815260206004820152601260248201527110d3d11157d393d517d49154555154d5115160721b60448201526064016106c2565b6113a68183611405565b6001600160a01b031660009081526071602052604081205550565b336000908152606b602052604090205460ff16806113e957506065546001600160a01b031633145b6114055760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b0382166000908152606f602052604090819020829055517f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f190610c38908490849061230b565b6065546001600160a01b0316331461147c5760405162461bcd60e51b81526004016106c2906123a0565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e9101610c38565b336000908152606b602052604090205460ff168061150057506065546001600160a01b031633145b61151c5760405162461bcd60e51b81526004016106c2906123cf565b826115395760405162461bcd60e51b81526004016106c2906123fc565b6000838152606c60205260409020546001600160a01b03161561156e5760405162461bcd60e51b81526004016106c290612369565b6001600160a01b0382166000908152606e6020526040902054156115a45760405162461bcd60e51b81526004016106c290612324565b6000838152606c6020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352606e825280832086905560678252808320849055858352607090915290819020805460ff19169055517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d80299061162b908490869061230b565b60405180910390a1505050565b6066546001600160a01b031633146116a95760405162461bcd60e51b815260206004820152602e60248201527f526566657272616c3a2063616c6c6572206973206e6f74207468652070656e6460448201526d696e6720676f7665726e616e636560901b60648201526084016106c2565b606554604080516001600160a01b0390921682523360208301527f9ada8d81c1c496b87ae7ff3b8d180bb9e2277d70e35b46c471db0b16a7daed8f910160405180910390a160668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16158080156117355750600054600160ff909116105b8061174f5750303b15801561174f575060005460ff166001145b6117b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c2565b6000805460ff1916600117905580156117d5576000805461ff0019166101001790555b606580546001600160a01b0319166001600160a01b0384161790558015611085576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610c38565b6065546001600160a01b0316331461185c5760405162461bcd60e51b81526004016106c2906123a0565b6127108211156118ae5760405162461bcd60e51b815260206004820152601d60248201527f526566657272616c3a20696e76616c696420746f74616c52656261746500000060448201526064016106c2565b6127108111156119005760405162461bcd60e51b815260206004820152601f60248201527f526566657272616c3a20696e76616c696420646973636f756e7453686172650060448201526064016106c2565b600083815260696020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052918201839052907f318aa6da98314a0590fcdb4f5d7c73a8113f5e6b3c709c362ac106f4d0e6e42f9060600160405180910390a150505050565b600080600061198a85610ff1565b6001600160a01b0381166000908152606760209081526040808320548084526069909252909120549194509150612710906119c590876124aa565b6119cf9190612488565b6119d990866124c9565b600082815260696020526040902060010154909450612710906119fc90866124aa565b611a069190612488565b6001600160a01b0387166000908152606860209081526040808320548352606a9091528120549193509061271090611a3e90876124aa565b611a489190612488565b9050611a5481866124c9565b6001600160a01b038816600081815260686020908152604091829020548251938452908301528101839052606081018290529095507f468833fe6386b98b40e0f39fe4cafee4f56f7ab7f47e3f7839c57cf40b6e407a9060800160405180910390a150509250925092565b6065546001600160a01b03163314611ae95760405162461bcd60e51b81526004016106c2906123a0565b612710811115611b3b5760405162461bcd60e51b815260206004820152601d60248201527f526566657272616c3a20696e76616c696420746f74616c52656261746500000060448201526064016106c2565b6000828152606a602081815260408084208151808401835286815294879052928252835190925581518581529081018490527f3badd8c132bb1c7264c8a842670580d2bdad682383a87a17638ae047444e6d20910161162b565b6065546001600160a01b03163314611bbf5760405162461bcd60e51b81526004016106c2906123a0565b81611bdc5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c6020818152604080842080546001600160a01b03908116808752606e85528387208790559087168087528387208054885295855283872080546001600160a01b0319908116909155898852606d865284882080548216905586548852848820805482169055835416811790925593879055838552606783528185208054828752838720558486529490945580518681529182019390935290917f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e97910161162b565b611cac611e3e565b60008181526070602052604090205460ff1615611cfe5760405162461bcd60e51b815260206004820152601060248201526f1554d051d157d49154d5149250d5115160821b60448201526064016106c2565b611d083382611405565b50565b611d13611e3e565b3360008181526071602052604090819020839055517f43a93d2a735e850fd5bbe43f61c22705c3d4b5b60fe8c349f72f657421b728e49161073691849061230b565b611d5d611e3e565b81611d7a5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c60205260409020546001600160a01b0316338114611dd75760405162461bcd60e51b81526020600482015260136024820152722932b332b93930b61d103337b93134b23232b760691b60448201526064016106c2565b6000838152606d602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251338152918201529081018490527fb48e9dd1d295e82e90cbbe8e05f2249fcdfab0bf75504df039330004b28078409060600161162b565b60335460ff1615610e3b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106c2565b611e8c611f13565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611ede611e3e565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611eb93390565b60335460ff16610e3b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106c2565b80356001600160a01b0381168114611f7357600080fd5b919050565b600082601f830112611f8957600080fd5b81356020611f9e611f9983612464565b612433565b80838252828201915082860187848660051b8901011115611fbe57600080fd5b60005b85811015611fe457611fd282611f5c565b84529284019290840190600101611fc1565b5090979650505050505050565b600082601f83011261200257600080fd5b81356020612012611f9983612464565b80838252828201915082860187848660051b890101111561203257600080fd5b60005b85811015611fe457813584529284019290840190600101612035565b80358015158114611f7357600080fd5b60006020828403121561207357600080fd5b61207c82611f5c565b9392505050565b6000806040838503121561209657600080fd5b61209f83611f5c565b91506120ad60208401612051565b90509250929050565b600080604083850312156120c957600080fd5b6120d283611f5c565b946020939093013593505050565b600080604083850312156120f357600080fd5b823567ffffffffffffffff8082111561210b57600080fd5b61211786838701611f78565b9350602085013591508082111561212d57600080fd5b5061213a85828601611ff1565b9150509250929050565b60008060006060848603121561215957600080fd5b833567ffffffffffffffff8082111561217157600080fd5b61217d87838801611ff1565b945060209150818601358181111561219457600080fd5b6121a088828901611f78565b9450506040860135818111156121b557600080fd5b86019050601f810187136121c857600080fd5b80356121d6611f9982612464565b8082825284820191508484018a868560051b87010111156121f657600080fd5b600094505b838510156122195780358352600194909401939185019185016121fb565b5080955050505050509250925092565b60006020828403121561223b57600080fd5b5035919050565b6000806040838503121561225557600080fd5b823591506120ad60208401611f5c565b60008060006060848603121561227a57600080fd5b8335925061228a60208501611f5c565b9150604084013590509250925092565b600080604083850312156122ad57600080fd5b823591506120ad60208401612051565b600080604083850312156122d057600080fd5b50508035926020909101359150565b6000806000606084860312156122f457600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03929092168252602082015260400190565b60208082526025908201527f526566657272616c3a20726566657272657220616c72656164792072656769736040820152641d195c995960da1b606082015260800190565b6020808252601d908201527f526566657272616c3a20636f646520616c726561647920657869737473000000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b60208082526013908201527227a7262cafa3a7ab2fa7a92fa420a7222622a960691b604082015260600190565b60208082526017908201527f526566657272616c3a20696e76616c6964205f636f6465000000000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561245c5761245c612527565b604052919050565b600067ffffffffffffffff82111561247e5761247e612527565b5060051b60200190565b6000826124a557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124c4576124c46124fb565b500290565b6000828210156124db576124db6124fb565b500390565b60006000198214156124f4576124f46124fb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a4be44de58ec70437ab7b04bef9aa6b49be1acf87e585449257baa6aa3c52abd64736f6c63430008070033","sourceMap":"206:13809:111:-:0;;;1389:53;;;;;;;;;-1:-1:-1;1413:22:111;:20;:22::i;:::-;206:13809;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:156;5998:66:24;;;198:21:156;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:156;;;338:37;5998:66:24;;;;;;392:19:156;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:156;;;6174:28:24;;;;;;552:2:156;6174:28:24;;;6074:139;5939:280::o;422:184:156:-;206:13809:111;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061025e5760003560e01c806385725b5811610146578063c762b03d116100c3578063dfcfa25011610087578063dfcfa25014610603578063e1e01bf314610616578063e51a927714610629578063fa84dc2f1461063c578063fcccd11d1461065c578063fdb41ed31461068557600080fd5b8063c762b03d1461055e578063c8b3c46014610571578063ce18b98d1461059a578063d54c95a5146105d0578063d80a619f146105f057600080fd5b8063a7ad780d1161010a578063a7ad780d146104ed578063b25305a814610500578063b35569dd14610523578063b7f1e9c614610543578063c4d66de81461054b57600080fd5b806385725b581461045857806393e2d3b41461047857806397132232146104b45780639a90031f146104c75780639cb7de4b146104da57600080fd5b80633fb8b323116101df57806356b4b2ad116101a357806356b4b2ad146103ee5780635c975abb146104015780636b3644891461040c5780637b1385ac1461041f5780638456cb5914610448578063851b16f51461045057600080fd5b80633fb8b3231461034557806346ea87af146103585780634c3347721461038b57806350e45ea8146103ab578063534ef883146103be57600080fd5b80632e5cf045116102265780632e5cf045146102fc578063308a1e771461030f5780633611d9391461032257806336def2c81461032a5780633f4ba83a1461033d57600080fd5b806312d43a51146102635780631582a018146102935780631d442517146102c1578063238df96b146102d657806325240810146102e9575b600080fd5b606554610276906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102b36102a1366004612061565b60676020526000908152604090205481565b60405190815260200161028a565b6102d46102cf366004612061565b610698565b005b6102d46102e43660046120e0565b610741565b606654610276906001600160a01b031681565b6102d461030a366004612144565b61086f565b6102d461031d3660046120b6565b610ba7565b6102d4610c44565b6102d4610338366004612229565b610d03565b6102d4610e09565b6102d46103533660046120b6565b610e3d565b61037b610366366004612061565b606b6020526000908152604090205460ff1681565b604051901515815260200161028a565b6102b3610399366004612061565b60686020526000908152604090205481565b6102d46103b936600461229a565b610ece565b6103d16103cc366004612061565b610ff1565b604080519283526001600160a01b0390911660208301520161028a565b6102d46103fc3660046120b6565b611037565b60335460ff1661037b565b6102d461041a366004612229565b611089565b6102b361042d366004612061565b6001600160a01b031660009081526068602052604090205490565b6102d46111f4565b6102d4611226565b6102b3610466366004612061565b606f6020526000908152604090205481565b61049f610486366004612229565b6069602052600090815260409020805460019091015482565b6040805192835260208301919091520161028a565b6102d46104c2366004612242565b6112e5565b6102d46104d53660046120b6565b6113c1565b6102d46104e8366004612083565b611452565b6102d46104fb366004612265565b6114d8565b61037b61050e366004612229565b60706020526000908152604090205460ff1681565b6102b3610531366004612061565b606e6020526000908152604090205481565b6102d4611638565b6102d4610559366004612061565b611715565b6102d461056c3660046122df565b611832565b61027661057f366004612229565b606c602052600090815260409020546001600160a01b031681565b6105ad6105a83660046120b6565b61197c565b604080519384526001600160a01b0390921660208401529082015260600161028a565b6102b36105de366004612061565b60716020526000908152604090205481565b6102d46105fe3660046122bd565b611abf565b6102d4610611366004612242565b611b95565b6102d4610624366004612229565b611ca4565b6102d4610637366004612229565b611d0b565b6102b361064a366004612229565b606a6020526000908152604090205481565b61027661066a366004612229565b606d602052600090815260409020546001600160a01b031681565b6102d4610693366004612242565b611d55565b6065546001600160a01b031633146106cb5760405162461bcd60e51b81526004016106c2906123a0565b60405180910390fd5b6001600160a01b0381166106de57600080fd5b606680546001600160a01b0319166001600160a01b038381169182179092556065546040805191909316815260208101919091527f28f8f8492c19a1f85e6f560618e8278240d002f8534a77be01db9eba1ca5971891015b60405180910390a150565b336000908152606b602052604090205460ff168061076957506065546001600160a01b031633145b6107855760405162461bcd60e51b81526004016106c2906123cf565b60005b825181101561086a578181815181106107a3576107a3612511565b6020026020010151606f60008584815181106107c1576107c1612511565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f183828151811061082057610820612511565b602002602001015183838151811061083a5761083a612511565b602002602001015160405161085092919061230b565b60405180910390a180610862816124e0565b915050610788565b505050565b336000908152606b602052604090205460ff168061089757506065546001600160a01b031633145b6108b35760405162461bcd60e51b81526004016106c2906123cf565b60005b8351811015610ba1576000801b8482815181106108d5576108d5612511565b602002602001015114156108fb5760405162461bcd60e51b81526004016106c2906123fc565b60006001600160a01b0316606c600086848151811061091c5761091c612511565b6020908102919091018101518252810191909152604001600020546001600160a01b03161461095d5760405162461bcd60e51b81526004016106c290612369565b6000801b606e600085848151811061097757610977612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054146109bd5760405162461bcd60e51b81526004016106c290612324565b8281815181106109cf576109cf612511565b6020026020010151606c60008684815181106109ed576109ed612511565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838181518110610a3957610a39612511565b6020026020010151606e6000858481518110610a5757610a57612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550818181518110610a9557610a95612511565b602002602001015160676000858481518110610ab357610ab3612511565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060706000868481518110610af757610af7612511565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d8029838281518110610b5757610b57612511565b6020026020010151858381518110610b7157610b71612511565b6020026020010151604051610b8792919061230b565b60405180910390a180610b99816124e0565b9150506108b6565b50505050565b336000908152606b602052604090205460ff1680610bcf57506065546001600160a01b031633145b610beb5760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b03821660009081526068602052604090819020829055517f88dbf1ad95227b72fc5331dff3dfcd0e51191478034000b820b15e9eb3cdcaa190610c38908490849061230b565b60405180910390a15050565b610c4c611e3e565b336000908152606f6020526040902054610ca85760405162461bcd60e51b815260206004820152601f60248201527f526566657272616c3a204e6f20436f646520746f2072656c697175696e73680060448201526064016106c2565b336000818152606f6020526040908190205490517fc9bdf7aea80447079a5e67a0d986bc99945fa7ba424d2c06ab394d494b8770bd92610ce992909161230b565b60405180910390a1336000908152606f6020526040812055565b610d0b611e3e565b80610d285760405162461bcd60e51b81526004016106c2906123fc565b6000818152606c60205260409020546001600160a01b031615610d5d5760405162461bcd60e51b81526004016106c290612369565b336000908152606e602052604090205415610d8a5760405162461bcd60e51b81526004016106c290612324565b6000818152606c6020908152604080832080546001600160a01b03191633908117909155808452606e83528184208590556067835281842060019055848452607090925291829020805460ff1916905590517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d80299161073691849061230b565b6065546001600160a01b03163314610e335760405162461bcd60e51b81526004016106c2906123a0565b610e3b611e84565b565b336000908152606b602052604090205460ff1680610e6557506065546001600160a01b031633145b610e815760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b03821660009081526067602052604090819020829055517f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc90610c38908490849061230b565b336000908152606b602052604090205460ff1680610ef657506065546001600160a01b031633145b610f125760405162461bcd60e51b81526004016106c2906123cf565b81610f2f5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c60205260409020546001600160a01b0316610f9f5760405162461bcd60e51b815260206004820152602360248201527f526566657272616c3a20436f6465204f776e657220446f6573204e6f742045786044820152621a5cdd60ea1b60648201526084016106c2565b600082815260706020908152604091829020805460ff19168415159081179091558251858152918201527f3f9c3a98ca92c073219c27626d123cd68be2f9bbf80ef0598e3630ab54e5b4399101610c38565b6001600160a01b0381166000908152606f6020526040812054819081811561102d57506000818152606c60205260409020546001600160a01b03165b9094909350915050565b336000908152606b602052604090205460ff168061105f57506065546001600160a01b031633145b61107b5760405162461bcd60e51b81526004016106c2906123cf565b6110858282611405565b5050565b611091611e3e565b6000818152606c6020908152604080832054606d909252909120546001600160a01b03918216911633146110fd5760405162461bcd60e51b81526020600482015260136024820152722932b332b93930b61d103337b93134b23232b760691b60448201526064016106c2565b336000818152606e6020908152604080832080548452606c80845282852080546001600160a01b031990811690915582548652606d85528386208054821690558886529084528285208054909116861790558690556001600160a01b038516808452606783528184205485855293829020939093558051928352908201929092529081018390527f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979060600160405180910390a16001600160a01b03166000818152606e60209081526040808320839055938252606d815283822080546001600160a01b0319169055918152606790915290812055565b6065546001600160a01b0316331461121e5760405162461bcd60e51b81526004016106c2906123a0565b610e3b611ed6565b61122e611e3e565b3360009081526071602052604090205461128a5760405162461bcd60e51b815260206004820152601b60248201527f526566657272616c3a204e6f20436f646520526571756573746564000000000060448201526064016106c2565b33600081815260716020526040908190205490517f51748af4fe9e894fd926cd621e287217d8d4cd9434159ef54f7ef22fc0e946f5926112cb92909161230b565b60405180910390a133600090815260716020526040812055565b6112ed611e3e565b6000828152606c60205260409020546001600160a01b031633146113405760405162461bcd60e51b815260206004820152600a6024820152694f574e45525f4f4e4c5960b01b60448201526064016106c2565b6001600160a01b038116600090815260716020526040902054821461139c5760405162461bcd60e51b815260206004820152601260248201527110d3d11157d393d517d49154555154d5115160721b60448201526064016106c2565b6113a68183611405565b6001600160a01b031660009081526071602052604081205550565b336000908152606b602052604090205460ff16806113e957506065546001600160a01b031633145b6114055760405162461bcd60e51b81526004016106c2906123cf565b6001600160a01b0382166000908152606f602052604090819020829055517f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f190610c38908490849061230b565b6065546001600160a01b0316331461147c5760405162461bcd60e51b81526004016106c2906123a0565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e9101610c38565b336000908152606b602052604090205460ff168061150057506065546001600160a01b031633145b61151c5760405162461bcd60e51b81526004016106c2906123cf565b826115395760405162461bcd60e51b81526004016106c2906123fc565b6000838152606c60205260409020546001600160a01b03161561156e5760405162461bcd60e51b81526004016106c290612369565b6001600160a01b0382166000908152606e6020526040902054156115a45760405162461bcd60e51b81526004016106c290612324565b6000838152606c6020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352606e825280832086905560678252808320849055858352607090915290819020805460ff19169055517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d80299061162b908490869061230b565b60405180910390a1505050565b6066546001600160a01b031633146116a95760405162461bcd60e51b815260206004820152602e60248201527f526566657272616c3a2063616c6c6572206973206e6f74207468652070656e6460448201526d696e6720676f7665726e616e636560901b60648201526084016106c2565b606554604080516001600160a01b0390921682523360208301527f9ada8d81c1c496b87ae7ff3b8d180bb9e2277d70e35b46c471db0b16a7daed8f910160405180910390a160668054606580546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff16158080156117355750600054600160ff909116105b8061174f5750303b15801561174f575060005460ff166001145b6117b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c2565b6000805460ff1916600117905580156117d5576000805461ff0019166101001790555b606580546001600160a01b0319166001600160a01b0384161790558015611085576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610c38565b6065546001600160a01b0316331461185c5760405162461bcd60e51b81526004016106c2906123a0565b6127108211156118ae5760405162461bcd60e51b815260206004820152601d60248201527f526566657272616c3a20696e76616c696420746f74616c52656261746500000060448201526064016106c2565b6127108111156119005760405162461bcd60e51b815260206004820152601f60248201527f526566657272616c3a20696e76616c696420646973636f756e7453686172650060448201526064016106c2565b600083815260696020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052918201839052907f318aa6da98314a0590fcdb4f5d7c73a8113f5e6b3c709c362ac106f4d0e6e42f9060600160405180910390a150505050565b600080600061198a85610ff1565b6001600160a01b0381166000908152606760209081526040808320548084526069909252909120549194509150612710906119c590876124aa565b6119cf9190612488565b6119d990866124c9565b600082815260696020526040902060010154909450612710906119fc90866124aa565b611a069190612488565b6001600160a01b0387166000908152606860209081526040808320548352606a9091528120549193509061271090611a3e90876124aa565b611a489190612488565b9050611a5481866124c9565b6001600160a01b038816600081815260686020908152604091829020548251938452908301528101839052606081018290529095507f468833fe6386b98b40e0f39fe4cafee4f56f7ab7f47e3f7839c57cf40b6e407a9060800160405180910390a150509250925092565b6065546001600160a01b03163314611ae95760405162461bcd60e51b81526004016106c2906123a0565b612710811115611b3b5760405162461bcd60e51b815260206004820152601d60248201527f526566657272616c3a20696e76616c696420746f74616c52656261746500000060448201526064016106c2565b6000828152606a602081815260408084208151808401835286815294879052928252835190925581518581529081018490527f3badd8c132bb1c7264c8a842670580d2bdad682383a87a17638ae047444e6d20910161162b565b6065546001600160a01b03163314611bbf5760405162461bcd60e51b81526004016106c2906123a0565b81611bdc5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c6020818152604080842080546001600160a01b03908116808752606e85528387208790559087168087528387208054885295855283872080546001600160a01b0319908116909155898852606d865284882080548216905586548852848820805482169055835416811790925593879055838552606783528185208054828752838720558486529490945580518681529182019390935290917f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e97910161162b565b611cac611e3e565b60008181526070602052604090205460ff1615611cfe5760405162461bcd60e51b815260206004820152601060248201526f1554d051d157d49154d5149250d5115160821b60448201526064016106c2565b611d083382611405565b50565b611d13611e3e565b3360008181526071602052604090819020839055517f43a93d2a735e850fd5bbe43f61c22705c3d4b5b60fe8c349f72f657421b728e49161073691849061230b565b611d5d611e3e565b81611d7a5760405162461bcd60e51b81526004016106c2906123fc565b6000828152606c60205260409020546001600160a01b0316338114611dd75760405162461bcd60e51b81526020600482015260136024820152722932b332b93930b61d103337b93134b23232b760691b60448201526064016106c2565b6000838152606d602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251338152918201529081018490527fb48e9dd1d295e82e90cbbe8e05f2249fcdfab0bf75504df039330004b28078409060600161162b565b60335460ff1615610e3b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106c2565b611e8c611f13565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611ede611e3e565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611eb93390565b60335460ff16610e3b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106c2565b80356001600160a01b0381168114611f7357600080fd5b919050565b600082601f830112611f8957600080fd5b81356020611f9e611f9983612464565b612433565b80838252828201915082860187848660051b8901011115611fbe57600080fd5b60005b85811015611fe457611fd282611f5c565b84529284019290840190600101611fc1565b5090979650505050505050565b600082601f83011261200257600080fd5b81356020612012611f9983612464565b80838252828201915082860187848660051b890101111561203257600080fd5b60005b85811015611fe457813584529284019290840190600101612035565b80358015158114611f7357600080fd5b60006020828403121561207357600080fd5b61207c82611f5c565b9392505050565b6000806040838503121561209657600080fd5b61209f83611f5c565b91506120ad60208401612051565b90509250929050565b600080604083850312156120c957600080fd5b6120d283611f5c565b946020939093013593505050565b600080604083850312156120f357600080fd5b823567ffffffffffffffff8082111561210b57600080fd5b61211786838701611f78565b9350602085013591508082111561212d57600080fd5b5061213a85828601611ff1565b9150509250929050565b60008060006060848603121561215957600080fd5b833567ffffffffffffffff8082111561217157600080fd5b61217d87838801611ff1565b945060209150818601358181111561219457600080fd5b6121a088828901611f78565b9450506040860135818111156121b557600080fd5b86019050601f810187136121c857600080fd5b80356121d6611f9982612464565b8082825284820191508484018a868560051b87010111156121f657600080fd5b600094505b838510156122195780358352600194909401939185019185016121fb565b5080955050505050509250925092565b60006020828403121561223b57600080fd5b5035919050565b6000806040838503121561225557600080fd5b823591506120ad60208401611f5c565b60008060006060848603121561227a57600080fd5b8335925061228a60208501611f5c565b9150604084013590509250925092565b600080604083850312156122ad57600080fd5b823591506120ad60208401612051565b600080604083850312156122d057600080fd5b50508035926020909101359150565b6000806000606084860312156122f457600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03929092168252602082015260400190565b60208082526025908201527f526566657272616c3a20726566657272657220616c72656164792072656769736040820152641d195c995960da1b606082015260800190565b6020808252601d908201527f526566657272616c3a20636f646520616c726561647920657869737473000000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b60208082526013908201527227a7262cafa3a7ab2fa7a92fa420a7222622a960691b604082015260600190565b60208082526017908201527f526566657272616c3a20696e76616c6964205f636f6465000000000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561245c5761245c612527565b604052919050565b600067ffffffffffffffff82111561247e5761247e612527565b5060051b60200190565b6000826124a557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124c4576124c46124fb565b500290565b6000828210156124db576124db6124fb565b500390565b60006000198214156124f4576124f46124fb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a4be44de58ec70437ab7b04bef9aa6b49be1acf87e585449257baa6aa3c52abd64736f6c63430008070033","sourceMap":"206:13809:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:18;;;;;-1:-1:-1;;;;;370:18:111;;;;;;-1:-1:-1;;;;;6614:32:156;;;;6596:51;;6584:2;6569:18;370::111;;;;;;;;426:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8954:25:156;;;8942:2;8927:18;426:57:111;8808:177:156;2088:188:111;;;;;;:::i;:::-;;:::i;:::-;;13710:303;;;;;;:::i;:::-;;:::i;394:25::-;;;;;-1:-1:-1;;;;;394:25:111;;;12937:696;;;;;;:::i;:::-;;:::i;5064:172::-;;;;;;:::i;:::-;;:::i;6384:284::-;;;:::i;6821:526::-;;;;;;:::i;:::-;;:::i;2810:63::-;;;:::i;4369:197::-;;;;;;:::i;:::-;;:::i;659:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8781:14:156;;8774:22;8756:41;;8744:2;8729:18;659:41:111;8616:187:156;489:46:111;;;;;;:::i;:::-;;;;;;;;;;;;;;7418:329;;;;;;:::i;:::-;;:::i;11448:302::-;;;;;;:::i;:::-;;:::i;:::-;;;;9164:25:156;;;-1:-1:-1;;;;;9225:32:156;;;;9220:2;9205:18;;9198:60;9137:18;11448:302:111;8990:274:156;4723:155:111;;;;;;:::i;:::-;;:::i;1858:84:25:-;1928:7;;;;1858:84;;8436:624:111;;;;;;:::i;:::-;;:::i;11119:111::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11203:20:111;11176:9;11203:20;;;:11;:20;;;;;;;11119:111;2692:59;;;:::i;6129:249::-;;;:::i;870:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;541:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;16992:25:156;;;17048:2;17033:18;;17026:34;;;;16965:18;541:53:111;16818:248:156;5632:318:111;;;;;;:::i;:::-;;:::i;12666:194::-;;;;;;:::i;:::-;;:::i;2470:165::-;;;;;;:::i;:::-;;:::i;12071:518::-;;;;;;:::i;:::-;;:::i;939:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;824:40;;;;;;:::i;:::-;;;;;;;;;;;;;;1698:242;;;:::i;1449:82::-;;;;;;:::i;:::-;;:::i;3098:552::-;;;;;;:::i;:::-;;:::i;706:54::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;706:54:111;;;10174:859;;;;;;:::i;:::-;;:::i;:::-;;;;16670:25:156;;;-1:-1:-1;;;;;16731:32:156;;;;16726:2;16711:18;;16704:60;16780:18;;;16773:34;16658:2;16643:18;10174:859:111;16468:345:156;986:46:111;;;;;;:::i;:::-;;;;;;;;;;;;;;3815:387;;;;;;:::i;:::-;;:::i;9218:607::-;;;;;;:::i;:::-;;:::i;5363:189::-;;;;;;:::i;:::-;;:::i;5956:167::-;;;;;;:::i;:::-;;:::i;600:53::-;;;;;;:::i;:::-;;;;;;;;;;;;;;766:52;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;766:52:111;;;7919:396;;;;;;:::i;:::-;;:::i;2088:188::-;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2169:21:111;::::1;2161:30;;;::::0;::::1;;2201:10;:20:::0;;-1:-1:-1;;;;;;2201:20:111::1;-1:-1:-1::0;;;;;2201:20:111;;::::1;::::0;;::::1;::::0;;;2257:3:::1;::::0;2236:33:::1;::::0;;2257:3;;;::::1;6870:34:156::0;;6935:2;6920:18;;6913:43;;;;2236:33:111::1;::::0;6805:18:156;2236:33:111::1;;;;;;;;2088:188:::0;:::o;13710:303::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;13842:6:::1;13838:169;13853:8;:15;13850:1;:18;13838:169;;;13923:6;13930:1;13923:9;;;;;;;;:::i;:::-;;;;;;;13888:19;:32;13908:8;13917:1;13908:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13888:32:111::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13888:32:111;:44;13973:11;;13951:45:::1;::::0;13973:11;;13982:1;;13973:11;::::1;;;;;:::i;:::-;;;;;;;13986:6;13993:1;13986:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13951:45:::1;::::0;;-1:-1:-1;;;;;7828:32:156;;;;7810:51;;7877:18;;;7870:34;13951:45:111;;;;;;;;::::1;13870:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13838:169;;;;13710:303:::0;;:::o;12937:696::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;13076:6:::1;13072:554;13087:6;:13;13084:1;:16;13072:554;;;13149:1;13141:10:::0;::::1;13128:6;13135:1;13128:9;;;;;;;;:::i;:::-;;;;;;;:23;;13120:59;;;::::0;-1:-1:-1;;;13120:59:111;;::::1;::::0;::::1;;;:::i;:::-;13212:9:::0;;13234:1:::1;::::0;13201:10:::1;::::0;13234:1;;13212:6;;13219:1;;13212:9;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13201:21;;;::::1;::::0;;;;;;-1:-1:-1;13201:21:111;;-1:-1:-1;;;;;13201:21:111::1;:35;13193:77;;;::::0;-1:-1:-1;;;13193:77:111;;::::1;::::0;::::1;;;:::i;:::-;13321:1;13313:10:::0;::::1;13292:5;:17;13298:7;13306:1;13298:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13292:17:111::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13292:17:111;;:31:::1;13284:80;;;::::0;-1:-1:-1;;;13284:80:111;;::::1;::::0;::::1;;;:::i;:::-;13403:7;13411:1;13403:10;;;;;;;;:::i;:::-;;;;;;;13379;:21;13390:6;13397:1;13390:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13379:21;;;::::1;::::0;;;;;;-1:-1:-1;13379:21:111;:34;;-1:-1:-1;;;;;;13379:34:111::1;-1:-1:-1::0;;;;;13379:34:111;;;::::1;::::0;;;::::1;::::0;;13448:9;;;;13455:1;;13448:9;::::1;;;;;:::i;:::-;;;;;;;13427:5;:17;13433:7;13441:1;13433:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13427:17:111::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13427:17:111;:30;13499:6;;;;13503:1;;13499:6;::::1;;;;;:::i;:::-;;;;;;;13471:13;:25;13485:7;13493:1;13485:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;13471:25:111::1;-1:-1:-1::0;;;;;13471:25:111::1;;;;;;;;;;;;:34;;;;13543:5;13519:9;:20;13529:6;13536:1;13529:9;;;;;;;;:::i;:::-;;;;;;;13519:20;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13580:35;13593:7;13601:1;13593:10;;;;;;;;:::i;:::-;;;;;;;13605:6;13612:1;13605:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13580:35:::1;::::0;;-1:-1:-1;;;;;7828:32:156;;;;7810:51;;7877:18;;;7870:34;13580:35:111;;;;;;;;::::1;13102:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13072:554;;;;12937:696:::0;;;:::o;5064:172::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;5152:20:111;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;:29;;;5196:33;;7810:51:156;;;7877:18;;7870:34;;;5196:33:111::1;::::0;7783:18:156;5196:33:111::1;;;;;;;;5064:172:::0;;:::o;6384:284::-;1482:19:25;:17;:19::i;:::-;6470:10:111::1;6493:1;6450:31:::0;;;:19:::1;:31;::::0;;;;;6442:89:::1;;;::::0;-1:-1:-1;;;6442:89:111;;10697:2:156;6442:89:111::1;::::0;::::1;10679:21:156::0;10736:2;10716:18;;;10709:30;10775:33;10755:18;;;10748:61;10826:18;;6442:89:111::1;10495:355:156::0;6442:89:111::1;6563:10;6575:31;::::0;;;:19:::1;:31;::::0;;;;;;;;;6546:61;;7810:51:156;;;7877:18;;;7870:34;6546:61:111::1;::::0;7783:18:156;6546:61:111::1;;;;;;;6637:10;6659:1;6617:31:::0;;;:19:::1;:31;::::0;;;;:44;6384:284::o;6821:526::-;1482:19:25;:17;:19::i;:::-;6899::111;6891:55:::1;;;::::0;-1:-1:-1;;;6891:55:111;;::::1;::::0;::::1;;;:::i;:::-;6993:1;6964:17:::0;;;:10:::1;:17;::::0;;;;;-1:-1:-1;;;;;6964:17:111::1;:31:::0;6956:73:::1;;;::::0;-1:-1:-1;;;6956:73:111;;::::1;::::0;::::1;;;:::i;:::-;7053:10;7076:1;7047:17:::0;;;:5:::1;:17;::::0;;;;;:31;7039:80:::1;;;::::0;-1:-1:-1;;;7039:80:111;;::::1;::::0;::::1;;;:::i;:::-;7130:17;::::0;;;:10:::1;:17;::::0;;;;;;;:30;;-1:-1:-1;;;;;;7130:30:111::1;7150:10;7130:30:::0;;::::1;::::0;;;7170:17;;;:5:::1;:17:::0;;;;;:26;;;7206:13:::1;:25:::0;;;;;-1:-1:-1;7206:44:111;;7260:16;;;:9:::1;:16:::0;;;;;;:25;;-1:-1:-1;;7260:25:111::1;::::0;;7309:31;;7810:51:156;;;7877:18;;;7870:34;;;7309:31:111::1;::::0;7783:18:156;7309:31:111::1;7636:274:156::0;2810:63:111;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;2856:10:::1;:8;:10::i;:::-;2810:63::o:0;4369:197::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;4475:24:111;::::1;;::::0;;;:13:::1;:24;::::0;;;;;;;;:34;;;4524:35;;7810:51:156;;;7877:18;;7870:34;;;4524:35:111::1;::::0;7783:18:156;4524:35:111::1;7636:274:156::0;7418:329:111;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;7518:19;7510:55:::1;;;::::0;-1:-1:-1;;;7510:55:111;;::::1;::::0;::::1;;;:::i;:::-;7612:1;7583:17:::0;;;:10:::1;:17;::::0;;;;;-1:-1:-1;;;;;7583:17:111::1;7575:79;;;::::0;-1:-1:-1;;;7575:79:111;;16084:2:156;7575:79:111::1;::::0;::::1;16066:21:156::0;16123:2;16103:18;;;16096:30;16162:34;16142:18;;;16135:62;-1:-1:-1;;;16213:18:156;;;16206:33;16256:19;;7575:79:111::1;15882:399:156::0;7575:79:111::1;7665:16;::::0;;;:9:::1;:16;::::0;;;;;;;;:29;;-1:-1:-1;;7665:29:111::1;::::0;::::1;;::::0;;::::1;::::0;;;7710:30;;9437:25:156;;;9478:18;;;9471:50;7710:30:111::1;::::0;9410:18:156;7710:30:111::1;9269:258:156::0;11448:302:111;-1:-1:-1;;;;;11570:29:111;;11527:7;11570:29;;;:19;:29;;;;;;11527:7;;;11639:18;;11635:76;;-1:-1:-1;11684:16:111;;;;:10;:16;;;;;;-1:-1:-1;;;;;11684:16:111;11635:76;11728:4;;11734:8;;-1:-1:-1;11448:302:111;-1:-1:-1;;11448:302:111:o;4723:155::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;4832:39:::1;4855:8;4865:5;4832:22;:39::i;:::-;4723:155:::0;;:::o;8436:624::-;1482:19:25;:17;:19::i;:::-;8522:16:111::1;8541:17:::0;;;:10:::1;:17;::::0;;;;;;;;8576::::1;:24:::0;;;;;;;-1:-1:-1;;;;;8541:17:111;;::::1;::::0;8576:24:::1;8604:10;8576:38;8568:70;;;::::0;-1:-1:-1;;;8568:70:111;;12861:2:156;8568:70:111::1;::::0;::::1;12843:21:156::0;12900:2;12880:18;;;12873:30;-1:-1:-1;;;12919:18:156;;;12912:49;12978:18;;8568:70:111::1;12659:343:156::0;8568:70:111::1;8673:10;8656:29;8667:17:::0;;;:5:::1;:17;::::0;;;;;;;;;8656:29;;:10:::1;:29:::0;;;;;;8649:36;;-1:-1:-1;;;;;;8649:36:111;;::::1;::::0;;;8720:17;;8702:36;;:17:::1;:36:::0;;;;;8695:43;;;::::1;::::0;;8757:17;;;;;;;;;:30;;;;::::1;::::0;::::1;::::0;;8797:25;;;-1:-1:-1;;;;;8860:23:111;::::1;::::0;;;:13:::1;:23:::0;;;;;;8832:25;;;;;;;:51;;;;8898:41;;7207:34:156;;;7257:18;;;7250:43;;;;7309:18;;;7302:34;;;8898:41:111;;::::1;::::0;;;;7157:2:156;8898:41:111;;::::1;-1:-1:-1::0;;;;;8957:15:111::1;;::::0;;;:5:::1;:15;::::0;;;;;;;8950:22;;;8989:24;;;:17:::1;:24:::0;;;;;8982:31;;-1:-1:-1;;;;;;8982:31:111::1;::::0;;9030:23;;;:13:::1;:23:::0;;;;;;9023:30;8436:624::o;2692:59::-;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;2736:8:::1;:6;:8::i;6129:249::-:0;1482:19:25;:17;:19::i;:::-;6206:10:111::1;6229:1;6194:23:::0;;;:11:::1;:23;::::0;;;;;6186:77:::1;;;::::0;-1:-1:-1;;;6186:77:111;;11057:2:156;6186:77:111::1;::::0;::::1;11039:21:156::0;11096:2;11076:18;;;11069:30;11135:29;11115:18;;;11108:57;11182:18;;6186:77:111::1;10855:351:156::0;6186:77:111::1;6295:10;6307:23;::::0;;;:11:::1;:23;::::0;;;;;;;;;6278:53;;7810:51:156;;;7877:18;;;7870:34;6278:53:111::1;::::0;7783:18:156;6278:53:111::1;;;;;;;6360:10;6348:23;::::0;;;:11:::1;:23;::::0;;;;6341:30;6129:249::o;5632:318::-;1482:19:25;:17;:19::i;:::-;5742:17:111::1;::::0;;;:10:::1;:17;::::0;;;;;-1:-1:-1;;;;;5742:17:111::1;5763:10;5742:31;5734:54;;;::::0;-1:-1:-1;;;5734:54:111;;11413:2:156;5734:54:111::1;::::0;::::1;11395:21:156::0;11452:2;11432:18;;;11425:30;-1:-1:-1;;;11471:18:156;;;11464:40;11521:18;;5734:54:111::1;11211:334:156::0;5734:54:111::1;-1:-1:-1::0;;;;;5806:20:111;::::1;;::::0;;;:11:::1;:20;::::0;;;;;:29;::::1;5798:60;;;::::0;-1:-1:-1;;;5798:60:111;;15737:2:156;5798:60:111::1;::::0;::::1;15719:21:156::0;15776:2;15756:18;;;15749:30;-1:-1:-1;;;15795:18:156;;;15788:48;15853:18;;5798:60:111::1;15535:342:156::0;5798:60:111::1;5868:38;5891:7;5900:5;5868:22;:38::i;:::-;-1:-1:-1::0;;;;;5923:20:111::1;;::::0;;;:11:::1;:20;::::0;;;;5916:27;-1:-1:-1;5632:318:111:o;12666:194::-;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;12765:28:111;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:36;;;12816:37;;7810:51:156;;;7877:18;;7870:34;;;12816:37:111::1;::::0;7783:18:156;12816:37:111::1;7636:274:156::0;2470:165:111;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;2551:19:111;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;;:31;;-1:-1:-1;;2551:31:111::1;::::0;::::1;;::::0;;::::1;::::0;;;2597;;7515:51:156;;;7582:18;;;7575:50;2597:31:111::1;::::0;7488:18:156;2597:31:111::1;7347:284:156::0;12071:518:111;1309:10;1299:21;;;;:9;:21;;;;;;;;;:42;;-1:-1:-1;1338:3:111;;-1:-1:-1;;;;;1338:3:111;1324:10;:17;1299:42;1291:74;;;;-1:-1:-1;;;1291:74:111;;;;;;;:::i;:::-;12175:19;12167:55:::1;;;::::0;-1:-1:-1;;;12167:55:111;;::::1;::::0;::::1;;;:::i;:::-;12269:1;12240:17:::0;;;:10:::1;:17;::::0;;;;;-1:-1:-1;;;;;12240:17:111::1;:31:::0;12232:73:::1;;;::::0;-1:-1:-1;;;12232:73:111;;::::1;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;12323:13:111;::::1;12348:1;12323:13:::0;;;:5:::1;:13;::::0;;;;;:27;12315:76:::1;;;::::0;-1:-1:-1;;;12315:76:111;;::::1;::::0;::::1;;;:::i;:::-;12402:17;::::0;;;:10:::1;:17;::::0;;;;;;;:26;;-1:-1:-1;;;;;;12402:26:111::1;-1:-1:-1::0;;;;;12402:26:111;::::1;::::0;;::::1;::::0;;;12438:13;;;:5:::1;:13:::0;;;;;:22;;;12470:13:::1;:21:::0;;;;;:26;;;12506:16;;;:9:::1;:16:::0;;;;;;:25;;-1:-1:-1;;12506:25:111::1;::::0;;12555:27;;7810:51:156;;;7877:18;;;7870:34;;;12555:27:111::1;::::0;7783:18:156;12555:27:111::1;;;;;;;;12071:518:::0;;;:::o;1698:242::-;1754:10;;-1:-1:-1;;;;;1754:10:111;1768;1754:24;1746:83;;;;-1:-1:-1;;;1746:83:111;;9933:2:156;1746:83:111;;;9915:21:156;9972:2;9952:18;;;9945:30;10011:34;9991:18;;;9984:62;-1:-1:-1;;;10062:18:156;;;10055:44;10116:19;;1746:83:111;9731:410:156;1746:83:111;1864:3;;1844:36;;;-1:-1:-1;;;;;1864:3:111;;;6870:34:156;;1869:10:111;6935:2:156;6920:18;;6913:43;1844:36:111;;;;;;;;;;;;1896:10;;;1890:3;:16;;-1:-1:-1;;;;;1896:10:111;;-1:-1:-1;;;;;;1890:16:111;;;;;;;1916:17;;;1698:242::o;1449:82::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;13927:2:156;3325:201:24;;;13909:21:156;13966:2;13946:18;;;13939:30;14005:34;13985:18;;;13978:62;-1:-1:-1;;;14056:18:156;;;14049:44;14110:19;;3325:201:24;13725:410:156;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;1514:3:111::1;:10:::0;;-1:-1:-1;;;;;;1514:10:111::1;-1:-1:-1::0;;;;;1514:10:111;::::1;;::::0;;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;9684:36:156;;3721:14:24;;9672:2:156;9657:18;3721:14:24;9532:194:156;3098:552:111;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;306:5:::1;3232:15;:32;;3224:74;;;::::0;-1:-1:-1;;;3224:74:111;;13209:2:156;3224:74:111::1;::::0;::::1;13191:21:156::0;13248:2;13228:18;;;13221:30;13287:31;13267:18;;;13260:59;13336:18;;3224:74:111::1;13007:353:156::0;3224:74:111::1;306:5;3316:13;:30;;3308:74;;;::::0;-1:-1:-1;;;3308:74:111;;13567:2:156;3308:74:111::1;::::0;::::1;13549:21:156::0;13606:2;13586:18;;;13579:30;13645:33;13625:18;;;13618:61;13696:18;;3308:74:111::1;13365:355:156::0;3308:74:111::1;3393:24;3420:22:::0;;;:13:::1;:22;::::0;;;;;;;3393:49;;;;::::1;::::0;;3452:37;;;3393:49;;::::1;3499:33:::0;;;3542:22;;;;;;;:29;;;;;;3393:49:::1;::::0;;::::1;3542:29:::0;;;;3587:56;;17273:25:156;;;17314:18;;;17307:34;;;17357:18;;;17350:34;;;3393:49:111;3587:56:::1;::::0;17261:2:156;17246:18;3587:56:111::1;;;;;;;3214:436;3098:552:::0;;;:::o;10174:859::-;10284:27;10313:16;10331;10374:31;10396:8;10374:21;:31::i;:::-;-1:-1:-1;;;;;10430:23:111;;10415:12;10430:23;;;:13;:23;;;;;;;;;10503:22;;;:13;:22;;;;;;:37;10430:23;;-1:-1:-1;10430:23:111;-1:-1:-1;306:5:111;;10496:44;;:4;:44;:::i;:::-;10495:62;;;;:::i;:::-;10488:69;;:4;:69;:::i;:::-;10607:22;;;;:13;:22;;;;;:35;;;10463:94;;-1:-1:-1;306:5:111;;10582:60;;10463:94;10582:60;:::i;:::-;10581:78;;;;:::i;:::-;-1:-1:-1;;;;;10804:21:111;;10746:16;10804:21;;;:11;:21;;;;;;;;;10790:36;;:13;:36;;;;;:51;10567:92;;-1:-1:-1;10746:16:111;306:5;;10765:76;;:22;:76;:::i;:::-;:92;;;;:::i;:::-;10746:111;-1:-1:-1;10892:36:111;10746:111;10892:22;:36;:::i;:::-;-1:-1:-1;;;;;10965:21:111;;;;;;:11;:21;;;;;;;;;;10944:80;;8425:51:156;;;8492:18;;;8485:34;8535:18;;;8528:34;;;8593:2;8578:18;;8571:34;;;10944:80:111;8571:34:156;;-1:-1:-1;10944:80:111;;;;;;8412:3:156;10944:80:111;;;10349:684;;10174:859;;;;;:::o;3815:387::-;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;306:5:::1;3926:15;:32;;3918:74;;;::::0;-1:-1:-1;;;3918:74:111;;13209:2:156;3918:74:111::1;::::0;::::1;13191:21:156::0;13248:2;13228:18;;;13221:30;13287:31;13267:18;;;13260:59;13336:18;;3918:74:111::1;13007:353:156::0;3918:74:111::1;4003:24;4030:22:::0;;;:13:::1;:22;::::0;;;;;;;4003:49;;;;::::1;::::0;;4062:37;;;4109:22;;;;;;;:29;;;;;4154:41;;16992:25:156;;;17033:18;;;17026:34;;;4154:41:111::1;::::0;16965:18:156;4154:41:111::1;16818:248:156::0;9218:607:111;1200:3;;-1:-1:-1;;;;;1200:3:111;1186:10;:17;1178:51;;;;-1:-1:-1;;;1178:51:111;;;;;;;:::i;:::-;9323:19;9315:55:::1;;;::::0;-1:-1:-1;;;9315:55:111;;::::1;::::0;::::1;;;:::i;:::-;9381:15;9399:17:::0;;;:10:::1;:17;::::0;;;;;;;;;-1:-1:-1;;;;;9399:17:111;;::::1;9433:14:::0;;;:5:::1;:14:::0;;;;;9426:21;;;9475:18;;::::1;::::0;;;;;;;;9464:30;;;;;;;;9457:37;;-1:-1:-1;;;;;;9457:37:111;;::::1;::::0;;;9511:24;;;:17:::1;:24:::0;;;;;9504:31;;;::::1;::::0;;9570:18;;9552:37;;;;;9545:44;;;::::1;::::0;;9600:31;;::::1;::::0;::::1;::::0;;;9641:26;;;;9706:22;;;:13:::1;:22:::0;;;;;;;9677:26;;;;;;:51;9746:22;;;9739:29;;;;9783:35;;9164:25:156;;;9205:18;;;9198:60;;;;9399:17:111;;9783:35:::1;::::0;9137:18:156;9783:35:111::1;8990:274:156::0;5363:189:111;1482:19:25;:17;:19::i;:::-;5457:16:111::1;::::0;;;:9:::1;:16;::::0;;;;;::::1;;5456:17;5448:46;;;::::0;-1:-1:-1;;;5448:46:111;;15392:2:156;5448:46:111::1;::::0;::::1;15374:21:156::0;15431:2;15411:18;;;15404:30;-1:-1:-1;;;15450:18:156;;;15443:46;15506:18;;5448:46:111::1;15190:340:156::0;5448:46:111::1;5504:41;5527:10;5539:5;5504:22;:41::i;:::-;5363:189:::0;:::o;5956:167::-;1482:19:25;:17;:19::i;:::-;6043:10:111::1;6031:23;::::0;;;:11:::1;:23;::::0;;;;;;;;:31;;;6077:39;;7810:51:156;;;7877:18;;7870:34;;;6077:39:111::1;::::0;7783:18:156;6077:39:111::1;7636:274:156::0;7919:396:111;1482:19:25;:17;:19::i;:::-;8037::111;8029:55:::1;;;::::0;-1:-1:-1;;;8029:55:111;;::::1;::::0;::::1;;;:::i;:::-;8095:15;8113:17:::0;;;:10:::1;:17;::::0;;;;;-1:-1:-1;;;;;8113:17:111::1;8148:10;:21:::0;::::1;8140:53;;;::::0;-1:-1:-1;;;8140:53:111;;12861:2:156;8140:53:111::1;::::0;::::1;12843:21:156::0;12900:2;12880:18;;;12873:30;-1:-1:-1;;;12919:18:156;;;12912:49;12978:18;;8140:53:111::1;12659:343:156::0;8140:53:111::1;8204:24;::::0;;;:17:::1;:24;::::0;;;;;;;;:38;;-1:-1:-1;;;;;;8204:38:111::1;-1:-1:-1::0;;;;;8204:38:111;::::1;::::0;;::::1;::::0;;;8257:51;;8277:10:::1;7207:34:156::0;;7257:18;;;7250:43;7309:18;;;7302:34;;;8257:51:111::1;::::0;7157:2:156;7142:18;8257:51:111::1;6967:375:156::0;2010:106:25;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:25;;12516:2:156;2071:38:25;;;12498:21:156;12555:2;12535:18;;;12528:30;-1:-1:-1;;;12574:18:156;;;12567:46;12630:18;;2071:38:25;12314:340:156;2676:117:25;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:25::1;::::0;;2764:22:::1;929:10:38::0;2773:12:25::1;2764:22;::::0;;-1:-1:-1;;;;;6614:32:156;;;;6596:51;;2764:22:25;;;;;6584:2:156;2764:22:25;;::::1;2676:117::o:0;2429:115::-;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:25::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:38::0;;850:96;2188:106:25;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:25;;10348:2:156;2246:41:25;;;10330:21:156;10387:2;10367:18;;;10360:30;-1:-1:-1;;;10406:18:156;;;10399:50;10466:18;;2246:41:25;10146:344:156;14:173;82:20;;-1:-1:-1;;;;;131:31:156;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:679::-;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;353:6;340:20;379:4;403:60;419:43;459:2;419:43;:::i;:::-;403:60;:::i;:::-;485:3;509:2;504:3;497:15;537:2;532:3;528:12;521:19;;572:2;564:6;560:15;624:3;619:2;613;610:1;606:10;598:6;594:23;590:32;587:41;584:61;;;641:1;638;631:12;584:61;663:1;673:169;687:2;684:1;681:9;673:169;;;744:23;763:3;744:23;:::i;:::-;732:36;;788:12;;;;820;;;;705:1;698:9;673:169;;;-1:-1:-1;860:5:156;;192:679;-1:-1:-1;;;;;;;192:679:156:o;876:673::-;930:5;983:3;976:4;968:6;964:17;960:27;950:55;;1001:1;998;991:12;950:55;1037:6;1024:20;1063:4;1087:60;1103:43;1143:2;1103:43;:::i;1087:60::-;1169:3;1193:2;1188:3;1181:15;1221:2;1216:3;1212:12;1205:19;;1256:2;1248:6;1244:15;1308:3;1303:2;1297;1294:1;1290:10;1282:6;1278:23;1274:32;1271:41;1268:61;;;1325:1;1322;1315:12;1268:61;1347:1;1357:163;1371:2;1368:1;1365:9;1357:163;;;1428:17;;1416:30;;1466:12;;;;1498;;;;1389:1;1382:9;1357:163;;1554:160;1619:20;;1675:13;;1668:21;1658:32;;1648:60;;1704:1;1701;1694:12;1719:186;1778:6;1831:2;1819:9;1810:7;1806:23;1802:32;1799:52;;;1847:1;1844;1837:12;1799:52;1870:29;1889:9;1870:29;:::i;:::-;1860:39;1719:186;-1:-1:-1;;;1719:186:156:o;1910:254::-;1975:6;1983;2036:2;2024:9;2015:7;2011:23;2007:32;2004:52;;;2052:1;2049;2042:12;2004:52;2075:29;2094:9;2075:29;:::i;:::-;2065:39;;2123:35;2154:2;2143:9;2139:18;2123:35;:::i;:::-;2113:45;;1910:254;;;;;:::o;2169:::-;2237:6;2245;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;2337:29;2356:9;2337:29;:::i;:::-;2327:39;2413:2;2398:18;;;;2385:32;;-1:-1:-1;;;2169:254:156:o;2687:595::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2922:9;2909:23;2951:18;2992:2;2984:6;2981:14;2978:34;;;3008:1;3005;2998:12;2978:34;3031:61;3084:7;3075:6;3064:9;3060:22;3031:61;:::i;:::-;3021:71;;3145:2;3134:9;3130:18;3117:32;3101:48;;3174:2;3164:8;3161:16;3158:36;;;3190:1;3187;3180:12;3158:36;;3213:63;3268:7;3257:8;3246:9;3242:24;3213:63;:::i;:::-;3203:73;;;2687:595;;;;;:::o;3287:1375::-;3439:6;3447;3455;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3564:9;3551:23;3593:18;3634:2;3626:6;3623:14;3620:34;;;3650:1;3647;3640:12;3620:34;3673:61;3726:7;3717:6;3706:9;3702:22;3673:61;:::i;:::-;3663:71;;3753:2;3743:12;;3808:2;3797:9;3793:18;3780:32;3837:2;3827:8;3824:16;3821:36;;;3853:1;3850;3843:12;3821:36;3876:63;3931:7;3920:8;3909:9;3905:24;3876:63;:::i;:::-;3866:73;;;3992:2;3981:9;3977:18;3964:32;4021:2;4011:8;4008:16;4005:36;;;4037:1;4034;4027:12;4005:36;4060:24;;;-1:-1:-1;4115:4:156;4107:13;;4103:27;-1:-1:-1;4093:55:156;;4144:1;4141;4134:12;4093:55;4180:2;4167:16;4203:60;4219:43;4259:2;4219:43;:::i;4203:60::-;4285:3;4309:2;4304:3;4297:15;4337:2;4332:3;4328:12;4321:19;;4368:2;4364;4360:11;4416:7;4411:2;4405;4402:1;4398:10;4394:2;4390:19;4386:28;4383:41;4380:61;;;4437:1;4434;4427:12;4380:61;4459:1;4450:10;;4469:163;4483:2;4480:1;4477:9;4469:163;;;4540:17;;4528:30;;4501:1;4494:9;;;;;4578:12;;;;4610;;4469:163;;;4473:3;4651:5;4641:15;;;;;;;3287:1375;;;;;:::o;4667:180::-;4726:6;4779:2;4767:9;4758:7;4754:23;4750:32;4747:52;;;4795:1;4792;4785:12;4747:52;-1:-1:-1;4818:23:156;;4667:180;-1:-1:-1;4667:180:156:o;4852:254::-;4920:6;4928;4981:2;4969:9;4960:7;4956:23;4952:32;4949:52;;;4997:1;4994;4987:12;4949:52;5033:9;5020:23;5010:33;;5062:38;5096:2;5085:9;5081:18;5062:38;:::i;5111:322::-;5188:6;5196;5204;5257:2;5245:9;5236:7;5232:23;5228:32;5225:52;;;5273:1;5270;5263:12;5225:52;5309:9;5296:23;5286:33;;5338:38;5372:2;5361:9;5357:18;5338:38;:::i;:::-;5328:48;;5423:2;5412:9;5408:18;5395:32;5385:42;;5111:322;;;;;:::o;5438:248::-;5503:6;5511;5564:2;5552:9;5543:7;5539:23;5535:32;5532:52;;;5580:1;5577;5570:12;5532:52;5616:9;5603:23;5593:33;;5645:35;5676:2;5665:9;5661:18;5645:35;:::i;5876:248::-;5944:6;5952;6005:2;5993:9;5984:7;5980:23;5976:32;5973:52;;;6021:1;6018;6011:12;5973:52;-1:-1:-1;;6044:23:156;;;6114:2;6099:18;;;6086:32;;-1:-1:-1;5876:248:156:o;6129:316::-;6206:6;6214;6222;6275:2;6263:9;6254:7;6250:23;6246:32;6243:52;;;6291:1;6288;6281:12;6243:52;-1:-1:-1;;6314:23:156;;;6384:2;6369:18;;6356:32;;-1:-1:-1;6435:2:156;6420:18;;;6407:32;;6129:316;-1:-1:-1;6129:316:156:o;11550:401::-;11752:2;11734:21;;;11791:2;11771:18;;;11764:30;11830:34;11825:2;11810:18;;11803:62;-1:-1:-1;;;11896:2:156;11881:18;;11874:35;11941:3;11926:19;;11550:401::o;11956:353::-;12158:2;12140:21;;;12197:2;12177:18;;;12170:30;12236:31;12231:2;12216:18;;12209:59;12300:2;12285:18;;11956:353::o;14140:345::-;14342:2;14324:21;;;14381:2;14361:18;;;14354:30;-1:-1:-1;;;14415:2:156;14400:18;;14393:51;14476:2;14461:18;;14140:345::o;14490:343::-;14692:2;14674:21;;;14731:2;14711:18;;;14704:30;-1:-1:-1;;;14765:2:156;14750:18;;14743:49;14824:2;14809:18;;14490:343::o;14838:347::-;15040:2;15022:21;;;15079:2;15059:18;;;15052:30;15118:25;15113:2;15098:18;;15091:53;15176:2;15161:18;;14838:347::o;17395:275::-;17466:2;17460:9;-1:-1:-1;;;17512:13:156;;17508:27;17496:40;;17587:22;;;17566:18;17551:34;;17548:62;17545:88;;;17613:18;;:::i;:::-;17649:2;17642:22;17395:275;;-1:-1:-1;17395:275:156:o;17675:183::-;17735:4;17768:18;17760:6;17757:30;17754:56;;;17790:18;;:::i;:::-;-1:-1:-1;17835:1:156;17831:14;17847:4;17827:25;;17675:183::o;17863:217::-;17903:1;17929;17919:132;;17973:10;17968:3;17964:20;17961:1;17954:31;18008:4;18005:1;17998:15;18036:4;18033:1;18026:15;17919:132;-1:-1:-1;18065:9:156;;17863:217::o;18085:168::-;18125:7;18191:1;18187;18183:6;18179:14;18176:1;18173:21;18168:1;18161:9;18154:17;18150:45;18147:71;;;18198:18;;:::i;:::-;-1:-1:-1;18238:9:156;;18085:168::o;18258:125::-;18298:4;18326:1;18323;18320:8;18317:34;;;18331:18;;:::i;:::-;-1:-1:-1;18368:9:156;;18258:125::o;18388:135::-;18427:3;-1:-1:-1;;18448:17:156;;18445:43;;;18468:18;;:::i;:::-;-1:-1:-1;18515:1:156;18504:13;;18388:135::o;18528:127::-;18589:10;18584:3;18580:20;18577:1;18570:31;18620:4;18617:1;18610:15;18644:4;18641:1;18634:15;18660:127;18721:10;18716:3;18712:20;18709:1;18702:31;18752:4;18749:1;18742:15;18776:4;18773:1;18766:15;18792:127;18853:10;18848:3;18844:20;18841:1;18834:31;18884:4;18881:1;18874:15;18908:4;18905:1;18898:15","linkReferences":{}},"methodIdentifiers":{"acceptCodeOwnership(bytes32)":"6b364489","acceptGovTransfer()":"b7f1e9c6","cancelRequest()":"851b16f5","codeOwners(bytes32)":"c8b3c460","codes(address)":"b35569dd","discountTiers(uint256)":"fa84dc2f","getTraderReferralInfo(address)":"534ef883","gov()":"12d43a51","govSetCodeOwner(bytes32,address)":"dfcfa250","initialize(address)":"c4d66de8","initiateGovTransfer(address)":"1d442517","isHandler(address)":"46ea87af","isPrivate(bytes32)":"b25305a8","migrateCode(bytes32,address,uint256)":"a7ad780d","migrateCodes(bytes32[],address[],uint256[])":"2e5cf045","migrateTraderReferrals(address,bytes32)":"9a90031f","migrateTraderReferrals(address[],bytes32[])":"238df96b","pause()":"8456cb59","paused()":"5c975abb","pendingCodeOwners(bytes32)":"fcccd11d","pendingGov()":"25240810","referralTiers(uint256)":"93e2d3b4","referrerTiers(address)":"1582a018","registerCode(bytes32)":"36def2c8","relinquishCode()":"3611d939","requestCode(address)":"d54c95a5","requestSpecialCode(bytes32)":"e51a9277","setDiscountTier(uint256,uint256)":"d80a619f","setHandler(address,bool)":"9cb7de4b","setPendingCodeOwnershipTransfer(bytes32,address)":"fdb41ed3","setReferralTier(uint256,uint256,uint256)":"c762b03d","setReferrerTier(address,uint256)":"3fb8b323","setTraderReferralCode(address,bytes32)":"56b4b2ad","setTraderReferralCodeByOwner(bytes32,address)":"97132232","setTraderReferralCodeByUser(bytes32)":"e1e01bf3","setTraderTier(address,uint256)":"308a1e77","traderReferralCodes(address)":"85725b58","traderReferralDiscount(address,uint256)":"ce18b98d","traderTier(address)":"7b1385ac","traderTiers(address)":"4c334772","unpause()":"3f4ba83a","updateReferral(bytes32,bool)":"50e45ea8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isSpecial\",\"type\":\"bool\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tierId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"}],\"name\":\"DiscountTierSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"traderTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeDiscount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"traderFeePostDiscount\",\"type\":\"uint256\"}],\"name\":\"Discounted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccount\",\"type\":\"address\"}],\"name\":\"GovSetCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGov\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"GovTransferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGov\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"GovTransferInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"PrivateCodeRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tierId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refRebatePct\",\"type\":\"uint256\"}],\"name\":\"ReferralTierSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"RegisterCode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"RelinquishedCode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"RequestCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"SetHandler\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetPendingCodeOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"discountShare\",\"type\":\"uint256\"}],\"name\":\"SetReferrerDiscountShare\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tierId\",\"type\":\"uint256\"}],\"name\":\"SetReferrerTier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"SetTraderReferralCode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"TraderTierUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"acceptCodeOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGovTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"codeOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"codes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"discountTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTraderReferralInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_newAccount\",\"type\":\"address\"}],\"name\":\"govSetCodeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newGov\",\"type\":\"address\"}],\"name\":\"initiateGovTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isHandler\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isPrivate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"migrateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codes\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"_owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"migrateCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_traders\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_codes\",\"type\":\"bytes32[]\"}],\"name\":\"migrateTraderReferrals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"migrateTraderReferrals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingCodeOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingGov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"referralTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeDiscountPct\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refRebatePct\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"referrerTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"registerCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relinquishCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"requestCode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"requestSpecialCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tierId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_feeDiscountPct\",\"type\":\"uint256\"}],\"name\":\"setDiscountTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_handler\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_newAccount\",\"type\":\"address\"}],\"name\":\"setPendingCodeOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tierId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_feeDiscountPct\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refRebatePct\",\"type\":\"uint256\"}],\"name\":\"setReferralTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tierId\",\"type\":\"uint256\"}],\"name\":\"setReferrerTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"setTraderReferralCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"setTraderReferralCodeByOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"}],\"name\":\"setTraderReferralCodeByUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"setTraderTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"traderReferralCodes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"name\":\"traderReferralDiscount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"traderFeesPostDiscount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rebateShare\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"traderTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"traderTiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_code\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isPrivate\",\"type\":\"bool\"}],\"name\":\"updateReferral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptCodeOwnership(bytes32)\":{\"params\":{\"_code\":\"Code which was transferred\"}},\"acceptGovTransfer()\":{\"details\":\"Only callable by the pending governance address.\"},\"getTraderReferralInfo(address)\":{\"params\":{\"_account\":\"The address of the trader\"},\"returns\":{\"_0\":\"code The referral code\",\"_1\":\"referrer The referrer address\"}},\"govSetCodeOwner(bytes32,address)\":{\"params\":{\"_code\":\"The referral code\",\"_newAccount\":\"The new owner address\"}},\"initiateGovTransfer(address)\":{\"params\":{\"_newGov\":\"The address of the new governance\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"registerCode(bytes32)\":{\"params\":{\"_code\":\"The referral code to register\"}},\"setDiscountTier(uint256,uint256)\":{\"params\":{\"_feeDiscountPct\":\"The discount percent\",\"_tierId\":\"The ID of the tier\"}},\"setHandler(address,bool)\":{\"params\":{\"_handler\":\"The address of the handler\",\"_isActive\":\"Boolean to indicate if handler is active\"}},\"setPendingCodeOwnershipTransfer(bytes32,address)\":{\"params\":{\"_code\":\"Code to be transferred\",\"_newAccount\":\"The new owner address \"}},\"setReferralTier(uint256,uint256,uint256)\":{\"params\":{\"_feeDiscountPct\":\"The discount percent\",\"_refRebatePct\":\"The rebate percent for referrer\",\"_tierId\":\"The ID of the tier\"}},\"setReferrerTier(address,uint256)\":{\"params\":{\"_referrer\":\"The address of the referrer\",\"_tierId\":\"The ID of the tier to set\"}},\"setTraderReferralCode(address,bytes32)\":{\"params\":{\"_account\":\"The address of the trader\",\"_code\":\"The referral code\"}},\"setTraderReferralCodeByUser(bytes32)\":{\"params\":{\"_code\":\"The referral code\"}},\"setTraderTier(address,uint256)\":{\"params\":{\"_tier\":\"Tier to upgrade Trader to\",\"_trader\":\"Trader Address\"}},\"traderReferralDiscount(address,uint256)\":{\"params\":{\"_account\":\"The address of the trader\",\"_fee\":\"The fee amount\"},\"returns\":{\"rebateShare\":\"The share of rebate for referrer\",\"referrer\":\"The address of the referrer\",\"traderFeesPostDiscount\":\"Trader fee post discount\"}}},\"title\":\"Referral contract \",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptCodeOwnership(bytes32)\":{\"notice\":\"Acceptabnce Code ownership transfer\"},\"acceptGovTransfer()\":{\"notice\":\"Accepts the transfer of governance to the pending governance address.\"},\"getTraderReferralInfo(address)\":{\"notice\":\"Gets the code and referrer for a trader account\"},\"govSetCodeOwner(bytes32,address)\":{\"notice\":\"Sets the code owner by governance\"},\"initiateGovTransfer(address)\":{\"notice\":\"Initiates the transfer of governance to a new address\"},\"migrateCode(bytes32,address,uint256)\":{\"notice\":\"Helper method used only during migration \"},\"migrateCodes(bytes32[],address[],uint256[])\":{\"notice\":\"Helper method used only during migration \"},\"migrateTraderReferrals(address,bytes32)\":{\"notice\":\"Helper method to set traderReferral Codes\"},\"migrateTraderReferrals(address[],bytes32[])\":{\"notice\":\"Helper method to set traderReferral Codes\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"registerCode(bytes32)\":{\"notice\":\"Register a referral code for the sender. To be called by referrer\"},\"setDiscountTier(uint256,uint256)\":{\"notice\":\"Sets the tier for Discount program\"},\"setHandler(address,bool)\":{\"notice\":\"Sets the handler for the referral system\"},\"setPendingCodeOwnershipTransfer(bytes32,address)\":{\"notice\":\"initiated Code ownership transfer\"},\"setReferralTier(uint256,uint256,uint256)\":{\"notice\":\"Sets the tier for referral program\"},\"setReferrerTier(address,uint256)\":{\"notice\":\"Sets the tier for a referrer\"},\"setTraderReferralCode(address,bytes32)\":{\"notice\":\"Sets the trader's referral code\"},\"setTraderReferralCodeByOwner(bytes32,address)\":{\"notice\":\"Ability for Owner to let traders use its code\"},\"setTraderReferralCodeByUser(bytes32)\":{\"notice\":\"Sets the trader's referral code. Callable by user. \"},\"setTraderTier(address,uint256)\":{\"notice\":\"Method to update tier of trader based on metrics such as Vol, credits etc.\"},\"traderReferralDiscount(address,uint256)\":{\"notice\":\"Returns the trader discount and referrer information\"},\"traderTier(address)\":{\"notice\":\"Public method to get discount tier for a trader\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateReferral(bytes32,bool)\":{\"notice\":\"Convert the code to a special code\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Referral.sol\":\"Referral\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"src/Referral.sol\":{\"keccak256\":\"0xfbbaacdfd3b282cb8d873d935d6f137d5593ee5a731372b62669e248ab095c8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c030bcaf83ffa7fa31ae772b40a74bebd8b4efa55961286a3e3dd311ec1afeb\",\"dweb:/ipfs/QmcpMkV7GP7NoZRetyCWB2e3GcXuXiVyN39cJRAR4QCo5u\"]},\"src/interfaces/IReferral.sol\":{\"keccak256\":\"0x18871b93f29f8128da14a0b32fd9bbfeb0a8565d5f7442b959713e5b65f9a821\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ae5569cd5f896619a93e8f4bc53e097f3cfae328982e85a5bbcee071d123e18\",\"dweb:/ipfs/QmU44zGYMWSfgAKbQ1BDibwjNMHMH51746HH75qrNhd1bN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false},{"internalType":"bool","name":"isSpecial","type":"bool","indexed":false}],"type":"event","name":"CodeUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeDiscountPct","type":"uint256","indexed":false}],"type":"event","name":"DiscountTierSet","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"uint256","name":"traderTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeDiscount","type":"uint256","indexed":false},{"internalType":"uint256","name":"traderFeePostDiscount","type":"uint256","indexed":false}],"type":"event","name":"Discounted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false},{"internalType":"address","name":"newAccount","type":"address","indexed":false}],"type":"event","name":"GovSetCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"oldGov","type":"address","indexed":false},{"internalType":"address","name":"newGov","type":"address","indexed":false}],"type":"event","name":"GovTransferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"oldGov","type":"address","indexed":false},{"internalType":"address","name":"newGov","type":"address","indexed":false}],"type":"event","name":"GovTransferInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"bytes32","name":"_code","type":"bytes32","indexed":false}],"type":"event","name":"PrivateCodeRequested","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeDiscountPct","type":"uint256","indexed":false},{"internalType":"uint256","name":"refRebatePct","type":"uint256","indexed":false}],"type":"event","name":"ReferralTierSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"RegisterCode","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"RelinquishedCode","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"bytes32","name":"_code","type":"bytes32","indexed":false}],"type":"event","name":"RequestCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOwner","type":"address","indexed":false},{"internalType":"address","name":"newOwner","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"handler","type":"address","indexed":false},{"internalType":"bool","name":"isActive","type":"bool","indexed":false}],"type":"event","name":"SetHandler","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"address","name":"newAccount","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetPendingCodeOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"referrer","type":"address","indexed":false},{"internalType":"uint256","name":"discountShare","type":"uint256","indexed":false}],"type":"event","name":"SetReferrerDiscountShare","anonymous":false},{"inputs":[{"internalType":"address","name":"referrer","type":"address","indexed":false},{"internalType":"uint256","name":"tierId","type":"uint256","indexed":false}],"type":"event","name":"SetReferrerTier","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"bytes32","name":"code","type":"bytes32","indexed":false}],"type":"event","name":"SetTraderReferralCode","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":false},{"internalType":"uint256","name":"_tier","type":"uint256","indexed":false}],"type":"event","name":"TraderTierUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"acceptCodeOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGovTransfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelRequest"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"codes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"discountTiers","outputs":[{"internalType":"uint256","name":"feeDiscountPct","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTraderReferralInfo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"govSetCodeOwner"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_newGov","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initiateGovTransfer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isPrivate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"migrateCode"},{"inputs":[{"internalType":"bytes32[]","name":"_codes","type":"bytes32[]"},{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"migrateCodes"},{"inputs":[{"internalType":"address[]","name":"_traders","type":"address[]"},{"internalType":"bytes32[]","name":"_codes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"migrateTraderReferrals"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"migrateTraderReferrals"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingCodeOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"referralTiers","outputs":[{"internalType":"uint256","name":"feeDiscountPct","type":"uint256"},{"internalType":"uint256","name":"refRebatePct","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"referrerTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"registerCode"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"relinquishCode"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"requestCode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestSpecialCode"},{"inputs":[{"internalType":"uint256","name":"_tierId","type":"uint256"},{"internalType":"uint256","name":"_feeDiscountPct","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDiscountTier"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setHandler"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPendingCodeOwnershipTransfer"},{"inputs":[{"internalType":"uint256","name":"_tierId","type":"uint256"},{"internalType":"uint256","name":"_feeDiscountPct","type":"uint256"},{"internalType":"uint256","name":"_refRebatePct","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setReferralTier"},{"inputs":[{"internalType":"address","name":"_referrer","type":"address"},{"internalType":"uint256","name":"_tierId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setReferrerTier"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setTraderReferralCode"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTraderReferralCodeByOwner"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setTraderReferralCodeByUser"},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_tier","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTraderTier"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"traderReferralCodes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"traderReferralDiscount","outputs":[{"internalType":"uint256","name":"traderFeesPostDiscount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"rebateShare","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"}],"stateMutability":"view","type":"function","name":"traderTier","outputs":[{"internalType":"uint256","name":"tier","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"traderTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"bool","name":"_isPrivate","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateReferral"}],"devdoc":{"kind":"dev","methods":{"acceptCodeOwnership(bytes32)":{"params":{"_code":"Code which was transferred"}},"acceptGovTransfer()":{"details":"Only callable by the pending governance address."},"getTraderReferralInfo(address)":{"params":{"_account":"The address of the trader"},"returns":{"_0":"code The referral code","_1":"referrer The referrer address"}},"govSetCodeOwner(bytes32,address)":{"params":{"_code":"The referral code","_newAccount":"The new owner address"}},"initiateGovTransfer(address)":{"params":{"_newGov":"The address of the new governance"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"registerCode(bytes32)":{"params":{"_code":"The referral code to register"}},"setDiscountTier(uint256,uint256)":{"params":{"_feeDiscountPct":"The discount percent","_tierId":"The ID of the tier"}},"setHandler(address,bool)":{"params":{"_handler":"The address of the handler","_isActive":"Boolean to indicate if handler is active"}},"setPendingCodeOwnershipTransfer(bytes32,address)":{"params":{"_code":"Code to be transferred","_newAccount":"The new owner address "}},"setReferralTier(uint256,uint256,uint256)":{"params":{"_feeDiscountPct":"The discount percent","_refRebatePct":"The rebate percent for referrer","_tierId":"The ID of the tier"}},"setReferrerTier(address,uint256)":{"params":{"_referrer":"The address of the referrer","_tierId":"The ID of the tier to set"}},"setTraderReferralCode(address,bytes32)":{"params":{"_account":"The address of the trader","_code":"The referral code"}},"setTraderReferralCodeByUser(bytes32)":{"params":{"_code":"The referral code"}},"setTraderTier(address,uint256)":{"params":{"_tier":"Tier to upgrade Trader to","_trader":"Trader Address"}},"traderReferralDiscount(address,uint256)":{"params":{"_account":"The address of the trader","_fee":"The fee amount"},"returns":{"rebateShare":"The share of rebate for referrer","referrer":"The address of the referrer","traderFeesPostDiscount":"Trader fee post discount"}}},"version":1},"userdoc":{"kind":"user","methods":{"acceptCodeOwnership(bytes32)":{"notice":"Acceptabnce Code ownership transfer"},"acceptGovTransfer()":{"notice":"Accepts the transfer of governance to the pending governance address."},"getTraderReferralInfo(address)":{"notice":"Gets the code and referrer for a trader account"},"govSetCodeOwner(bytes32,address)":{"notice":"Sets the code owner by governance"},"initiateGovTransfer(address)":{"notice":"Initiates the transfer of governance to a new address"},"migrateCode(bytes32,address,uint256)":{"notice":"Helper method used only during migration "},"migrateCodes(bytes32[],address[],uint256[])":{"notice":"Helper method used only during migration "},"migrateTraderReferrals(address,bytes32)":{"notice":"Helper method to set traderReferral Codes"},"migrateTraderReferrals(address[],bytes32[])":{"notice":"Helper method to set traderReferral Codes"},"pause()":{"notice":"Pauses the contract"},"registerCode(bytes32)":{"notice":"Register a referral code for the sender. To be called by referrer"},"setDiscountTier(uint256,uint256)":{"notice":"Sets the tier for Discount program"},"setHandler(address,bool)":{"notice":"Sets the handler for the referral system"},"setPendingCodeOwnershipTransfer(bytes32,address)":{"notice":"initiated Code ownership transfer"},"setReferralTier(uint256,uint256,uint256)":{"notice":"Sets the tier for referral program"},"setReferrerTier(address,uint256)":{"notice":"Sets the tier for a referrer"},"setTraderReferralCode(address,bytes32)":{"notice":"Sets the trader's referral code"},"setTraderReferralCodeByOwner(bytes32,address)":{"notice":"Ability for Owner to let traders use its code"},"setTraderReferralCodeByUser(bytes32)":{"notice":"Sets the trader's referral code. Callable by user. "},"setTraderTier(address,uint256)":{"notice":"Method to update tier of trader based on metrics such as Vol, credits etc."},"traderReferralDiscount(address,uint256)":{"notice":"Returns the trader discount and referrer information"},"traderTier(address)":{"notice":"Public method to get discount tier for a trader"},"unpause()":{"notice":"Unpauses the contract"},"updateReferral(bytes32,bool)":{"notice":"Convert the code to a special code"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Referral.sol":"Referral"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"src/Referral.sol":{"keccak256":"0xfbbaacdfd3b282cb8d873d935d6f137d5593ee5a731372b62669e248ab095c8d","urls":["bzz-raw://5c030bcaf83ffa7fa31ae772b40a74bebd8b4efa55961286a3e3dd311ec1afeb","dweb:/ipfs/QmcpMkV7GP7NoZRetyCWB2e3GcXuXiVyN39cJRAR4QCo5u"],"license":"MIT"},"src/interfaces/IReferral.sol":{"keccak256":"0x18871b93f29f8128da14a0b32fd9bbfeb0a8565d5f7442b959713e5b65f9a821","urls":["bzz-raw://0ae5569cd5f896619a93e8f4bc53e097f3cfae328982e85a5bbcee071d123e18","dweb:/ipfs/QmU44zGYMWSfgAKbQ1BDibwjNMHMH51746HH75qrNhd1bN"],"license":"MIT"}},"version":1},"id":111}