@gnosis.pm/pm-contracts
Version:
Collection of smart contracts for the Gnosis prediction market platform
316 lines • 565 kB
JSON
{
"contractName": "Campaign",
"abi": [
{
"constant": true,
"inputs": [],
"name": "marketFactory",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "marketMaker",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "finalBalance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "deadline",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "contributions",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "market",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "masterCopy",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "stage",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "funding",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "fee",
"outputs": [
{
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "eventContract",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "FEE_RANGE",
"outputs": [
{
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": false,
"name": "funding",
"type": "uint256"
}
],
"name": "CampaignFunding",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "sender",
"type": "address"
},
{
"indexed": false,
"name": "refund",
"type": "uint256"
}
],
"name": "CampaignRefund",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "market",
"type": "address"
}
],
"name": "MarketCreation",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "MarketClosing",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"name": "fees",
"type": "uint256"
}
],
"name": "FeeWithdrawal",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "amount",
"type": "uint256"
}
],
"name": "fund",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "refund",
"outputs": [
{
"name": "refundAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "createMarket",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "closeMarket",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdrawFees",
"outputs": [
{
"name": "fees",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"marketFactory\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"marketMaker\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"finalBalance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"deadline\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"contributions\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawFees\",\"outputs\":[{\"name\":\"fees\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"refund\",\"outputs\":[{\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"market\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"masterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"createMarket\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stage\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"closeMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fund\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"funding\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eventContract\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"FEE_RANGE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"funding\",\"type\":\"uint256\"}],\"name\":\"CampaignFunding\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"refund\",\"type\":\"uint256\"}],\"name\":\"CampaignRefund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"market\",\"type\":\"address\"}],\"name\":\"MarketCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MarketClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"FeeWithdrawal\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"closeMarket()\":{\"details\":\"Allows to withdraw fees from market contract to campaign contract\",\"return\":\"Fee amount\"},\"createMarket()\":{\"details\":\"Allows to create market after successful funding\",\"return\":\"Market address\"},\"fund(uint256)\":{\"details\":\"Allows to contribute to required market funding\",\"params\":{\"amount\":\"Amount of collateral tokens\"}},\"refund()\":{\"details\":\"Withdraws refund amount\",\"return\":\"Refund amount\"},\"withdrawFees()\":{\"details\":\"Allows to withdraw fees from campaign contract to contributor\",\"return\":\"Fee amount\"}},\"title\":\"Campaign contract - Allows to crowdfund a market\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/Campaign.sol\":\"Campaign\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/Event.sol\":{\"keccak256\":\"0xdcacfa25145426b5681ad7d8bafb3c117c92a37b7a0175d72a10b42f130fb8c1\",\"urls\":[\"bzzr://bd10fbdb82f0d50866442c9e95317b3176c8ee067def27d764529973fb36420a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/MarketMakers/MarketMaker.sol\":{\"keccak256\":\"0xa71f8ce92412033d0900d44c01f0702aefced87d860cf116c6a4d3efe86913cf\",\"urls\":[\"bzzr://63c5bf60b931bb032fcab23514a3db171b680b11d8c6c05ac8caa88752e3be41\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/Campaign.sol\":{\"keccak256\":\"0x747255f6e5d034164f791a042af53af9c4813d1ca0cae938cad5dff89a4d0329\",\"urls\":[\"bzzr://787c31a9d223fc6dc7d94b366babc16311fbf62b3737a3a2f47d46e30444fe7f\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/Market.sol\":{\"keccak256\":\"0x7bc1ebf0ea0f4cd9b6e9bfff6c6ac9088c253bcfca4e27f31e5845799f0278d8\",\"urls\":[\"bzzr://5e3f86d96ab269d284b34563501469d539cc436d62f070dd0abda2519d5e60c0\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarket.sol\":{\"keccak256\":\"0x527abf1b0997e2d38ce3c97f7ed647b9e913424828594287e2b068f2fb41ad4c\",\"urls\":[\"bzzr://16756e1b212fd40f21de50d99c8b7a5dde0acc2b0b047af8beead831a1274bd7\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketFactory.sol\":{\"keccak256\":\"0x8f8f3452e190afcf74b5d8245ff8aa98d253b683e63d64aaa8e425fe36abff45\",\"urls\":[\"bzzr://defea219cbd36bd316ce07e750994069afddd9790f6585df38344d79ead2ca7f\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Tokens/OutcomeToken.sol\":{\"keccak256\":\"0x3d4c9ec14a60cf7577d366da5116e919a4331da8d6d993174f7d599f84ae74e0\",\"urls\":[\"bzzr://20f87450259a3af24ff1769faa9ab3b714d01921e9d8fa4efa75a0c277837a8a\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]},\"openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol\":{\"keccak256\":\"0xb4b45cd5475c318722ac0f8d7e2b9e77fee6f4f36374c1110fe615d50fbc0650\",\"urls\":[\"bzzr://a90fb457269c8a03ec5b811c71acef08a2751a4d2019b0661328610f9357dae7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzzr://07fb42206812a17c1f71e548cfa5cec6f9aa1ae0ca5df870718ca4aa9759d1a5\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50611b26806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063a619486e116100a2578063ca1d209d11610071578063ca1d209d14610388578063cb4c86b7146103b6578063ddca3f43146103d4578063e274fd24146103fc578063fbde47f6146104465761010b565b8063a619486e146102be578063aea0e35f14610308578063c040e6b814610352578063c511ed5e1461037e5761010b565b806342e94c90116100de57806342e94c90146101e0578063476343ee14610238578063590e1ae31461025657806380f55605146102745761010b565b806306ae7095146101105780631f21f9af1461015a5780632129e25a146101a457806329dcb0cf146101c2575b600080fd5b61011861046e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610162610494565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ac6104ba565b6040518082815260200191505060405180910390f35b6101ca6104c0565b6040518082815260200191505060405180910390f35b610222600480360360208110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104c6565b6040518082815260200191505060405180910390f35b6102406104de565b6040518082815260200191505060405180910390f35b61025e610778565b6040518082815260200191505060405180910390f35b61027c610a52565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c6610a78565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610310610a9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035a610fba565b6040518082600481111561036a57fe5b60ff16815260200191505060405180910390f35b610386610fcd565b005b6103b46004803603602081101561039e57600080fd5b810190808035906020019092919050505061142d565b005b6103be6118fa565b6040518082815260200191505060405180910390f35b6103dc611900565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b610404611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044e61193b565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60065481565b60086020528060005260406000206000915090505481565b600060048060048111156104ee57fe5b600960009054906101000a900460ff16600481111561050957fe5b1461051357600080fd5b60055461056a600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460075461194290919063ffffffff16565b8161057157fe5b0491506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561062157600080fd5b505afa158015610635573d6000803e3d6000fd5b505050506040513d602081101561064b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b505050506040513d602081101561070c57600080fd5b810190808051906020019092919050505061072657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fee33a3a9cb48e4ff209f8b1c67c4632f1dbbf55aeff8e6f17d957ade7a6fb17c836040518082815260200191505060405180910390a25090565b600080600481111561078657fe5b600960009054906101000a900460ff1660048111156107a157fe5b1480156107af575042600654105b156107d9576002600960006101000a81548160ff021916908360048111156107d357fe5b02179055505b60028060048111156107e757fe5b600960009054906101000a900460ff16600481111561080257fe5b1461080c57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d602081101561092557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506040513d60208110156109e657600080fd5b8101908080519060200190929190505050610a0057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fd53235e384e83b261994d71b101de6c22402415c0c0d313f064a90e91039e2a9836040518082815260200191505060405180910390a25090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806004811115610aab57fe5b600960009054906101000a900460ff166004811115610ac657fe5b148015610ad4575042600654105b15610afe576002600960006101000a81548160ff02191690836004811115610af857fe5b02179055505b6001806004811115610b0c57fe5b600960009054906101000a900460ff166004811115610b2757fe5b14610b3157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637abeb6a0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460149054906101000a900462ffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1662ffffff1681526020019350505050602060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b8101908080519060200190929190505050600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5057600080fd5b505afa158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610d7a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b505050506040513d6020811015610e5f57600080fd5b8101908080519060200190929190505050610e7957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca1d209d6005546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506003600960006101000a81548160ff02191690836004811115610f2757fe5b0217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd50a500cb3b7c976a045df06de01ca42c942e1a2c43ac27d96bfa7ece3138a9960405160405180910390a2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b600960009054906101000a900460ff1681565b6003806004811115610fdb57fe5b600960009054906101000a900460ff166004811115610ff657fe5b1461100057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ccdf68f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d602081101561109257600080fd5b81019080805190602001909291905050506110ac57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561111657600080fd5b505af115801561112a573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663476343ee6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad0b2bec6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561139957600080fd5b505afa1580156113ad573d6000803e3d6000fd5b505050506040513d60208110156113c357600080fd5b81019080805190602001909291905050506007819055506004600960006101000a81548160ff021916908360048111156113f957fe5b02179055507fe7d85885f81486e8f4c99e50e056745493861b8b5d4f973dcf0c3c0f74a25e0760405160405180910390a150565b6000600481111561143a57fe5b600960009054906101000a900460ff16600481111561145557fe5b148015611463575042600654105b1561148d576002600960006101000a81548160ff0219169083600481111561148757fe5b02179055505b600080600481111561149b57fe5b600960009054906101000a900460ff1660048111156114b657fe5b146114c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561152a57600080fd5b505afa15801561153e573d6000803e3d6000fd5b505050506040513d602081101561155457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b810190808051906020019092919050505090506000611635826005546119c890919063ffffffff16565b905083811015611643578093505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a057600080fd5b505af11580156117b4573d6000803e3d6000fd5b505050506040513d60208110156117ca57600080fd5b81019080805190602001909291905050506117e457600080fd5b61183684600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5190919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808414156118a6576001600960006101000a81548160ff021916908360048111156118a057fe5b02179055505b3373ffffffffffffffffffffffffffffffffffffffff167f9e85601c404591b54325b6512021f8145643571c59865b7ab29ed9e0664cb17f856040518082815260200191505060405180910390a250505050565b60055481565b600460149054906101000a900462ffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620f424081565b60008083141561195557600090506119c2565b600082840290508284828161196657fe5b04146119bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611ada6021913960400191505060405180910390fd5b809150505b92915050565b600082821115611a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015611acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a7230582006a250ca923d46edceaa51116b1c0fb4d234822b5afe1b3a2c08487beb6cfee60029",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063a619486e116100a2578063ca1d209d11610071578063ca1d209d14610388578063cb4c86b7146103b6578063ddca3f43146103d4578063e274fd24146103fc578063fbde47f6146104465761010b565b8063a619486e146102be578063aea0e35f14610308578063c040e6b814610352578063c511ed5e1461037e5761010b565b806342e94c90116100de57806342e94c90146101e0578063476343ee14610238578063590e1ae31461025657806380f55605146102745761010b565b806306ae7095146101105780631f21f9af1461015a5780632129e25a146101a457806329dcb0cf146101c2575b600080fd5b61011861046e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610162610494565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ac6104ba565b6040518082815260200191505060405180910390f35b6101ca6104c0565b6040518082815260200191505060405180910390f35b610222600480360360208110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104c6565b6040518082815260200191505060405180910390f35b6102406104de565b6040518082815260200191505060405180910390f35b61025e610778565b6040518082815260200191505060405180910390f35b61027c610a52565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c6610a78565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610310610a9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035a610fba565b6040518082600481111561036a57fe5b60ff16815260200191505060405180910390f35b610386610fcd565b005b6103b46004803603602081101561039e57600080fd5b810190808035906020019092919050505061142d565b005b6103be6118fa565b6040518082815260200191505060405180910390f35b6103dc611900565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b610404611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044e61193b565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60065481565b60086020528060005260406000206000915090505481565b600060048060048111156104ee57fe5b600960009054906101000a900460ff16600481111561050957fe5b1461051357600080fd5b60055461056a600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460075461194290919063ffffffff16565b8161057157fe5b0491506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561062157600080fd5b505afa158015610635573d6000803e3d6000fd5b505050506040513d602081101561064b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b505050506040513d602081101561070c57600080fd5b810190808051906020019092919050505061072657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fee33a3a9cb48e4ff209f8b1c67c4632f1dbbf55aeff8e6f17d957ade7a6fb17c836040518082815260200191505060405180910390a25090565b600080600481111561078657fe5b600960009054906101000a900460ff1660048111156107a157fe5b1480156107af575042600654105b156107d9576002600960006101000a81548160ff021916908360048111156107d357fe5b02179055505b60028060048111156107e757fe5b600960009054906101000a900460ff16600481111561080257fe5b1461080c57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d602081101561092557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506040513d60208110156109e657600080fd5b8101908080519060200190929190505050610a0057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fd53235e384e83b261994d71b101de6c22402415c0c0d313f064a90e91039e2a9836040518082815260200191505060405180910390a25090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806004811115610aab57fe5b600960009054906101000a900460ff166004811115610ac657fe5b148015610ad4575042600654105b15610afe576002600960006101000a81548160ff02191690836004811115610af857fe5b02179055505b6001806004811115610b0c57fe5b600960009054906101000a900460ff166004811115610b2757fe5b14610b3157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637abeb6a0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460149054906101000a900462ffffff166040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1662ffffff1681526020019350505050602060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b8101908080519060200190929190505050600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5057600080fd5b505afa158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610d7a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b505050506040513d6020811015610e5f57600080fd5b8101908080519060200190929190505050610e7957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca1d209d6005546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506003600960006101000a81548160ff02191690836004811115610f2757fe5b0217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd50a500cb3b7c976a045df06de01ca42c942e1a2c43ac27d96bfa7ece3138a9960405160405180910390a2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b600960009054906101000a900460ff1681565b6003806004811115610fdb57fe5b600960009054906101000a900460ff166004811115610ff657fe5b1461100057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ccdf68f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d602081101561109257600080fd5b81019080805190602001909291905050506110ac57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561111657600080fd5b505af115801561112a573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663476343ee6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad0b2bec6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561139957600080fd5b505afa1580156113ad573d6000803e3d6000fd5b505050506040513d60208110156113c357600080fd5b81019080805190602001909291905050506007819055506004600960006101000a81548160ff021916908360048111156113f957fe5b02179055507fe7d85885f81486e8f4c99e50e056745493861b8b5d4f973dcf0c3c0f74a25e0760405160405180910390a150565b6000600481111561143a57fe5b600960009054906101000a900460ff16600481111561145557fe5b148015611463575042600654105b1561148d576002600960006101000a81548160ff0219169083600481111561148757fe5b02179055505b600080600481111561149b57fe5b600960009054906101000a900460ff1660048111156114b657fe5b146114c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561152a57600080fd5b505afa15801561153e573d6000803e3d6000fd5b505050506040513d602081101561155457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b810190808051906020019092919050505090506000611635826005546119c890919063ffffffff16565b905083811015611643578093505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a057600080fd5b505af11580156117b4573d6000803e3d6000fd5b505050506040513d60208110156117ca57600080fd5b81019080805190602001909291905050506117e457600080fd5b61183684600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5190919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808414156118a6576001600960006101000a81548160ff021916908360048111156118a057fe5b02179055505b3373ffffffffffffffffffffffffffffffffffffffff167f9e85601c404591b54325b6512021f8145643571c59865b7ab29ed9e0664cb17f856040518082815260200191505060405180910390a250505050565b60055481565b600460149054906101000a900462ffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620f424081565b60008083141561195557600090506119c2565b600082840290508284828161196657fe5b04146119bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611ada6021913960400191505060405180910390fd5b809150505b92915050565b600082821115611a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015611acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a7230582006a250ca923d46edceaa51116b1c0fb4d234822b5afe1b3a2c08487beb6cfee60029",
"sourceMap": "2788:2962:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:2962:6;;;;;;;",
"deployedSourceMap": "2788:2962:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:2962:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;766:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;814:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;950:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;924:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;980:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;980:46:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5360:388;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3783:408;;;:::i;:::-;;;;;;;;;;;;;;;;;;;850:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;205:25:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4290:432:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1032:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4834:418;;;:::i;:::-;;3052:658;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3052:658:6;;;;;;;;;;;;;;;;;:::i;:::-;;899:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;876:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;734:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;646:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;766;;;;;;;;;;;;;:::o;814:30::-;;;;;;;;;;;;;:::o;950:24::-;;;;:::o;924:20::-;;;;:::o;980:46::-;;;;;;;;;;;;;;;;;:::o;5360:388::-;5453:9;5415:19;1338:6;1329:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1321:24;;;;;;5531:7;;5485:43;5502:13;:25;5516:10;5502:25;;;;;;;;;;;;;;;;5485:12;;:16;;:43;;;;:::i;:::-;:53;;;;;;5478:60;;5576:1;5548:13;:25;5562:10;5548:25;;;;;;;;;;;;;;;:29;;;;5636:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5636:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5636:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5636:31:6;;;;;;;;;;;;;;;;:40;;;5677:10;5689:4;5636:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5636:58:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5636:58:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5636:58:6;;;;;;;;;;;;;;;;5628:67;;;;;;5724:10;5710:31;;;5736:4;5710:31;;;;;;;;;;;;;;;;;;5360:388;;:::o;3783:408::-;3896:17;1420:21;1411:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;:48;;;;;1456:3;1445:8;;:14;1411:48;1407:94;;;1481:20;1473:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;1407:94;3857:20;1338:6;1329:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1321:24;;;;;;3944:13;:25;3958:10;3944:25;;;;;;;;;;;;;;;;3929:40;;4007:1;3979:13;:25;3993:10;3979:25;;;;;;;;;;;;;;;:29;;;;4062:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4062:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4062:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4062:31:6;;;;;;;;;;;;;;;;:40;;;4103:10;4115:12;4062:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4062:66:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4062:66:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4062:66:6;;;;;;;;;;;;;;;;4054:75;;;;;;4159:10;4144:40;;;4171:12;4144:40;;;;;;;;;;;;;;;;;;1511:1;3783:408;:::o;850:20::-;;;;;;;;;;;;;:::o;205:25:29:-;;;;;;;;;;;;;:::o;4290:432:6:-;4413:6;1420:21;1411:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;:48;;;;;1456:3;1445:8;;:14;1411:48;1407:94;;;1481:20;1473:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;1407:94;4370:24;1338:6;1329:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1321:24;;;;;;4444:13;;;;;;;;;;;:26;;;4471:13;;;;;;;;;;;4486:11;;;;;;;;;;;4499:3;;;;;;;;;;;4444:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4444:59:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4444:59:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4444:59:6;;;;;;;;;;;;;;;;4435:6;;:68;;;;;;;;;;;;;;;;;;4521:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4521:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4521:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4521:31:6;;;;;;;;;;;;;;;;:39;;;4569:6;;;;;;;;;;;4578:7;;4521:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4521:65:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4521:65:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4521:65:6;;;;;;;;;;;;;;;;4513:74;;;;;;4597:6;;;;;;;;;;;:11;;;4609:7;;4597:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4597:20:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4597:20:6;;;;4635;4627:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;4685:6;;;;;;;;;;;4670:22;;;;;;;;;;;;4709:6;;;;;;;;;;;4702:13;;1511:1;4290:432;:::o;1032:19::-;;;;;;;;;;;;;:::o;4834:418::-;4888:20;1338:6;1329:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1321:24;;;;;;4973:13;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4973:28:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4973:28:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4973:28:6;;;;;;;;;;;;;;;;4965:37;;;;;;5012:6;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5012:14:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5012:14:6;;;;5036:6;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5036:21:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5036:21:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5036:21:6;;;;;;;;;;;;;;;;;5067:13;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5067:30:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5067:30:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5067:30:6;;;;;;;;;;;;;;;;;5122:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5122:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5122:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5122:31:6;;;;;;;;;;;;;;;;:41;;;5172:4;5122:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5122:56:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5122:56:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5122:56:6;;;;;;;;;;;;;;;;5107:12;:71;;;;5196:19;5188:5;;:27;;;;;;;;;;;;;;;;;;;;;;;;5230:15;;;;;;;;;;4834:418;:::o;3052:658::-;1420:21;1411:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;:48;;;;;1456:3;1445:8;;:14;1411:48;1407:94;;;1481:20;1473:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;1407:94;3135:21;1338:6;1329:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1321:24;;;;;;3172:17;3192:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3192:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3192:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3192:31:6;;;;;;;;;;;;;;;;:41;;;3242:4;3192:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3192:56:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3192:56:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3192:56:6;;;;;;;;;;;;;;;;3172:76;;3258:14;3275:25;3287:12;3275:7;;:11;;:25;;;;:::i;:::-;3258:42;;3326:6;3314:9;:18;3310:54;;;3355:9;3346:18;;3310:54;3419:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3419:31:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3419:31:6;;;;;;;;;;;;;;;;:44;;;3464:10;3484:4;3491:6;3419:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:79:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3419:79:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3419:79:6;;;;;;;;;;;;;;;;3411:88;;;;;;3537:37;3567:6;3537:13;:25;3551:10;3537:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;3509:13;:25;3523:10;3509:25;;;;;;;;;;;;;;;:65;;;;3598:9;3588:6;:19;3584:69;;;3629:24;3621:5;;:32;;;;;;;;;;;;;;;;;;;;;;;;3584:69;3684:10;3668:35;;;3696:6;3668:35;;;;;;;;;;;;;;;;;;1355:1;;1511;3052:658;:::o;899:19::-;;;;:::o;876:17::-;;;;;;;;;;;;;:::o;734:26::-;;;;;;;;;;;;;:::o;646:42::-;681:7;646:42;:::o;1693:458:32:-;1751:7;1996:1;1991;:6;1987:45;;;2020:1;2013:8;;;;1987:45;2042:9;2058:1;2054;:5;2042:17;;2086:1;2081;2077;:5;;;;;;:10;2069:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;2136:8;;;1693:458;;;;;:::o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;1426:1;1422