UNPKG

baluni-contracts

Version:
543 lines (542 loc) 37.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "MockRebalancer", "sourceName": "contracts/mock/MockRebalancer.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "usdt", "type": "address" }, { "internalType": "address", "name": "_usdc", "type": "address" }, { "internalType": "address", "name": "_wmatic", "type": "address" }, { "internalType": "address", "name": "weth", "type": "address" }, { "internalType": "address", "name": "wbtc", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "USDC", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDC_TO_USDT_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDC_TO_WBTC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDC_TO_WETH_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDC_TO_WMATIC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDT_TO_USDC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDT_TO_WBTC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDT_TO_WETH_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USDT_TO_WMATIC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WBTC_TO_USDC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WBTC_TO_USDT_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WBTC_TO_WETH_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WBTC_TO_WMATIC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH_TO_USDC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH_TO_USDT_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH_TO_WBTC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH_TO_WMATIC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WMATIC_TO_USDC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WMATIC_TO_USDT_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WMATIC_TO_WBTC_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WMATIC_TO_WETH_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WNATIVE", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "name": "checkRebalance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaluniRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "fromToken", "type": "address" }, { "internalType": "contract IERC20", "name": "toToken", "type": "address" }, { "internalType": "bool", "name": "", "type": "bool" } ], "name": "getRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "fromToken", "type": "address" }, { "internalType": "bool", "name": "", "type": "bool" } ], "name": "getRateToEth", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTreasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "rates", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromToken", "type": "address" }, { "internalType": "address", "name": "toToken", "type": "address" }, { "internalType": "uint256", "name": "rate", "type": "uint256" } ], "name": "setRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6080604052346100335761001d610014610130565b9392909261064f565b610025610038565b6114fd6109e582396114fd90f35b61003e565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061006a90610042565b810190811060018060401b0382111761008257604052565b61004c565b9061009a610093610038565b9283610060565b565b5f80fd5b60018060a01b031690565b6100b4906100a0565b90565b6100c0816100ab565b036100c757565b5f80fd5b905051906100d8826100b7565b565b919060a08382031261012b576100f2815f85016100cb565b9261010082602083016100cb565b9261012861011184604085016100cb565b9361011f81606086016100cb565b936080016100cb565b90565b61009c565b61014e611ee28038038061014381610087565b9283398101906100da565b9091929394565b5f1b90565b9061016b60018060a01b0391610155565b9181191691161790565b90565b61018c610187610191926100a0565b610175565b6100a0565b90565b61019d90610178565b90565b6101a990610194565b90565b90565b906101c46101bf6101cb926101a0565b6101ac565b825461015a565b9055565b90565b90565b6101e96101e46101ee926101cf565b610175565b6101d2565b90565b610202670ddc9893b8f693316101d5565b90565b9061020f906101a0565b5f5260205260405f2090565b5f1c90565b60018060a01b031690565b61023761023c9161021b565b610220565b90565b610249905461022b565b90565b90610256906101a0565b5f5260205260405f2090565b9061026e5f1991610155565b9181191691161790565b61028c610287610291926101d2565b610175565b6101d2565b90565b90565b906102ac6102a76102b392610278565b610294565b8254610262565b9055565b90565b6102ce6102c96102d3926102b7565b610175565b6101d2565b90565b6102ec6c110f11bc46bc3efcc5b8ff12236102ba565b90565b90565b61030661030161030b926102ef565b610175565b6101d2565b90565b61031e66052de6f3e9958f6102f2565b90565b90565b61033861033361033d92610321565b610175565b6101d2565b90565b6103546ad47d67cce9223fad7de347610324565b90565b90565b61036e61036961037392610357565b610175565b6101d2565b90565b6103886824efc5d2223b2ab2b261035a565b90565b90565b6103a261039d6103a79261038b565b610175565b6101d2565b90565b6103c16d2d9856fc421a9fd095f8b44c49db61038e565b90565b90565b6103db6103d66103e0926103c4565b610175565b6101d2565b90565b6103f5682506936e734ac2f9266103c7565b90565b90565b61040f61040a610414926103f8565b610175565b6101d2565b90565b61042d6c0236febc16a26943df322289be6103fb565b90565b90565b61044761044261044c92610430565b610175565b6101d2565b90565b610460670de435a2a433cf48610433565b90565b90565b61047a61047561047f92610463565b610175565b6101d2565b90565b610492660533304f826d31610466565b90565b90565b6104ac6104a76104b192610495565b610175565b6101d2565b90565b6104ca6c110dcba2e6f97b2a41a7eba1b8610498565b90565b90565b6104e46104df6104e9926104cd565b610175565b6101d2565b90565b6105006ad4801858112018c8850bae6104d0565b90565b90565b61051a61051561051f92610503565b610175565b6101d2565b90565b61052d610438610506565b90565b90565b61054761054261054c92610530565b610175565b6101d2565b90565b61055e65ac76a57eb9a4610533565b90565b90565b61057861057361057d92610561565b610175565b6101d2565b90565b61058c620b32d1610564565b90565b90565b6105a66105a16105ab9261058f565b610175565b6101d2565b90565b6105ba620b68f7610592565b90565b90565b6105d46105cf6105d9926105bd565b610175565b6101d2565b90565b6105ef69011de1930ce9ab44b5a16105c0565b90565b90565b61060961060461060e926105f2565b610175565b6101d2565b90565b61061e63e163500a6105f5565b90565b90565b61063861063361063d92610621565b610175565b6101d2565b90565b61064c6254dddd610624565b90565b6109c6906106706109e296936106696109dd9660026101af565b60016101af565b61067b3360036101af565b6106a96106866101f1565b6106a46106945f8590610205565b61069e600161023f565b9061024c565b610297565b6106d76106b46102d6565b6106d26106c25f8590610205565b6106cc600261023f565b9061024c565b610297565b6106fc6106e261030e565b6106f76106f05f8590610205565b869061024c565b610297565b610721610707610340565b61071c6107155f8590610205565b889061024c565b610297565b61074661072c610376565b61074161073a5f8790610205565b849061024c565b610297565b6107746107516103aa565b61076f61075f5f8790610205565b610769600261023f565b9061024c565b610297565b6107a261077f6103e3565b61079d61078d5f8790610205565b610797600161023f565b9061024c565b610297565b6107c76107ad610417565b6107c26107bb5f8790610205565b889061024c565b610297565b6107f56107d261044f565b6107f06107e95f6107e3600161023f565b90610205565b849061024c565b610297565b610823610800610482565b61081e6108175f610811600161023f565b90610205565b869061024c565b610297565b61085a61082e6104b4565b6108556108455f61083f600161023f565b90610205565b61084f600261023f565b9061024c565b610297565b6108886108656104ec565b61088361087c5f610876600161023f565b90610205565b889061024c565b610297565b6108b6610893610522565b6108b16108aa5f6108a4600261023f565b90610205565b869061024c565b610297565b6108e46108c161054f565b6108df6108d85f6108d2600261023f565b90610205565b889061024c565b610297565b61091b6108ef610580565b6109166109065f610900600261023f565b90610205565b610910600161023f565b9061024c565b610297565b6109496109266105ae565b61094461093d5f610937600261023f565b90610205565b849061024c565b610297565b6109776109546105dc565b6109726109625f8990610205565b61096c600261023f565b9061024c565b610297565b6109a5610982610611565b6109a06109905f8990610205565b61099a600161023f565b9061024c565b610297565b6109c16109b0610611565b916109bc5f8890610205565b61024c565b610297565b6109d86109d1610640565b935f610205565b61024c565b610297565b56fe60806040526004361015610013575b61128f565b61001d5f3561021c565b8063020987191461021757806304cc7325146102125780630e0917621461020d578063187029b81461020857806318cdc49a146102035780631a1e4a1f146101fe5780633b19e84a146101f95780634039e687146101f457806343146399146101ef578063443dc789146101ea5780635107e94e146101e557806353ff493e146101e05780635911fb9a146101db5780635fc8cd69146101d657806361d027b3146101d15780637b0cf44d146101cc5780637de4fd10146101c7578063802431fb146101c257806384db1dfb146101bd57806389a30271146101b85780638e5139ed146101b357806397db8e02146101ae578063a58a7f8a146101a9578063ae3bcc96146101a4578063b381cf401461019f578063b537d24b1461019a578063b9e9381014610195578063c018498314610190578063d135e3be1461018b578063e2338e7214610186578063e30f6892146101815763f0f442600361000e5761125c565b611209565b611194565b61111e565b6110aa565b61103c565b610fc4565b610f51565b610f0d565b610e9c565b610e29565b610db7565b610d3e565b610cfd565b610c3d565b610bcd565b610b18565b610a0d565b610986565b610918565b61085e565b6107ea565b610772565b6106fc565b61068e565b61061f565b6105ea565b61056b565b6103fb565b61038e565b610320565b6102a4565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b90565b90565b90565b61025c6102576102619261023f565b610245565b610242565b90565b610274660533304f826d31610248565b90565b61027f610264565b90565b61028b90610242565b9052565b91906102a2905f60208501940190610282565b565b346102d4576102b4366004610230565b6102d06102bf610277565b6102c7610222565b9182918261028f565b0390f35b610228565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102fb906102d9565b90565b610307906102f2565b9052565b919061031e905f602085019401906102fe565b565b3461035057610330366004610230565b61034c61033b6112c2565b610343610222565b9182918261030b565b0390f35b610228565b90565b61036c61036761037192610355565b610245565b610242565b90565b610380620b68f7610358565b90565b61038b610374565b90565b346103be5761039e366004610230565b6103ba6103a9610383565b6103b1610222565b9182918261028f565b0390f35b610228565b90565b6103da6103d56103df926103c3565b610245565b610242565b90565b6103ed6104386103c6565b90565b6103f86103e2565b90565b3461042b5761040b366004610230565b6104276104166103f0565b61041e610222565b9182918261028f565b0390f35b610228565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561047a5781359167ffffffffffffffff831161047557602001926020830284011161047057565b61043c565b610438565b610434565b909182601f830112156104b95781359167ffffffffffffffff83116104b45760200192602083028401116104af57565b61043c565b610438565b610434565b9060608282031261053f575f82013567ffffffffffffffff811161053a57816104e8918401610440565b929093602082013567ffffffffffffffff8111610535578361050b91840161047f565b929093604082013567ffffffffffffffff81116105305761052c920161047f565b9091565b610430565b610430565b610430565b61022c565b151590565b61055290610544565b9052565b9190610569905f60208501940190610549565b565b346105a25761059e61058d6105813660046104be565b949390939291926112db565b610595610222565b91829182610556565b0390f35b610228565b90565b6105be6105b96105c3926105a7565b610245565b610242565b90565b6105dc6c110f11bc46bc3efcc5b8ff12236105aa565b90565b6105e76105c6565b90565b3461061a576105fa366004610230565b6106166106056105df565b61060d610222565b9182918261028f565b0390f35b610228565b3461064f5761062f366004610230565b61064b61063a611315565b610642610222565b9182918261030b565b0390f35b610228565b90565b61066b61066661067092610654565b610245565b610242565b90565b61068063e163500a610657565b90565b61068b610673565b90565b346106be5761069e366004610230565b6106ba6106a9610683565b6106b1610222565b9182918261028f565b0390f35b610228565b90565b6106da6106d56106df926106c3565b610245565b610242565b90565b6106ee6254dddd6106c6565b90565b6106f96106e2565b90565b3461072c5761070c366004610230565b6107286107176106f1565b61071f610222565b9182918261028f565b0390f35b610228565b90565b61074861074361074d92610731565b610245565b610242565b90565b6107646ad47d67cce9223fad7de347610734565b90565b61076f610750565b90565b346107a257610782366004610230565b61079e61078d610767565b610795610222565b9182918261028f565b0390f35b610228565b90565b6107be6107b96107c3926107a7565b610245565b610242565b90565b6107dc6c110dcba2e6f97b2a41a7eba1b86107aa565b90565b6107e76107c6565b90565b3461081a576107fa366004610230565b6108166108056107df565b61080d610222565b9182918261028f565b0390f35b610228565b90565b61083661083161083b9261081f565b610245565b610242565b90565b610850682506936e734ac2f926610822565b90565b61085b61083e565b90565b3461088e5761086e366004610230565b61088a610879610853565b610881610222565b9182918261028f565b0390f35b610228565b61089c816102f2565b036108a357565b5f80fd5b905035906108b482610893565b565b6108bf81610242565b036108c657565b5f80fd5b905035906108d7826108b6565b565b909160608284031261090e5761090b6108f4845f85016108a7565b9361090281602086016108a7565b936040016108ca565b90565b61022c565b5f0190565b346109475761093161092b3660046108d9565b916113a4565b610939610222565b8061094381610913565b0390f35b610228565b90565b61096361095e6109689261094c565b610245565b610242565b90565b61097863df77b36f61094f565b90565b61098361096b565b90565b346109b657610996366004610230565b6109b26109a161097b565b6109a9610222565b9182918261028f565b0390f35b610228565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6109e89060086109ed93026109bb565b6109bf565b90565b906109fb91546109d8565b90565b610a0a60035f906109f0565b90565b34610a3d57610a1d366004610230565b610a39610a286109fe565b610a30610222565b9182918261030b565b0390f35b610228565b9190604083820312610a6a5780610a5e610a67925f86016108a7565b936020016108a7565b90565b61022c565b610a83610a7e610a88926102d9565b610245565b6102d9565b90565b610a9490610a6f565b90565b610aa090610a8b565b90565b90610aad90610a97565b5f5260205260405f2090565b90610ac390610a97565b5f5260205260405f2090565b90565b610ae2906008610ae793026109bb565b610acf565b90565b90610af59154610ad2565b90565b610b10610b1592610b0b5f935f94610aa3565b610ab9565b610aea565b90565b34610b4957610b45610b34610b2e366004610a42565b90610af8565b610b3c610222565b9182918261028f565b0390f35b610228565b610b57906102f2565b90565b610b6381610b4e565b03610b6a57565b5f80fd5b90503590610b7b82610b5a565b565b610b8681610544565b03610b8d57565b5f80fd5b90503590610b9e82610b7d565b565b9190604083820312610bc85780610bbc610bc5925f8601610b6e565b93602001610b91565b90565b61022c565b34610bfe57610bfa610be9610be3366004610ba0565b906113f4565b610bf1610222565b9182918261028f565b0390f35b610228565b9091606082840312610c3857610c35610c1e845f8501610b6e565b93610c2c8160208601610b6e565b93604001610b91565b90565b61022c565b34610c6e57610c6a610c59610c53366004610c03565b91611431565b610c61610222565b9182918261028f565b0390f35b610228565b909160a082840312610cf8575f82013567ffffffffffffffff8111610cf35783610c9e918401610440565b929093602082013567ffffffffffffffff8111610cee5781610cc191840161047f565b929093610ceb610cd484604085016108a7565b93610ce281606086016108a7565b936080016108ca565b90565b610430565b610430565b61022c565b34610d2a57610d0d366004610c73565b50505050505050610d1c610222565b80610d2681610913565b0390f35b610228565b610d3b60015f906109f0565b90565b34610d6e57610d4e366004610230565b610d6a610d59610d2f565b610d61610222565b9182918261030b565b0390f35b610228565b90565b610d8a610d85610d8f92610d73565b610245565b610242565b90565b610da96d2d9856fc421a9fd095f8b44c49db610d76565b90565b610db4610d92565b90565b34610de757610dc7366004610230565b610de3610dd2610dac565b610dda610222565b9182918261028f565b0390f35b610228565b90565b610e03610dfe610e0892610dec565b610245565b610242565b90565b610e1b66052de6f3e9958f610def565b90565b610e26610e0b565b90565b34610e5957610e39366004610230565b610e55610e44610e1e565b610e4c610222565b9182918261028f565b0390f35b610228565b90565b610e75610e70610e7a92610e5e565b610245565b610242565b90565b610e8e670ddc9893b8f69331610e61565b90565b610e99610e7d565b90565b34610ecc57610eac366004610230565b610ec8610eb7610e91565b610ebf610222565b9182918261028f565b0390f35b610228565b90565b610ee8610ee3610eed92610ed1565b610245565b610242565b90565b610eff65ac76a57eb9a4610ed4565b90565b610f0a610ef0565b90565b34610f3d57610f1d366004610230565b610f39610f28610f02565b610f30610222565b9182918261028f565b0390f35b610228565b610f4e60025f906109f0565b90565b34610f8157610f61366004610230565b610f7d610f6c610f42565b610f74610222565b9182918261030b565b0390f35b610228565b90565b610f9d610f98610fa292610f86565b610245565b610242565b90565b610fb6670de435a2a433cf48610f89565b90565b610fc1610fa5565b90565b34610ff457610fd4366004610230565b610ff0610fdf610fb9565b610fe7610222565b9182918261028f565b0390f35b610228565b90565b61101061100b61101592610ff9565b610245565b610242565b90565b61102e6c0236febc16a26943df322289be610ffc565b90565b611039611018565b90565b3461106c5761104c366004610230565b611068611057611031565b61105f610222565b9182918261028f565b0390f35b610228565b90565b61108861108361108d92611071565b610245565b610242565b90565b61109c620b32d1611074565b90565b6110a7611090565b90565b346110da576110ba366004610230565b6110d66110c561109f565b6110cd610222565b9182918261028f565b0390f35b610228565b90565b6110f66110f16110fb926110df565b610245565b610242565b90565b6111106824efc5d2223b2ab2b26110e2565b90565b61111b6110fe565b90565b3461114e5761112e366004610230565b61114a611139611113565b611141610222565b9182918261028f565b0390f35b610228565b90565b61116a61116561116f92611153565b610245565b610242565b90565b6111866ad4801858112018c8850bae611156565b90565b611191611172565b90565b346111c4576111a4366004610230565b6111c06111af611189565b6111b7610222565b9182918261028f565b0390f35b610228565b90565b6111e06111db6111e5926111c9565b610245565b610242565b90565b6111fb69011de1930ce9ab44b5a16111cc565b90565b6112066111e8565b90565b3461123957611219366004610230565b6112356112246111fe565b61122c610222565b9182918261028f565b0390f35b610228565b9060208282031261125757611254915f016108a7565b90565b61022c565b3461128a5761127461126f36600461123e565b6114ba565b61127c610222565b8061128681610913565b0390f35b610228565b5f80fd5b5f90565b90565b6112ae6112a96112b392611297565b610245565b6102d9565b90565b6112bf9061129a565b90565b6112ca611293565b506112d45f6112b6565b90565b5f90565b5050505050506112e96112d7565b50600190565b5f1c90565b611300611305916112ef565b6109bf565b90565b61131290546112f4565b90565b61131d611293565b506113286003611308565b90565b5f1b90565b9061135b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b61137961137461137e92610242565b610245565b610242565b90565b90565b906113996113946113a092611365565b611381565b8254611330565b9055565b906113bc906113b76113c194935f610aa3565b610ab9565b611384565b565b5f90565b6113d090610a8b565b90565b6113df6113e4916112ef565b610acf565b90565b6113f190546113d3565b90565b61142e9150611419611429916114086113c3565b506114135f916113c7565b90610aa3565b6114236002611308565b90610ab9565b6113e7565b90565b61146b92509061146061145a611466936114496113c3565b506114545f916113c7565b90610aa3565b916113c7565b90610ab9565b6113e7565b90565b9061148d73ffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b90565b906114af6114aa6114b692610a97565b611497565b825461146e565b9055565b6114c590600361149a565b56fea264697066735822122099b148d23a6214657c794d57724d06efc1cc79cf02783f93512a79710750c1b364736f6c63430008190033", "deployedBytecode": "0x60806040526004361015610013575b61128f565b61001d5f3561021c565b8063020987191461021757806304cc7325146102125780630e0917621461020d578063187029b81461020857806318cdc49a146102035780631a1e4a1f146101fe5780633b19e84a146101f95780634039e687146101f457806343146399146101ef578063443dc789146101ea5780635107e94e146101e557806353ff493e146101e05780635911fb9a146101db5780635fc8cd69146101d657806361d027b3146101d15780637b0cf44d146101cc5780637de4fd10146101c7578063802431fb146101c257806384db1dfb146101bd57806389a30271146101b85780638e5139ed146101b357806397db8e02146101ae578063a58a7f8a146101a9578063ae3bcc96146101a4578063b381cf401461019f578063b537d24b1461019a578063b9e9381014610195578063c018498314610190578063d135e3be1461018b578063e2338e7214610186578063e30f6892146101815763f0f442600361000e5761125c565b611209565b611194565b61111e565b6110aa565b61103c565b610fc4565b610f51565b610f0d565b610e9c565b610e29565b610db7565b610d3e565b610cfd565b610c3d565b610bcd565b610b18565b610a0d565b610986565b610918565b61085e565b6107ea565b610772565b6106fc565b61068e565b61061f565b6105ea565b61056b565b6103fb565b61038e565b610320565b6102a4565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b90565b90565b90565b61025c6102576102619261023f565b610245565b610242565b90565b610274660533304f826d31610248565b90565b61027f610264565b90565b61028b90610242565b9052565b91906102a2905f60208501940190610282565b565b346102d4576102b4366004610230565b6102d06102bf610277565b6102c7610222565b9182918261028f565b0390f35b610228565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102fb906102d9565b90565b610307906102f2565b9052565b919061031e905f602085019401906102fe565b565b3461035057610330366004610230565b61034c61033b6112c2565b610343610222565b9182918261030b565b0390f35b610228565b90565b61036c61036761037192610355565b610245565b610242565b90565b610380620b68f7610358565b90565b61038b610374565b90565b346103be5761039e366004610230565b6103ba6103a9610383565b6103b1610222565b9182918261028f565b0390f35b610228565b90565b6103da6103d56103df926103c3565b610245565b610242565b90565b6103ed6104386103c6565b90565b6103f86103e2565b90565b3461042b5761040b366004610230565b6104276104166103f0565b61041e610222565b9182918261028f565b0390f35b610228565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561047a5781359167ffffffffffffffff831161047557602001926020830284011161047057565b61043c565b610438565b610434565b909182601f830112156104b95781359167ffffffffffffffff83116104b45760200192602083028401116104af57565b61043c565b610438565b610434565b9060608282031261053f575f82013567ffffffffffffffff811161053a57816104e8918401610440565b929093602082013567ffffffffffffffff8111610535578361050b91840161047f565b929093604082013567ffffffffffffffff81116105305761052c920161047f565b9091565b610430565b610430565b610430565b61022c565b151590565b61055290610544565b9052565b9190610569905f60208501940190610549565b565b346105a25761059e61058d6105813660046104be565b949390939291926112db565b610595610222565b91829182610556565b0390f35b610228565b90565b6105be6105b96105c3926105a7565b610245565b610242565b90565b6105dc6c110f11bc46bc3efcc5b8ff12236105aa565b90565b6105e76105c6565b90565b3461061a576105fa366004610230565b6106166106056105df565b61060d610222565b9182918261028f565b0390f35b610228565b3461064f5761062f366004610230565b61064b61063a611315565b610642610222565b9182918261030b565b0390f35b610228565b90565b61066b61066661067092610654565b610245565b610242565b90565b61068063e163500a610657565b90565b61068b610673565b90565b346106be5761069e366004610230565b6106ba6106a9610683565b6106b1610222565b9182918261028f565b0390f35b610228565b90565b6106da6106d56106df926106c3565b610245565b610242565b90565b6106ee6254dddd6106c6565b90565b6106f96106e2565b90565b3461072c5761070c366004610230565b6107286107176106f1565b61071f610222565b9182918261028f565b0390f35b610228565b90565b61074861074361074d92610731565b610245565b610242565b90565b6107646ad47d67cce9223fad7de347610734565b90565b61076f610750565b90565b346107a257610782366004610230565b61079e61078d610767565b610795610222565b9182918261028f565b0390f35b610228565b90565b6107be6107b96107c3926107a7565b610245565b610242565b90565b6107dc6c110dcba2e6f97b2a41a7eba1b86107aa565b90565b6107e76107c6565b90565b3461081a576107fa366004610230565b6108166108056107df565b61080d610222565b9182918261028f565b0390f35b610228565b90565b61083661083161083b9261081f565b610245565b610242565b90565b610850682506936e734ac2f926610822565b90565b61085b61083e565b90565b3461088e5761086e366004610230565b61088a610879610853565b610881610222565b9182918261028f565b0390f35b610228565b61089c816102f2565b036108a357565b5f80fd5b905035906108b482610893565b565b6108bf81610242565b036108c657565b5f80fd5b905035906108d7826108b6565b565b909160608284031261090e5761090b6108f4845f85016108a7565b9361090281602086016108a7565b936040016108ca565b90565b61022c565b5f0190565b346109475761093161092b3660046108d9565b916113a4565b610939610222565b8061094381610913565b0390f35b610228565b90565b61096361095e6109689261094c565b610245565b610242565b90565b61097863df77b36f61094f565b90565b61098361096b565b90565b346109b657610996366004610230565b6109b26109a161097b565b6109a9610222565b9182918261028f565b0390f35b610228565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6109e89060086109ed93026109bb565b6109bf565b90565b906109fb91546109d8565b90565b610a0a60035f906109f0565b90565b34610a3d57610a1d366004610230565b610a39610a286109fe565b610a30610222565b9182918261030b565b0390f35b610228565b9190604083820312610a6a5780610a5e610a67925f86016108a7565b936020016108a7565b90565b61022c565b610a83610a7e610a88926102d9565b610245565b6102d9565b90565b610a9490610a6f565b90565b610aa090610a8b565b90565b90610aad90610a97565b5f5260205260405f2090565b90610ac390610a97565b5f5260205260405f2090565b90565b610ae2906008610ae793026109bb565b610acf565b90565b90610af59154610ad2565b90565b610b10610b1592610b0b5f935f94610aa3565b610ab9565b610aea565b90565b34610b4957610b45610b34610b2e366004610a42565b90610af8565b610b3c610222565b9182918261028f565b0390f35b610228565b610b57906102f2565b90565b610b6381610b4e565b03610b6a57565b5f80fd5b90503590610b7b82610b5a565b565b610b8681610544565b03610b8d57565b5f80fd5b90503590610b9e82610b7d565b565b9190604083820312610bc85780610bbc610bc5925f8601610b6e565b93602001610b91565b90565b61022c565b34610bfe57610bfa610be9610be3366004610ba0565b906113f4565b610bf1610222565b9182918261028f565b0390f35b610228565b9091606082840312610c3857610c35610c1e845f8501610b6e565b93610c2c8160208601610b6e565b93604001610b91565b90565b61022c565b34610c6e57610c6a610c59610c53366004610c03565b91611431565b610c61610222565b9182918261028f565b0390f35b610228565b909160a082840312610cf8575f82013567ffffffffffffffff8111610cf35783610c9e918401610440565b929093602082013567ffffffffffffffff8111610cee5781610cc191840161047f565b929093610ceb610cd484604085016108a7565b93610ce281606086016108a7565b936080016108ca565b90565b610430565b610430565b61022c565b34610d2a57610d0d366004610c73565b50505050505050610d1c610222565b80610d2681610913565b0390f35b610228565b610d3b60015f906109f0565b90565b34610d6e57610d4e366004610230565b610d6a610d59610d2f565b610d61610222565b9182918261030b565b0390f35b610228565b90565b610d8a610d85610d8f92610d73565b610245565b610242565b90565b610da96d2d9856fc421a9fd095f8b44c49db610d76565b90565b610db4610d92565b90565b34610de757610dc7366004610230565b610de3610dd2610dac565b610dda610222565b9182918261028f565b0390f35b610228565b90565b610e03610dfe610e0892610dec565b610245565b610242565b90565b610e1b66052de6f3e9958f610def565b90565b610e26610e0b565b90565b34610e5957610e39366004610230565b610e55610e44610e1e565b610e4c610222565b9182918261028f565b0390f35b610228565b90565b610e75610e70610e7a92610e5e565b610245565b610242565b90565b610e8e670ddc9893b8f69331610e61565b90565b610e99610e7d565b90565b34610ecc57610eac366004610230565b610ec8610eb7610e91565b610ebf610222565b9182918261028f565b0390f35b610228565b90565b610ee8610ee3610eed92610ed1565b610245565b610242565b90565b610eff65ac76a57eb9a4610ed4565b90565b610f0a610ef0565b90565b34610f3d57610f1d366004610230565b610f39610f28610f02565b610f30610222565b9182918261028f565b0390f35b610228565b610f4e60025f906109f0565b90565b34610f8157610f61366004610230565b610f7d610f6c610f42565b610f74610222565b9182918261030b565b0390f35b610228565b90565b610f9d610f98610fa292610f86565b610245565b610242565b90565b610fb6670de435a2a433cf48610f89565b90565b610fc1610fa5565b90565b34610ff457610fd4366004610230565b610ff0610fdf610fb9565b610fe7610222565b9182918261028f565b0390f35b610228565b90565b61101061100b61101592610ff9565b610245565b610242565b90565b61102e6c0236febc16a26943df322289be610ffc565b90565b611039611018565b90565b3461106c5761104c366004610230565b611068611057611031565b61105f610222565b9182918261028f565b0390f35b610228565b90565b61108861108361108d92611071565b610245565b610242565b90565b61109c620b32d1611074565b90565b6110a7611090565b90565b346110da576110ba366004610230565b6110d66110c561109f565b6110cd610222565b9182918261028f565b0390f35b610228565b90565b6110f66110f16110fb926110df565b610245565b610242565b90565b6111106824efc5d2223b2ab2b26110e2565b90565b61111b6110fe565b90565b3461114e5761112e366004610230565b61114a611139611113565b611141610222565b9182918261028f565b0390f35b610228565b90565b61116a61116561116f92611153565b610245565b610242565b90565b6111866ad4801858112018c8850bae611156565b90565b611191611172565b90565b346111c4576111a4366004610230565b6111c06111af611189565b6111b7610222565b9182918261028f565b0390f35b610228565b90565b6111e06111db6111e5926111c9565b610245565b610242565b90565b6111fb69011de1930ce9ab44b5a16111cc565b90565b6112066111e8565b90565b3461123957611219366004610230565b6112356112246111fe565b61122c610222565b9182918261028f565b0390f35b610228565b9060208282031261125757611254915f016108a7565b90565b61022c565b3461128a5761127461126f36600461123e565b6114ba565b61127c610222565b8061128681610913565b0390f35b610228565b5f80fd5b5f90565b90565b6112ae6112a96112b392611297565b610245565b6102d9565b90565b6112bf9061129a565b90565b6112ca611293565b506112d45f6112b6565b90565b5f90565b5050505050506112e96112d7565b50600190565b5f1c90565b611300611305916112ef565b6109bf565b90565b61131290546112f4565b90565b61131d611293565b506113286003611308565b90565b5f1b90565b9061135b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b61137961137461137e92610242565b610245565b610242565b90565b90565b906113996113946113a092611365565b611381565b8254611330565b9055565b906113bc906113b76113c194935f610aa3565b610ab9565b611384565b565b5f90565b6113d090610a8b565b90565b6113df6113e4916112ef565b610acf565b90565b6113f190546113d3565b90565b61142e9150611419611429916114086113c3565b506114135f916113c7565b90610aa3565b6114236002611308565b90610ab9565b6113e7565b90565b61146b92509061146061145a611466936114496113c3565b506114545f916113c7565b90610aa3565b916113c7565b90610ab9565b6113e7565b90565b9061148d73ffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b90565b906114af6114aa6114b692610a97565b611497565b825461146e565b9055565b6114c590600361149a565b56fea264697066735822122099b148d23a6214657c794d57724d06efc1cc79cf02783f93512a79710750c1b364736f6c63430008190033", "linkReferences": {}, "deployedLinkReferences": {} }