@josojo/tokenized-events
Version:
tokenized events for pm markets
759 lines • 1.17 MB
JSON
{
"contractName": "ForkonomicToken",
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x06fdde03"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x18160ddd"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x313ce567"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x95d89b41"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
},
{
"name": "",
"type": "bytes32"
},
{
"name": "",
"type": "bytes32"
}
],
"name": "allowed",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x99086183"
},
{
"constant": true,
"inputs": [],
"name": "fSystem",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xd440796e"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "lastDebitWindows",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xe10db511"
},
{
"inputs": [
{
"name": "_fSystem",
"type": "address"
},
{
"name": "initalFundingContracts",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor",
"signature": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": false,
"name": "ownerBox",
"type": "bytes32"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "spenderBox",
"type": "bytes32"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
},
{
"indexed": false,
"name": "branch",
"type": "bytes32"
}
],
"name": "Approval",
"type": "event",
"signature": "0x3676da71ebbe2008b6d2bf52b4ab0678cb2166150551071ce4f784087bec6186"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": false,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "fromBox",
"type": "bytes32"
},
{
"indexed": false,
"name": "toBox",
"type": "bytes32"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"name": "branch",
"type": "bytes32"
}
],
"name": "Transfer",
"type": "event",
"signature": "0x0c6b0e76e483dcdd5bb0b263cc6619434b90af2c8728f59df72be0f801203dbd"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_branch",
"type": "bytes32"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x8180f2fc"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "branch",
"type": "bytes32"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x1c8d5d38"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_branch",
"type": "bytes32"
},
{
"name": "fromBox",
"type": "bytes32"
},
{
"name": "spenderBox",
"type": "bytes32"
}
],
"name": "approveBox",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xd1fe5313"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "branch",
"type": "bytes32"
},
{
"name": "senderBox",
"type": "bytes32"
},
{
"name": "receiverBox",
"type": "bytes32"
}
],
"name": "allowanceBox",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xc3471979"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "branch",
"type": "bytes32"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x4d30b6be"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "branch",
"type": "bytes32"
},
{
"name": "acct",
"type": "bytes32"
}
],
"name": "balanceOfBox",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xf2482e2b"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "minBalance",
"type": "uint256"
},
{
"name": "branchHash",
"type": "bytes32"
}
],
"name": "isAmountSpendable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x911651ac"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "minBalance",
"type": "uint256"
},
{
"name": "branchHash",
"type": "bytes32"
},
{
"name": "box",
"type": "bytes32"
}
],
"name": "isAmountSpendableBox",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xd0c91487"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x57cfeeee"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
},
{
"name": "fromBox",
"type": "bytes32"
},
{
"name": "toBox",
"type": "bytes32"
}
],
"name": "boxTransfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x6dd265a5"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x401e3367"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "addrTo",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
},
{
"name": "fromBox",
"type": "bytes32"
}
],
"name": "boxTransferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x1b6672d2"
},
{
"constant": false,
"inputs": [
{
"name": "fromAddr",
"type": "address"
},
{
"name": "toAddr",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
},
{
"name": "fromBox",
"type": "bytes32"
},
{
"name": "toBox",
"type": "bytes32"
}
],
"name": "boxTransferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x17d287e0"
},
{
"constant": false,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "box",
"type": "bytes32"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "branch",
"type": "bytes32"
}
],
"name": "recordBoxWithdrawal",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x8097c95e"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "box",
"type": "bytes32"
},
{
"name": "branchHash",
"type": "bytes32"
},
{
"name": "earliestPossibleBranch",
"type": "bytes32"
}
],
"name": "hasBoxWithdrawal",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xcf54a3d3"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "box",
"type": "bytes32"
},
{
"name": "branchHash",
"type": "bytes32"
},
{
"name": "earliestPossibleBranch",
"type": "bytes32"
}
],
"name": "recordedBoxWithdrawalAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x38487803"
},
{
"constant": true,
"inputs": [
{
"name": "acct",
"type": "bytes32"
},
{
"name": "minBalance",
"type": "uint256"
},
{
"name": "branchHash",
"type": "bytes32"
}
],
"name": "_isAmountSpendable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x66422c47"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001f8038038062001f80833981016040818152825160208085015160058054600160a060020a031916600160a060020a0380861691909117918290557f176b6f010000000000000000000000000000000000000000000000000000000087529451939691909101946000948594859485949092169263176b6f0192600480830193919282900301818787803b158015620000af57600080fd5b505af1158015620000c4573d6000803e3d6000fd5b505050506040513d6020811015620000db57600080fd5b505185519094509250600c83106200015457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f20746f6f206d616e792066756e64696e67206163636f756e7473000000000000604482015290519081900360640190fd5b600091505b82821015620002645784828151811015156200017157fe5b9060200190602002015160006040516020018083600160a060020a0316600160a060020a03166c010000000000000000000000000281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310620001fd5780518252601f199092019160209182019101620001dc565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008a8152808352848120828252909252929020805465befe6f6720009081019091556004805490910190555060019490940193925062000159915050565b505050505050611d06806200027a6000396000f30060806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014257806317d287e0146101cc57806318160ddd146102135780631b6672d21461023a5780631c8d5d381461026a578063313ce5671461029457806338487803146102bf578063401e3367146102e95780634d30b6be1461031657806357cfeeee1461033a57806366422c47146103615780636dd265a51461037f5780638097c95e146103ac5780638180f2fc146103d6578063911651ac146103fd57806395d89b41146104245780639908618314610439578063c347197914610457578063cf54a3d314610487578063d0c91487146104b1578063d1fe5313146104db578063d440796e14610508578063e10db51114610539578063f2482e2b14610551575b600080fd5b34801561014e57600080fd5b50610157610578565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610191578181015183820152602001610179565b50505050905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d857600080fd5b506101ff600160a060020a036004358116906024351660443560643560843560a4356105af565b604080519115158252519081900360200190f35b34801561021f57600080fd5b50610228610b5c565b60408051918252519081900360200190f35b34801561024657600080fd5b506101ff600160a060020a0360043581169060243516604435606435608435610b62565b34801561027657600080fd5b50610228600160a060020a0360043581169060243516604435610b7d565b3480156102a057600080fd5b506102a9610b95565b6040805160ff9092168252519081900360200190f35b3480156102cb57600080fd5b50610228600160a060020a0360043516602435604435606435610b9a565b3480156102f557600080fd5b506101ff600160a060020a0360043581169060243516604435606435610d73565b34801561032257600080fd5b50610228600160a060020a0360043516602435610d8d565b34801561034657600080fd5b506101ff600160a060020a0360043516602435604435610da2565b34801561036d57600080fd5b506101ff600435602435604435610db2565b34801561038b57600080fd5b506101ff600160a060020a0360043516602435604435606435608435610edd565b3480156103b857600080fd5b506101ff600160a060020a036004351660243560443560643561139c565b3480156103e257600080fd5b506101ff600160a060020a036004351660243560443561154f565b34801561040957600080fd5b506101ff600160a060020a036004351660243560443561155f565b34801561043057600080fd5b50610157611600565b34801561044557600080fd5b50610228600435602435604435611637565b34801561046357600080fd5b50610228600160a060020a036004358116906024351660443560643560843561165a565b34801561049357600080fd5b506101ff600160a060020a03600435166024356044356064356117c0565b3480156104bd57600080fd5b506101ff600160a060020a0360043516602435604435606435611933565b3480156104e757600080fd5b506101ff600160a060020a03600435166024356044356064356084356119d3565b34801561051457600080fd5b5061051d611b6a565b60408051600160a060020a039092168252519081900360200190f35b34801561054557600080fd5b50610228600435611b79565b34801561055d57600080fd5b50610228600160a060020a0360043516602435604435611b8b565b60408051808201909152600c81527f5265616c697479546f6b656e0000000000000000000000000000000000000000602082015281565b60008060008060008a876040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061062e5780518252601f19909201916020918201910161060f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020935089866040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083106106d45780518252601f1990920191602091820191016106b5565b51815160209384036101000a60001901801990921691161790526040805192909401829003822033606060020a028383015260348084018e90528551808503909101815260549093019485905282519099509195509293508392850191508083835b602083106107555780518252601f199092019160209182019101610736565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600560009054906101000a9004600160a060020a0316600160a060020a0316636ceccf73896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050506040513d602081101561082d57600080fd5b5051600085815260036020908152604080832086845282528083208c845290915290205490915089111561086057600080fd5b660775f05a0740008911156108bf576040805160e560020a62461bcd02815260206004820152601f60248201527f20616d6f756e7420686967686572207468616e20746f74616c537570706c7900604482015290519081900360640190fd5b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a0390921691634dd8aa05916024808201926020929091908290030181600087803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d602081101561095057600080fd5b505115156109a8576040805160e560020a62461bcd02815260206004820152601160248201527f6272616e6368206d757374206578697374000000000000000000000000000000604482015290519081900360640190fd5b600084815260026020526040902054811015610a0e576040805160e560020a62461bcd02815260206004820152601860248201527f6465626974732063616e7420676f206261636b77617264730000000000000000604482015290519081900360640190fd5b610a19848a8a610db2565b1515610a6f576040805160e560020a62461bcd02815260206004820152601860248201527f616d6f756e74206d757374206265207370656e6461626c650000000000000000604482015290519081900360640190fd5b60008481526002602090815260408083208490558a8352828252808320878452825280832080548d9003905585835280832080548d0190558683526003825280832085845282528083208b8452909152902054610acc908a611cc8565b600085815260036020908152604080832086845282528083208c84528252808320939093558251600160a060020a038e8116825291810183905280840192909252606082018c9052608082018b90529151918d16917f0c6b0e76e483dcdd5bb0b263cc6619434b90af2c8728f59df72be0f801203dbd9181900360a00190a25060019a9950505050505050505050565b60045481565b6000610b73868686868660006105af565b9695505050505050565b6000610b8d84848460008061165a565b949350505050565b601281565b60408051606060020a338102602080840191909152600160a060020a0388169091026034830152604880830187905283518084039091018152606890920192839052815160009384938493909282918401908083835b60208310610c0f5780518252601f199092019160209182019101610bf0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b8415801590610c525750848414155b15610cf6576000858152600160209081526040808320858452825280832054600554825160e060020a63f36b43cb028152600481018b905292519590910194600160a060020a039091169363f36b43cb93602480850194919392918390030190829087803b158015610cc357600080fd5b505af1158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b50519450610c43565b841515610b73576040805160e560020a62461bcd02815260206004820152602f60248201527f206272616e636820686173682073686f756c64206e6f7420666f6c6c6f77207460448201527f6f20746865204e554c4c5f484153480000000000000000000000000000000000606482015290519081900360840190fd5b6000610d84858585856000806105af565b95945050505050565b6000610d9b83836000611b8b565b9392505050565b6000610b8d848484600080610edd565b60008080660775f05a074000851115610e15576040805160e560020a62461bcd02815260206004820152601e60248201527f616d6f756e7420626967676572207468616e20746f74616c537570706c790000604482015290519081900360640190fd5b5060009050835b8315610ecf57600084815260208181526040808320898452825280832054600554825160e060020a63f36b43cb028152600481018a905292519690910195600160a060020a039091169363f36b43cb93602480850194919392918390030190829087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b50519350808212610eca5760019250610ed4565b610e1c565b600092505b50509392505050565b600554604080517f6ceccf7300000000000000000000000000000000000000000000000000000000815260048101869052905160009283928392600160a060020a0390921691636ceccf739160248082019260209290919082900301818787803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b505050506040513d6020811015610f7457600080fd5b50519150660775f05a074000871115610ffd576040805160e560020a62461bcd02815260206004820152602760248201527f2073656e64696e6720616d6f756e7420626967676572207468616e20746f746160448201527f6c537570706c7900000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018990529051600160a060020a0390921691634dd8aa05916024808201926020929091908290030181600087803b15801561106457600080fd5b505af1158015611078573d6000803e3d6000fd5b505050506040513d602081101561108e57600080fd5b505115156110e6576040805160e560020a62461bcd02815260206004820152601260248201527f206272616e6368206d7573742065786973740000000000000000000000000000604482015290519081900360640190fd5b60408051606060020a3302602080830191909152603480830189905283518084039091018152605490920192839052815191929182918401908083835b602083106111425780518252601f199092019160209182019101611123565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526002909252929020549194505084101591506111fd9050576040805160e560020a62461bcd02815260206004820152602a60248201527f206272616e636857696e646f77203e3d206c617374446562697457696e646f7760448201527f735b6163636f756e745d00000000000000000000000000000000000000000000606482015290519081900360840190fd5b611208818888610db2565b151561125e576040805160e560020a62461bcd02815260206004820152601960248201527f20616d6f756e7420776173206e6f74207370656e6461626c6500000000000000604482015290519081900360640190fd5b600081815260026020908152604080832085905588835282825280832084845280835281842080548c900390558984528383528151606060020a600160a060020a038e16028185015260348082018a90528351808303909101815260549091019283905280518c959294929391928291908401908083835b602083106112f55780518252601f1990920191602091820191016112d6565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600020805495909501909455508051338152918201889052818101879052606082018a90526080820189905251600160a060020a038b1692507f0c6b0e76e483dcdd5bb0b263cc6619434b90af2c8728f59df72be0f801203dbd9160a0908290030190a2506001979650505050505050565b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a031691634dd8aa0591602480830192602092919082900301818787803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d602081101561142c57600080fd5b50511515611484576040805160e560020a62461bcd02815260206004820152601160248201527f6272616e6368206d757374206578697374000000000000000000000000000000604482015290519081900360640190fd5b60008281526001602090815260408083208151606060020a33810282860152600160a060020a038b1602603482015260488082018a905283518083039091018152606890910192839052805188959294929391928291908401908083835b602083106115015780518252601f1990920191602091820191016114e2565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805494909401909355506001979650505050505050565b6000610b8d8484846000806119d3565b60408051606060020a600160a060020a03861602602080830191909152600060348084018290528451808503909101815260549093019384905282519093610b8d9392909182918401908083835b602083106115cc5780518252601f1990920191602091820191016115ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208484610db2565b60408051808201909152600381527f524c540000000000000000000000000000000000000000000000000000000000602082015281565b600360209081526000938452604080852082529284528284209052825290205481565b60408051606060020a600160a060020a03871602602080830191909152603480830186905283518084039091018152605490920192839052815160009384938493909282918401908083835b602083106116c55780518252601f1990920191602091820191016116a6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915087846040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061176b5780518252601f19909201916020918201910161174c565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000908152600382528381209781529681528287209a875299909952909320549998505050505050505050565b60408051606060020a338102602080840191909152600160a060020a03881690910260348301526048808301879052835180840390910181526068909201928390528151600093849392909182918401908083835b602083106118345780518252601f199092019160209182019101611815565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090505b83158015906118735750838314155b1561192557600084815260016020908152604080832084845290915281205413156118a1576001915061192a565b6005546040805160e060020a63f36b43cb028152600481018790529051600160a060020a039092169163f36b43cb916024808201926020929091908290030181600087803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050506040513d602081101561191c57600080fd5b50519350611864565b600091505b50949350505050565b60408051606060020a600160a060020a038716026020808301919091526034808301859052835180840390910181526054909201928390528151600093610d849392909182918401908083835b6020831061199f5780518252601f199092019160209182019101611980565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208585610db2565b60408051606060020a600160a060020a03881602602080830191909152603480830185905283518084039091018152605490920192839052815160009384938493909282918401908083835b60208310611a3e5780518252601f199092019160209182019101611a1f565b51815160209384036101000a60001901801990921691161790526040805192909401829003822033606060020a028383015260348084018d90528551808503909101815260549093019485905282519098509195509293508392850191508083835b60208310611abf5780518252601f199092019160209182019101611aa0565b51815160001960209485036101000a01908116901991909116179052604080519490920184900384206000818152600383528381208a825283528381208e825283528390208e90558b85529084018a90528382018d9052606084018c90529051909550600160a060020a038d1694503393507f3676da71ebbe2008b6d2bf52b4ab0678cb2166150551071ce4f784087bec6186928190036080019150a3506001979650505050505050565b600554600160a060020a031681565b60026020526000908152604090205481565b6000805b8315610b8d576000848152602081815260408083208151606060020a600160a060020a038b160281850152603480820189905283518083039091018152605490910192839052805191949390929182918401908083835b60208310611c055780518252601f199092019160209182019101611be6565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812054600554855160e060020a63f36b43cb028152600481018c905295519790910196600160a060020a039091169563f36b43cb95602480820196509194509192918390030190829087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505050506040513d6020811015611cbf57600080fd5b50519350611b8f565b600082821115611cd457fe5b509003905600a165627a7a723058203844779856895f37ba9c906bb0c72c943c5dca1def4e17acbc142497071b67eb0029",
"deployedBytecode": "0x60806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014257806317d287e0146101cc57806318160ddd146102135780631b6672d21461023a5780631c8d5d381461026a578063313ce5671461029457806338487803146102bf578063401e3367146102e95780634d30b6be1461031657806357cfeeee1461033a57806366422c47146103615780636dd265a51461037f5780638097c95e146103ac5780638180f2fc146103d6578063911651ac146103fd57806395d89b41146104245780639908618314610439578063c347197914610457578063cf54a3d314610487578063d0c91487146104b1578063d1fe5313146104db578063d440796e14610508578063e10db51114610539578063f2482e2b14610551575b600080fd5b34801561014e57600080fd5b50610157610578565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610191578181015183820152602001610179565b50505050905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d857600080fd5b506101ff600160a060020a036004358116906024351660443560643560843560a4356105af565b604080519115158252519081900360200190f35b34801561021f57600080fd5b50610228610b5c565b60408051918252519081900360200190f35b34801561024657600080fd5b506101ff600160a060020a0360043581169060243516604435606435608435610b62565b34801561027657600080fd5b50610228600160a060020a0360043581169060243516604435610b7d565b3480156102a057600080fd5b506102a9610b95565b6040805160ff9092168252519081900360200190f35b3480156102cb57600080fd5b50610228600160a060020a0360043516602435604435606435610b9a565b3480156102f557600080fd5b506101ff600160a060020a0360043581169060243516604435606435610d73565b34801561032257600080fd5b50610228600160a060020a0360043516602435610d8d565b34801561034657600080fd5b506101ff600160a060020a0360043516602435604435610da2565b34801561036d57600080fd5b506101ff600435602435604435610db2565b34801561038b57600080fd5b506101ff600160a060020a0360043516602435604435606435608435610edd565b3480156103b857600080fd5b506101ff600160a060020a036004351660243560443560643561139c565b3480156103e257600080fd5b506101ff600160a060020a036004351660243560443561154f565b34801561040957600080fd5b506101ff600160a060020a036004351660243560443561155f565b34801561043057600080fd5b50610157611600565b34801561044557600080fd5b50610228600435602435604435611637565b34801561046357600080fd5b50610228600160a060020a036004358116906024351660443560643560843561165a565b34801561049357600080fd5b506101ff600160a060020a03600435166024356044356064356117c0565b3480156104bd57600080fd5b506101ff600160a060020a0360043516602435604435606435611933565b3480156104e757600080fd5b506101ff600160a060020a03600435166024356044356064356084356119d3565b34801561051457600080fd5b5061051d611b6a565b60408051600160a060020a039092168252519081900360200190f35b34801561054557600080fd5b50610228600435611b79565b34801561055d57600080fd5b50610228600160a060020a0360043516602435604435611b8b565b60408051808201909152600c81527f5265616c697479546f6b656e0000000000000000000000000000000000000000602082015281565b60008060008060008a876040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061062e5780518252601f19909201916020918201910161060f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020935089866040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083106106d45780518252601f1990920191602091820191016106b5565b51815160209384036101000a60001901801990921691161790526040805192909401829003822033606060020a028383015260348084018e90528551808503909101815260549093019485905282519099509195509293508392850191508083835b602083106107555780518252601f199092019160209182019101610736565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600560009054906101000a9004600160a060020a0316600160a060020a0316636ceccf73896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050506040513d602081101561082d57600080fd5b5051600085815260036020908152604080832086845282528083208c845290915290205490915089111561086057600080fd5b660775f05a0740008911156108bf576040805160e560020a62461bcd02815260206004820152601f60248201527f20616d6f756e7420686967686572207468616e20746f74616c537570706c7900604482015290519081900360640190fd5b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a0390921691634dd8aa05916024808201926020929091908290030181600087803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d602081101561095057600080fd5b505115156109a8576040805160e560020a62461bcd02815260206004820152601160248201527f6272616e6368206d757374206578697374000000000000000000000000000000604482015290519081900360640190fd5b600084815260026020526040902054811015610a0e576040805160e560020a62461bcd02815260206004820152601860248201527f6465626974732063616e7420676f206261636b77617264730000000000000000604482015290519081900360640190fd5b610a19848a8a610db2565b1515610a6f576040805160e560020a62461bcd02815260206004820152601860248201527f616d6f756e74206d757374206265207370656e6461626c650000000000000000604482015290519081900360640190fd5b60008481526002602090815260408083208490558a8352828252808320878452825280832080548d9003905585835280832080548d0190558683526003825280832085845282528083208b8452909152902054610acc908a611cc8565b600085815260036020908152604080832086845282528083208c84528252808320939093558251600160a060020a038e8116825291810183905280840192909252606082018c9052608082018b90529151918d16917f0c6b0e76e483dcdd5bb0b263cc6619434b90af2c8728f59df72be0f801203dbd9181900360a00190a25060019a9950505050505050505050565b60045481565b6000610b73868686868660006105af565b9695505050505050565b6000610b8d84848460008061165a565b949350505050565b601281565b60408051606060020a338102602080840191909152600160a060020a0388169091026034830152604880830187905283518084039091018152606890920192839052815160009384938493909282918401908083835b60208310610c0f5780518252601f199092019160209182019101610bf0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b8415801590610c525750848414155b15610cf6576000858152600160209081526040808320858452825280832054600554825160e060020a63f36b43cb028152600481018b905292519590910194600160a060020a039091169363f36b43cb93602480850194919392918390030190829087803b158015610cc357600080fd5b505af1158015610cd7573d6000803e3d6000fd5b505050506040513d6020811015610ced57600080fd5b50519450610c43565b841515610b73576040805160e560020a62461bcd02815260206004820152602f60248201527f206272616e636820686173682073686f756c64206e6f7420666f6c6c6f77207460448201527f6f20746865204e554c4c5f484153480000000000000000000000000000000000606482015290519081900360840190fd5b6000610d84858585856000806105af565b95945050505050565b6000610d9b83836000611b8b565b9392505050565b6000610b8d848484600080610edd565b60008080660775f05a074000851115610e15576040805160e560020a62461bcd02815260206004820152601e60248201527f616d6f756e7420626967676572207468616e20746f74616c537570706c790000604482015290519081900360640190fd5b5060009050835b8315610ecf57600084815260208181526040808320898452825280832054600554825160e060020a63f36b43cb028152600481018a905292519690910195600160a060020a039091169363f36b43cb93602480850194919392918390030190829087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b505050506040513d6020811015610eb657600080fd5b50519350808212610eca5760019250610ed4565b610e1c565b600092505b50509392505050565b600554604080517f6ceccf7300000000000000000000000000000000000000000000000000000000815260048101869052905160009283928392600160a060020a0390921691636ceccf739160248082019260209290919082900301818787803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b505050506040513d6020811015610f7457600080fd5b50519150660775f05a074000871115610ffd576040805160e560020a62461bcd02815260206004820152602760248201527f2073656e64696e6720616d6f756e7420626967676572207468616e20746f746160448201527f6c537570706c7900000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018990529051600160a060020a0390921691634dd8aa05916024808201926020929091908290030181600087803b15801561106457600080fd5b505af1158015611078573d6000803e3d6000fd5b505050506040513d602081101561108e57600080fd5b505115156110e6576040805160e560020a62461bcd02815260206004820152601260248201527f206272616e6368206d7573742065786973740000000000000000000000000000604482015290519081900360640190fd5b60408051606060020a3302602080830191909152603480830189905283518084039091018152605490920192839052815191929182918401908083835b602083106111425780518252601f199092019160209182019101611123565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526002909252929020549194505084101591506111fd9050576040805160e560020a62461bcd02815260206004820152602a60248201527f206272616e636857696e646f77203e3d206c617374446562697457696e646f7760448201527f735b6163636f756e745d00000000000000000000000000000000000000000000606482015290519081900360840190fd5b611208818888610db2565b151561125e576040805160e560020a62461bcd02815260206004820152601960248201527f20616d6f756e7420776173206e6f74207370656e6461626c6500000000000000604482015290519081900360640190fd5b600081815260026020908152604080832085905588835282825280832084845280835281842080548c900390558984528383528151606060020a600160a060020a038e16028185015260348082018a90528351808303909101815260549091019283905280518c959294929391928291908401908083835b602083106112f55780518252601f1990920191602091820191016112d6565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600020805495909501909455508051338152918201889052818101879052606082018a90526080820189905251600160a060020a038b1692507f0c6b0e76e483dcdd5bb0b263cc6619434b90af2c8728f59df72be0f801203dbd9160a0908290030190a2506001979650505050505050565b600554604080517f4dd8aa05000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a031691634dd8aa0591602480830192602092919082900301818787803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d602081101561142c57600080fd5b50511515611484576040805160e560020a62461bcd02815260206004820152601160248201527f6272616e6368206d757374206578697374000000000000000000000000000000604482015290519081900360640190fd5b60008281526001602090815260408083208151606060020a33810282860152600160a060020a038b1602603482015260488082018a905283518083039091018152606890910192839052805188959294929391928291908401908083835b602083106115015780518252601f1990920191602091820191016114e2565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805494909401909355506001979650505050505050565b6000610b8d8484846000806119d3565b60408051606060020a600160a060020a03861602602080830191909152600060348084018290528451808503909101815260549093019384905282519093610b8d9392909182918401908083835b602083106115cc5780518252601f1990920191602091820191016115ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208484610db2565b60408051808201909152600381527f524c540000000000000000000000000000000000000000000000000000000000602082015281565b600360209081526000938452604080852082529284528284209052825290205481565b60408051606060020a600160a060020a03871602602080830191909152603480830186905283518084039091018152605490920192839052815160009384938493909282918401908083835b602083106116c55780518252601f1990920191602091820191016116a6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915087846040516020018083600160a060020a0316600160a060020a0316606060020a0281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061176b5780518252601f19909201916020918201910161174c565b51815160209384036101000a600019018019909216911617905260408051929094018290039091206000908152600382528381209781529681528287209a875299909952909320549998505050505050505050565b60408051606060020a338102602080840191909152600160a060020a03881690910260348301526048808301879052835180840390910181526068909201928390528151600093849392909182918401908083835b602083106118345780518252601f199092019160209182019101611815565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090505b83158015906118735750838314155b1561192557600084815260016020908152604080832084845290915281205413156118a1576001915061192a565b6005546040805160e060020a63f36b43cb028152600481018790529051600160a060020a039092169163f36b43cb916024808201926020929091908290030181600087803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050506040513d602081101561191c57600080fd5b50519350611864565b600091505b50949350505050565b60408051606060020a600160a060020a038716026020808301919091526034808301859052835180840390910181526054909201928390528151600093610d849392909182918401908083835b6020831061199f5780518252601f199092019160209182019101611980565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208585610db2565b60408051606060020a600160a060020a03881602602080830191909152603480830185905283518084039091018152605490920192839052815160009384938493909282918401908083835b60208310611a3e5780518252601f199092019160209182019101611a1f565b51815160209384036101000a60001901801990921691161790526040805192909401829003822033606060020a028383015260348084018d90528551808503909101815260549093019485905282519098509195509293508392850191508083835b60208310611abf5780518252601f199092019160209182019101611aa0565b51815160001960209485036101000a01908116901991909116179052604080519490920184900384206000818152600383528381208a825283528381208e825283528390208e90558b85529084018a90528382018d9052606084018c90529051909550600160a060020a038d1694503393507f3676da71ebbe2008b6d2bf52b4ab0678cb2166150551071ce4f784087bec6186928190036080019150a3506001979650505050505050565b600554600160a060020a031681565b60026020526000908152604090205481565b6000805b8315610b8d576000848152602081815260408083208151606060020a600160a060020a038b160281850152603480820189905283518083039091018152605490910192839052805191949390929182918401908083835b60208310611c055780518252601f199092019160209182019101611be6565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528581019690965250928301600090812054600554855160e060020a63f36b43cb028152600481018c905295519790910196600160a060020a039091169563f36b43cb95602480820196509194509192918390030190829087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505050506040513d6020811015611cbf57600080fd5b50519350611b8f565b600082821115611cd457fe5b509003905600a165627a7a723058203844779856895f37ba9c906bb0c72c943c5dca1def4e17acbc142497071b67eb0029",
"sourceMap": "120:9528:15:-;;;1503:582;8:9:-1;5:2;;;30:1;27;20:12;5:2;1503:582:15;;;;;;;;;;;;;;;;;;;;;;;1598:7;:18;;-1:-1:-1;;;;;;1598:18:15;-1:-1:-1;;;;;1598:18:15;;;;;;;;;;;1654:27;;;;;1503:582;;;;;;;-1:-1:-1;;;;;;;;1654:7:15;;;;:25;;:27;;;;;1503:582;;1654:27;;;;;-1:-1:-1;1654:7:15;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;1654:27:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1654:27:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1654:27:15;1711:29;;1654:27;;-1:-1:-1;1711:29:15;-1:-1:-1;1771:2:15;1759:14;;1751:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1830:1;1820:11;;1815:264;1837:9;1833:1;:13;1815:264;;;1912:22;1935:1;1912:25;;;;;;;;;;;;;;;;;;1939:9;1895:54;;;;;;-1:-1:-1;;;;;1895:54:15;-1:-1:-1;;;;;1895:54:15;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1895:54:15;;;1885:65;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1885:65:15;;;;;;;;;;;;;-1:-1:-1;1964:32:15;;;;;;;;;:41;;;;;;;;;:60;;2009:15;1964:60;;;;;;2038:11;:30;;;;;;;-1:-1:-1;;1848:3:15;;;;;1885:65;-1:-1:-1;1815:264:15;;-1:-1:-1;;1815:264:15;;1503:582;;;;;;120:9528;;;;;;",
"deployedSourceMap": "120:9528:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;485:44:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;485:44:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5707:1286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5707:1286:15;-1:-1:-1;;;;;5707:1286:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1433:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1433:26:15;;;;;;;;;;;;;;;;;;;;6999:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6999:219:15;-1:-1:-1;;;;;6999:219:15;;;;;;;;;;;;;;;;2284:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2284:194:15;-1:-1:-1;;;;;2284:194:15;;;;;;;;;;;;578:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;578:35:15;;;;;;;;;;;;;;;;;;;;;;;8190:595;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8190:595:15;-1:-1:-1;;;;;8190:595:15;;;;;;;;;;;5508:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5508:193:15;-1:-1:-1;;;;;5508:193:15;;;;;;;;;;;;;;3351:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3351:148:15;-1:-1:-1;;;;;3351:148:15;;;;;;;4339:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4339:169:15;-1:-1:-1;;;;;4339:169:15;;;;;;;;;9095:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9095:550:15;;;;;;;;;4514:988;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4514:988:15;-1:-1:-1;;;;;4514:988:15;;;;;;;;;;;;;7274:315;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7274:315:15;-1:-1:-1;;;;;7274:315:15;;;;;;;;;;;2091:187;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2091:187:15;-1:-1:-1;;;;;2091:187:15;;;;;;;;;3861:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3861:228:15;-1:-1:-1;;;;;3861:228:15;;;;;;;;;535:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;535:37:15;;;;1345:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1345:81:15;;;;;;;;;2958:387;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2958:387:15;-1:-1:-1;;;;;2958:387:15;;;;;;;;;;;;;;;;7649:495;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7649:495:15;-1:-1:-1;;;;;7649:495:15;;;;;;;;;;;4095:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4095:238:15;-1:-1:-1;;;;;4095:238:15;;;;;;;;;;;2484:468;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2484:468:15;-1:-1:-1;;;;;2484:468:15;;;;;;;;;;;;;1465:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1465:31:15;;;;;;;;-1:-1:-1;;;;;1465:31:15;;;;;;;;;;;;;;1172:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1172:51:15;;;;;3505:350;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3505:350:15;-1:-1:-1;;;;;3505:350:15;;;;;;;;;485:44;;;;;;;;;;;;;;;;;;;:::o;5707:1286::-;5858:4;5875:15;5948:13;6016:17;6092:20;5919:8;5929:7;5902:35;;;;;;-1:-1:-1;;;;;5902:35:15;-1:-1:-1;;;;;5902:35:15;-1:-1:-1;;;5902:35:15;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5902:35:15;;;5892:46;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20