dgf-prototype/backend/contractArtifacts/Onboarding.json

496 lines
65 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "Onboarding",
"sourceName": "contracts/Onboarding.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract DAO",
"name": "dao_",
"type": "address"
},
{
"internalType": "contract Proposals",
"name": "proposals_",
"type": "address"
},
{
"internalType": "uint256",
"name": "price_",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "dao",
"type": "address"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "InvalidSender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "stakeIndex",
"type": "uint256"
}
],
"name": "AvailabilityStaked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "priceProposalIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "PriceChangeAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "priceProposalIndex",
"type": "uint256"
}
],
"name": "PriceChangeProposed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "requestIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "approval",
"type": "bool"
}
],
"name": "WorkApprovalSubmitted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "requestIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeIndex",
"type": "uint256"
}
],
"name": "WorkAssigned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "requestIndex",
"type": "uint256"
}
],
"name": "WorkEvidenceSubmitted",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "acceptAvailability",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakeIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "extendAvailability",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"name": "onProposalAccepted",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "votePasses",
"type": "bool"
},
{
"internalType": "bool",
"name": "quorumMet",
"type": "bool"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"name": "onValidate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "price",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "priceProposalCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "priceProposals",
"outputs": [
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalIndex",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newPrice",
"type": "uint256"
},
{
"internalType": "string",
"name": "postId",
"type": "string"
},
{
"internalType": "uint256[3]",
"name": "durations",
"type": "uint256[3]"
}
],
"name": "proposeNewPrice",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "requestCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "requestPostId",
"type": "string"
}
],
"name": "requestWork",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "requests",
"outputs": [
{
"internalType": "address",
"name": "customer",
"type": "address"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "enum Work.WorkStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "stakeIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "requestPostId",
"type": "string"
},
{
"internalType": "string",
"name": "evidencePostId",
"type": "string"
},
{
"internalType": "bool",
"name": "approval",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakeCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "stakes",
"outputs": [
{
"internalType": "address",
"name": "worker",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endTime",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assigned",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requestIndex",
"type": "uint256"
},
{
"internalType": "bool",
"name": "approval",
"type": "bool"
}
],
"name": "submitWorkApproval",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requestIndex",
"type": "uint256"
},
{
"internalType": "string",
"name": "evidencePostId",
"type": "string"
},
{
"components": [
{
"internalType": "int256",
"name": "weightPPM",
"type": "int256"
},
{
"internalType": "string",
"name": "targetPostId",
"type": "string"
}
],
"internalType": "struct Citation[]",
"name": "citations",
"type": "tuple[]"
}
],
"name": "submitWorkEvidence",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60a06040523480156200001157600080fd5b5060405162003787380380620037878339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b60805161351362000274600039600081816104c801528181610556015281816105a901528181610ae701528181610bb701528181610cd401528181610ee5015281816110fb015261118d01526135136000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611915565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b91906119f6565b6104c6565b005b34801561013e57600080fd5b50610147610718565b6040516101549190611a58565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611ac9565b61071e565b6040516101919190611a58565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611b3d565b61079d565b6040516101d49796959493929190611c9b565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611d44565b610929565b005b610220600480360381019061021b9190611da6565b610d94565b005b34801561022e57600080fd5b50610237610edd565b6040516102449190611a58565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611e1a565b610ee3565b005b34801561028257600080fd5b5061029d60048036038101906102989190611eb4565b611285565b005b3480156102ab57600080fd5b506102b46113f9565b6040516102c19190611a58565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611b3d565b6113ff565b6040516102ff929190611ef4565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611f73565b611423565b005b34801561033d57600080fd5b5061035860048036038101906103539190611b3d565b61165b565b6040516103689493929190612008565b60405180910390f35b34801561037d57600080fd5b506103866116b8565b6040516103939190611a58565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890612099565b60405180910390fd5b6000600760008154809291906103f6906120e8565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104676116be565b81600301819055508383826004019182610482929190612376565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611ef4565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b906124b8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610606577f0000000000000000000000000000000000000000000000000000000000000000336040517fe1130dba0000000000000000000000000000000000000000000000000000000081526004016105fd9291906124d8565b60405180910390fd5b60008211610649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106409061254d565b60405180910390fd5b60006001600081548092919061065e906120e8565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106d2919061256d565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516107099190611a58565b60405180910390a15050505050565b60075481565b60008083838101906107309190611b3d565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600354604051610787929190611ef4565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461080590612199565b80601f016020809104026020016040519081016040528092919081815260200182805461083190612199565b801561087e5780601f106108535761010080835404028352916020019161087e565b820191906000526020600020905b81548152906001019060200180831161086157829003601f168201915b50505050509080600501805461089390612199565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf90612199565b801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561095457610953611b79565b5b8160020160009054906101000a900460ff16600381111561097857610977611b79565b5b146109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af906125ed565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff021916908360038111156109fa576109f9611b79565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff811115610a3857610a3761213b565b5b604051908082528060200260200182016040528015610a7157816020015b610a5e611876565b815260200190600190039081610a565790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610ada57610ad961260d565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610b48939291906129aa565b600060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610bab9291906129f6565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610c029190612a4e565b8660010154610c119190612a7f565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610c5b9190611a58565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610c8d989796959493929190612bdf565b60206040518083038185885af1158015610cab573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cd09190612c82565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610d5a9493929190612caf565b600060405180830381600087803b158015610d7457600080fd5b505af1158015610d88573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610da9906120e8565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610e249190611a58565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610e53959493929190612d49565b60206040518083038185885af1158015610e71573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e969190612c82565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ecd9190611a58565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612e10565b60405180910390fd5b60008282810190610f829190611b3d565b90506000600660008381526020019081526020016000209050871580610fa6575086155b1561102d578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610ffa9190612a4e565b9081150290604051600060405180830381858888f19350505050158015611025573d6000803e3d6000fd5b50505061127d565b60606000600167ffffffffffffffff81111561104c5761104b61213b565b5b60405190808252806020026020018201604052801561108557816020015b611072611876565b81526020019060019003908161106a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106110ee576110ed61260d565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b815260040161115993929190612f57565b600060405180830381600087803b15801561117357600080fd5b505af1158015611187573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111d89190612a4e565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016112349796959493929190612fc9565b60206040518083038185885af1158015611252573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112779190612c82565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611324906130c7565b60405180910390fd5b8060030160009054906101000a900460ff161561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613159565b60405180910390fd5b80600201544211156113a4578142611397919061256d565b81600201819055506113bd565b8181600201546113b4919061256d565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516113ec9190611a58565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561144e5761144d611b79565b5b8160020160009054906101000a900460ff16600381111561147257611471611b79565b5b146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906131c5565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613257565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561158657611585611b79565b5b0217905550858583600501918261159e929190612376565b5060005b8484905081101561161a57826006018585838181106115c4576115c361260d565b5b90506020028101906115d69190613286565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161160b9190613432565b505080806001019150506115a2565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161164a9190611a58565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006116c8611701565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156117855760008082815260200190815260200160002060030160009054906101000a900460ff1661177857600080828152602001908152602001600020600201544211611778576000808281526020019081526020016000206001015482611775919061256d565b91505b8080600101915050611707565b50600081116117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061348c565b60405180910390fd5b600081446117d791906134ac565b9050600080600090505b60015481101561186f5760008082815260200190815260200160002060030160009054906101000a900460ff166118625760008082815260200190815260200160002060020154421161186257600080828152602001908152602001600020600101548261184f919061256d565b9150828211156118615780945061186f565b5b80806001019150506117e1565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118d5576118d46118b0565b5b8235905067ffffffffffffffff8111156118f2576118f16118b5565b5b60208301915083600182028301111561190e5761190d6118ba565b5b9250929050565b6000806020838503121561192c5761192b6118a6565b5b600083013567ffffffffffffffff81111561194a576119496118ab565b5b611956858286016118bf565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061198d82611962565b9050919050565b61199d81611982565b81146119a857600080fd5b50565b6000813590506119ba81611994565b92915050565b6000819050919050565b6119d3816119c0565b81146119de57600080fd5b50565b6000813590506119f0816119ca565b92915050565b600080600060608486031215611a0f57611a0e6118a6565b5b6000611a1d868287016119ab565b9350506020611a2e868287016119e1565b9250506040611a3f868287016119e1565b9150509250925092565b611a52816119c0565b82525050565b6000602082019050611a6d6000830184611a49565b92915050565b60008083601f840112611a8957611a886118b0565b5b8235905067ffffffffffffffff811115611aa657611aa56118b5565b5b602083019150836001820283011115611ac257611ac16118ba565b5b9250929050565b60008060008060608587031215611ae357611ae26118a6565b5b6000611af1878288016119e1565b9450506020611b02878288016119e1565b935050604085013567ffffffffffffffff811115611b2357611b226118ab565b5b611b2f87828801611a73565b925092505092959194509250565b600060208284031215611b5357611b526118a6565b5b6000611b61848285016119e1565b91505092915050565b611b7381611982565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611bb957611bb8611b79565b5b50565b6000819050611bca82611ba8565b919050565b6000611bda82611bbc565b9050919050565b611bea81611bcf565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c2a578082015181840152602081019050611c0f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c5282611bf0565b611c5c8185611bfb565b9350611c6c818560208601611c0c565b611c7581611c36565b840191505092915050565b60008115159050919050565b611c9581611c80565b82525050565b600060e082019050611cb0600083018a611b6a565b611cbd6020830189611a49565b611cca6040830188611be1565b611cd76060830187611a49565b8181036080830152611ce98186611c47565b905081810360a0830152611cfd8185611c47565b9050611d0c60c0830184611c8c565b98975050505050505050565b611d2181611c80565b8114611d2c57600080fd5b50565b600081359050611d3e81611d18565b92915050565b60008060408385031215611d5b57611d5a6118a6565b5b6000611d69858286016119e1565b9250506020611d7a85828601611d2f565b9150509250929050565b600081905082602060030282011115611da057611d9f6118ba565b5b92915050565b60008060008060a08587031215611dc057611dbf6118a6565b5b6000611dce878288016119e1565b945050602085013567ffffffffffffffff811115611def57611dee6118ab565b5b611dfb878288016118bf565b93509350506040611e0e87828801611d84565b91505092959194509250565b60008060008060008060a08789031215611e3757611e366118a6565b5b6000611e4589828a01611d2f565b9650506020611e5689828a01611d2f565b9550506040611e6789828a016119e1565b9450506060611e7889828a016119e1565b935050608087013567ffffffffffffffff811115611e9957611e986118ab565b5b611ea589828a01611a73565b92509250509295509295509295565b60008060408385031215611ecb57611eca6118a6565b5b6000611ed9858286016119e1565b9250506020611eea858286016119e1565b9150509250929050565b6000604082019050611f096000830185611a49565b611f166020830184611a49565b9392505050565b60008083601f840112611f3357611f326118b0565b5b8235905067ffffffffffffffff811115611f5057611f4f6118b5565b5b602083019150836020820283011115611f6c57611f6b6118ba565b5b9250929050565b600080600080600060608688031215611f8f57611f8e6118a6565b5b6000611f9d888289016119e1565b955050602086013567ffffffffffffffff811115611fbe57611fbd6118ab565b5b611fca888289016118bf565b9450945050604086013567ffffffffffffffff811115611fed57611fec6118ab565b5b611ff988828901611f1d565b92509250509295509295909350565b600060808201905061201d6000830187611b6a565b61202a6020830186611a49565b6120376040830185611a49565b6120446060830184611c8c565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000612083601083611bfb565b915061208e8261204d565b602082019050919050565b600060208201905081810360008301526120b281612076565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120f3826119c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612125576121246120b9565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806121b157607f821691505b6020821081036121c4576121c361216a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261222c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826121ef565b61223686836121ef565b95508019841693508086168417925050509392505050565b6000819050919050565b600061227361226e612269846119c0565b61224e565b6119c0565b9050919050565b6000819050919050565b61228d83612258565b6122a16122998261227a565b8484546121fc565b825550505050565b600090565b6122b66122a9565b6122c1818484612284565b505050565b5b818110156122e5576122da6000826122ae565b6001810190506122c7565b5050565b601f82111561232a576122fb816121ca565b612304846121df565b81016020851015612313578190505b61232761231f856121df565b8301826122c6565b50505b505050565b600082821c905092915050565b600061234d6000198460080261232f565b1980831691505092915050565b6000612366838361233c565b9150826002028217905092915050565b6123808383612130565b67ffffffffffffffff8111156123995761239861213b565b5b6123a38254612199565b6123ae8282856122e9565b6000601f8311600181146123dd57600084156123cb578287013590505b6123d5858261235a565b86555061243d565b601f1984166123eb866121ca565b60005b82811015612413578489013582556001820191506020850194506020810190506123ee565b86831015612430578489013561242c601f89168261233c565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006124a2603683611bfb565b91506124ad82612446565b604082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b60006040820190506124ed6000830185611b6a565b6124fa6020830184611b6a565b9392505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612537601183611bfb565b915061254282612501565b602082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b6000612578826119c0565b9150612583836119c0565b925082820190508082111561259b5761259a6120b9565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006125d7602083611bfb565b91506125e2826125a1565b602082019050919050565b60006020820190508181036000830152612606816125ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612671816119c0565b82525050565b61268081611982565b82525050565b60408201600082015161269c6000850182612668565b5060208201516126af6020850182612677565b50505050565b60006126c18383612686565b60408301905092915050565b6000602082019050919050565b60006126e58261263c565b6126ef8185612647565b93506126fa83612658565b8060005b8381101561272b57815161271288826126b5565b975061271d836126cd565b9250506001810190506126fe565b5085935050505092915050565b6000815461274581612199565b61274f8186611bfb565b9450600182166000811461276a5760018114612780576127b3565b60ff1983168652811515602002860193506127b3565b612789856121ca565b60005b838110156127ab5781548189015260018201915060208101905061278c565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b6000612817612812836127ed565b6127fa565b9050919050565b6000819050919050565b6128318161281e565b82525050565b600082825260208201905092915050565b6000815461285581612199565b61285f8186612837565b9450600182166000811461287a5760018114612890576128c3565b60ff1983168652811515602002860193506128c3565b612899856121ca565b60005b838110156128bb5781548189015260018201915060208101905061289c565b808801955050505b50505092915050565b60006040830160008084015490506128e381612804565b6128f06000870182612828565b506001840185830360208701526129078382612848565b925050819250505092915050565b600061292183836128cc565b905092915050565b6000600282019050919050565b6000612941826127bc565b61294b81856127c7565b93508360208202850161295d856127d8565b8060005b85811015612998578484038952816129798582612915565b945061298483612929565b925060208a01995050600181019050612961565b50829750879550505050505092915050565b600060608201905081810360008301526129c481866126da565b905081810360208301526129d88185612738565b905081810360408301526129ec8184612936565b9050949350505050565b6000604082019050612a0b6000830185611a49565b612a186020830184611c8c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a59826119c0565b9150612a64836119c0565b925082612a7457612a73612a1f565b5b828204905092915050565b6000612a8a826119c0565b9150612a95836119c0565b9250828203905081811115612aad57612aac6120b9565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612adf8383612668565b60208301905092915050565b6000602082019050919050565b612b0181612ab3565b612b0b8184612abe565b9250612b1682612ac9565b8060005b83811015612b47578151612b2e8782612ad3565b9650612b3983612aeb565b925050600181019050612b1a565b505050505050565b6000819050919050565b6000612b74612b6f612b6a84612b4f565b61224e565b6119c0565b9050919050565b612b8481612b59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612bb182612b8a565b612bbb8185612b95565b9350612bcb818560208601611c0c565b612bd481611c36565b840191505092915050565b6000610140820190508181036000830152612bfa818b612738565b9050612c09602083018a611a49565b612c166040830189612af8565b612c236080830188612af8565b612c3060c0830187612b7b565b612c3d60e0830186611c8c565b612c4b610100830185611c8c565b818103610120830152612c5e8184612ba6565b90509998505050505050505050565b600081519050612c7c816119ca565b92915050565b600060208284031215612c9857612c976118a6565b5b6000612ca684828501612c6d565b91505092915050565b6000608082019050612cc46000830187611a49565b612cd16020830186611b6a565b612cde6040830185611a49565b612ceb6060830184611c8c565b95945050505050565b82818337600083830152505050565b6000612d0f8385611bfb565b9350612d1c838584612cf4565b612d2583611c36565b840190509392505050565b82818337505050565b612d4560608383612d30565b5050565b600060c0820190508181036000830152612d64818789612d03565b9050612d736020830186612d39565b612d806080830185611c8c565b81810360a0830152612d928184612ba6565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612dfa603183611bfb565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612e5682611bf0565b612e608185612837565b9350612e70818560208601611c0c565b612e7981611c36565b840191505092915050565b6000604083016000830151612e9c6000860182612828565b5060208301518482036020860152612eb48282612e4b565b9150508091505092915050565b6000612ecd8383612e84565b905092915050565b6000602082019050919050565b6000612eed82612e30565b612ef781856127c7565b935083602082028501612f0985612e3b565b8060005b85811015612f455784840389528151612f268582612ec1565b9450612f3183612ed5565b925060208a01995050600181019050612f0d565b50829750879550505050505092915050565b60006060820190508181036000830152612f7181866126da565b90508181036020830152612f858185612738565b90508181036040830152612f998184612ee2565b9050949350505050565b50565b6000612fb3600083612b95565b9150612fbe82612fa3565b600082019050919050565b6000610140820190508181036000830152612fe4818a612738565b9050612ff36020830189611a49565b6130006040830188612af8565b61300d6080830187612af8565b61301a60c0830186612b7b565b61302760e0830185611c8c565b613035610100830184611c8c565b81810361012083015261304781612fa6565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006130b1603383611bfb565b91506130bc82613055565b604082019050919050565b600060208201905081810360008301526130e0816130a4565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613143602483611bfb565b915061314e826130e7565b604082019050919050565b6000602082019050818103600083015261317281613136565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006131af601883611bfb565b91506131ba82613179565b602082019050919050565b600060208201905081810360008301526131de816131a2565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613241603a83611bfb565b915061324c826131e5565b604082019050919050565b6000602082019050818103600083015261327081613234565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126132a2576132a1613277565b5b80830191505092915050565b6132b78161281e565b81146132c257600080fd5b50565b600081356132d2816132ae565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613314846132db565b9350801983169250808416831791505092915050565b600061334561334061333b8461281e565b61224e565b61281e565b9050919050565b6000819050919050565b61335f8261332a565b61337261336b8261334c565b83546132e8565b8255505050565b6000808335600160200384360303811261339657613395613277565b5b80840192508235915067ffffffffffffffff8211156133b8576133b761327c565b5b6020830192506001820236038313156133d4576133d3613281565b5b509250929050565b6133e7838383612376565b505050565b6000810160008301806133fe816132c5565b905061340a8184613356565b505050600181016020830161341f8185613379565b61342a8183866133dc565b505050505050565b61343c82826133ec565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000613476601a83611bfb565b915061348182613440565b602082019050919050565b600060208201905081810360008301526134a581613469565b9050919050565b60006134b7826119c0565b91506134c2836119c0565b9250826134d2576134d1612a1f565b5b82820690509291505056fea2646970667358221220b458a481f8cfb527c58ba5cdb06c60b6b253e5e480b41b08975749aa6709ade564736f6c63430008180033",
"deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611915565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b91906119f6565b6104c6565b005b34801561013e57600080fd5b50610147610718565b6040516101549190611a58565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611ac9565b61071e565b6040516101919190611a58565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611b3d565b61079d565b6040516101d49796959493929190611c9b565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611d44565b610929565b005b610220600480360381019061021b9190611da6565b610d94565b005b34801561022e57600080fd5b50610237610edd565b6040516102449190611a58565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611e1a565b610ee3565b005b34801561028257600080fd5b5061029d60048036038101906102989190611eb4565b611285565b005b3480156102ab57600080fd5b506102b46113f9565b6040516102c19190611a58565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611b3d565b6113ff565b6040516102ff929190611ef4565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611f73565b611423565b005b34801561033d57600080fd5b5061035860048036038101906103539190611b3d565b61165b565b6040516103689493929190612008565b60405180910390f35b34801561037d57600080fd5b506103866116b8565b6040516103939190611a58565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890612099565b60405180910390fd5b6000600760008154809291906103f6906120e8565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104676116be565b81600301819055508383826004019182610482929190612376565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611ef4565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b906124b8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610606577f0000000000000000000000000000000000000000000000000000000000000000336040517fe1130dba0000000000000000000000000000000000000000000000000000000081526004016105fd9291906124d8565b60405180910390fd5b60008211610649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106409061254d565b60405180910390fd5b60006001600081548092919061065e906120e8565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106d2919061256d565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516107099190611a58565b60405180910390a15050505050565b60075481565b60008083838101906107309190611b3d565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f2082600354604051610787929190611ef4565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461080590612199565b80601f016020809104026020016040519081016040528092919081815260200182805461083190612199565b801561087e5780601f106108535761010080835404028352916020019161087e565b820191906000526020600020905b81548152906001019060200180831161086157829003601f168201915b50505050509080600501805461089390612199565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf90612199565b801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561095457610953611b79565b5b8160020160009054906101000a900460ff16600381111561097857610977611b79565b5b146109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af906125ed565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff021916908360038111156109fa576109f9611b79565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff811115610a3857610a3761213b565b5b604051908082528060200260200182016040528015610a7157816020015b610a5e611876565b815260200190600190039081610a565790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610ada57610ad961260d565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610b48939291906129aa565b600060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610bab9291906129f6565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610c029190612a4e565b8660010154610c119190612a7f565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610c5b9190611a58565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610c8d989796959493929190612bdf565b60206040518083038185885af1158015610cab573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cd09190612c82565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610d5a9493929190612caf565b600060405180830381600087803b158015610d7457600080fd5b505af1158015610d88573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610da9906120e8565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610e249190611a58565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610e53959493929190612d49565b60206040518083038185885af1158015610e71573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e969190612c82565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610ecd9190611a58565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612e10565b60405180910390fd5b60008282810190610f829190611b3d565b90506000600660008381526020019081526020016000209050871580610fa6575086155b1561102d578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610ffa9190612a4e565b9081150290604051600060405180830381858888f19350505050158015611025573d6000803e3d6000fd5b50505061127d565b60606000600167ffffffffffffffff81111561104c5761104b61213b565b5b60405190808252806020026020018201604052801561108557816020015b611072611876565b81526020019060019003908161106a5790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106110ee576110ed61260d565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b815260040161115993929190612f57565b600060405180830381600087803b15801561117357600080fd5b505af1158015611187573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111d89190612a4e565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016112349796959493929190612fc9565b60206040518083038185885af1158015611252573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112779190612c82565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611324906130c7565b60405180910390fd5b8060030160009054906101000a900460ff161561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613159565b60405180910390fd5b80600201544211156113a4578142611397919061256d565b81600201819055506113bd565b8181600201546113b4919061256d565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516113ec9190611a58565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561144e5761144d611b79565b5b8160020160009054906101000a900460ff16600381111561147257611471611b79565b5b146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906131c5565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613257565b60405180910390fd5b60018260020160006101000a81548160ff0219169083600381111561158657611585611b79565b5b0217905550858583600501918261159e929190612376565b5060005b8484905081101561161a57826006018585838181106115c4576115c361260d565b5b90506020028101906115d69190613286565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161160b9190613432565b505080806001019150506115a2565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161164a9190611a58565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006116c8611701565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156117855760008082815260200190815260200160002060030160009054906101000a900460ff1661177857600080828152602001908152602001600020600201544211611778576000808281526020019081526020016000206001015482611775919061256d565b91505b8080600101915050611707565b50600081116117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061348c565b60405180910390fd5b600081446117d791906134ac565b9050600080600090505b60015481101561186f5760008082815260200190815260200160002060030160009054906101000a900460ff166118625760008082815260200190815260200160002060020154421161186257600080828152602001908152602001600020600101548261184f919061256d565b9150828211156118615780945061186f565b5b80806001019150506117e1565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118d5576118d46118b0565b5b8235905067ffffffffffffffff8111156118f2576118f16118b5565b5b60208301915083600182028301111561190e5761190d6118ba565b5b9250929050565b6000806020838503121561192c5761192b6118a6565b5b600083013567ffffffffffffffff81111561194a576119496118ab565b5b611956858286016118bf565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061198d82611962565b9050919050565b61199d81611982565b81146119a857600080fd5b50565b6000813590506119ba81611994565b92915050565b6000819050919050565b6119d3816119c0565b81146119de57600080fd5b50565b6000813590506119f0816119ca565b92915050565b600080600060608486031215611a0f57611a0e6118a6565b5b6000611a1d868287016119ab565b9350506020611a2e868287016119e1565b9250506040611a3f868287016119e1565b9150509250925092565b611a52816119c0565b82525050565b6000602082019050611a6d6000830184611a49565b92915050565b60008083601f840112611a8957611a886118b0565b5b8235905067ffffffffffffffff811115611aa657611aa56118b5565b5b602083019150836001820283011115611ac257611ac16118ba565b5b9250929050565b60008060008060608587031215611ae357611ae26118a6565b5b6000611af1878288016119e1565b9450506020611b02878288016119e1565b935050604085013567ffffffffffffffff811115611b2357611b226118ab565b5b611b2f87828801611a73565b925092505092959194509250565b600060208284031215611b5357611b526118a6565b5b6000611b61848285016119e1565b91505092915050565b611b7381611982565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611bb957611bb8611b79565b5b50565b6000819050611bca82611ba8565b919050565b6000611bda82611bbc565b9050919050565b611bea81611bcf565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c2a578082015181840152602081019050611c0f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c5282611bf0565b611c5c8185611bfb565b9350611c6c818560208601611c0c565b611c7581611c36565b840191505092915050565b60008115159050919050565b611c9581611c80565b82525050565b600060e082019050611cb0600083018a611b6a565b611cbd6020830189611a49565b611cca6040830188611be1565b611cd76060830187611a49565b8181036080830152611ce98186611c47565b905081810360a0830152611cfd8185611c47565b9050611d0c60c0830184611c8c565b98975050505050505050565b611d2181611c80565b8114611d2c57600080fd5b50565b600081359050611d3e81611d18565b92915050565b60008060408385031215611d5b57611d5a6118a6565b5b6000611d69858286016119e1565b9250506020611d7a85828601611d2f565b9150509250929050565b600081905082602060030282011115611da057611d9f6118ba565b5b92915050565b60008060008060a08587031215611dc057611dbf6118a6565b5b6000611dce878288016119e1565b945050602085013567ffffffffffffffff811115611def57611dee6118ab565b5b611dfb878288016118bf565b93509350506040611e0e87828801611d84565b91505092959194509250565b60008060008060008060a08789031215611e3757611e366118a6565b5b6000611e4589828a01611d2f565b9650506020611e5689828a01611d2f565b9550506040611e6789828a016119e1565b9450506060611e7889828a016119e1565b935050608087013567ffffffffffffffff811115611e9957611e986118ab565b5b611ea589828a01611a73565b92509250509295509295509295565b60008060408385031215611ecb57611eca6118a6565b5b6000611ed9858286016119e1565b9250506020611eea858286016119e1565b9150509250929050565b6000604082019050611f096000830185611a49565b611f166020830184611a49565b9392505050565b60008083601f840112611f3357611f326118b0565b5b8235905067ffffffffffffffff811115611f5057611f4f6118b5565b5b602083019150836020820283011115611f6c57611f6b6118ba565b5b9250929050565b600080600080600060608688031215611f8f57611f8e6118a6565b5b6000611f9d888289016119e1565b955050602086013567ffffffffffffffff811115611fbe57611fbd6118ab565b5b611fca888289016118bf565b9450945050604086013567ffffffffffffffff811115611fed57611fec6118ab565b5b611ff988828901611f1d565b92509250509295509295909350565b600060808201905061201d6000830187611b6a565b61202a6020830186611a49565b6120376040830185611a49565b6120446060830184611c8c565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000612083601083611bfb565b915061208e8261204d565b602082019050919050565b600060208201905081810360008301526120b281612076565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120f3826119c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612125576121246120b9565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806121b157607f821691505b6020821081036121c4576121c361216a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261222c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826121ef565b61223686836121ef565b95508019841693508086168417925050509392505050565b6000819050919050565b600061227361226e612269846119c0565b61224e565b6119c0565b9050919050565b6000819050919050565b61228d83612258565b6122a16122998261227a565b8484546121fc565b825550505050565b600090565b6122b66122a9565b6122c1818484612284565b505050565b5b818110156122e5576122da6000826122ae565b6001810190506122c7565b5050565b601f82111561232a576122fb816121ca565b612304846121df565b81016020851015612313578190505b61232761231f856121df565b8301826122c6565b50505b505050565b600082821c905092915050565b600061234d6000198460080261232f565b1980831691505092915050565b6000612366838361233c565b9150826002028217905092915050565b6123808383612130565b67ffffffffffffffff8111156123995761239861213b565b5b6123a38254612199565b6123ae8282856122e9565b6000601f8311600181146123dd57600084156123cb578287013590505b6123d5858261235a565b86555061243d565b601f1984166123eb866121ca565b60005b82811015612413578489013582556001820191506020850194506020810190506123ee565b86831015612430578489013561242c601f89168261233c565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006124a2603683611bfb565b91506124ad82612446565b604082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b60006040820190506124ed6000830185611b6a565b6124fa6020830184611b6a565b9392505050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000612537601183611bfb565b915061254282612501565b602082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b6000612578826119c0565b9150612583836119c0565b925082820190508082111561259b5761259a6120b9565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006125d7602083611bfb565b91506125e2826125a1565b602082019050919050565b60006020820190508181036000830152612606816125ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612671816119c0565b82525050565b61268081611982565b82525050565b60408201600082015161269c6000850182612668565b5060208201516126af6020850182612677565b50505050565b60006126c18383612686565b60408301905092915050565b6000602082019050919050565b60006126e58261263c565b6126ef8185612647565b93506126fa83612658565b8060005b8381101561272b57815161271288826126b5565b975061271d836126cd565b9250506001810190506126fe565b5085935050505092915050565b6000815461274581612199565b61274f8186611bfb565b9450600182166000811461276a5760018114612780576127b3565b60ff1983168652811515602002860193506127b3565b612789856121ca565b60005b838110156127ab5781548189015260018201915060208101905061278c565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b6000612817612812836127ed565b6127fa565b9050919050565b6000819050919050565b6128318161281e565b82525050565b600082825260208201905092915050565b6000815461285581612199565b61285f8186612837565b9450600182166000811461287a5760018114612890576128c3565b60ff1983168652811515602002860193506128c3565b612899856121ca565b60005b838110156128bb5781548189015260018201915060208101905061289c565b808801955050505b50505092915050565b60006040830160008084015490506128e381612804565b6128f06000870182612828565b506001840185830360208701526129078382612848565b925050819250505092915050565b600061292183836128cc565b905092915050565b6000600282019050919050565b6000612941826127bc565b61294b81856127c7565b93508360208202850161295d856127d8565b8060005b85811015612998578484038952816129798582612915565b945061298483612929565b925060208a01995050600181019050612961565b50829750879550505050505092915050565b600060608201905081810360008301526129c481866126da565b905081810360208301526129d88185612738565b905081810360408301526129ec8184612936565b9050949350505050565b6000604082019050612a0b6000830185611a49565b612a186020830184611c8c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a59826119c0565b9150612a64836119c0565b925082612a7457612a73612a1f565b5b828204905092915050565b6000612a8a826119c0565b9150612a95836119c0565b9250828203905081811115612aad57612aac6120b9565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612adf8383612668565b60208301905092915050565b6000602082019050919050565b612b0181612ab3565b612b0b8184612abe565b9250612b1682612ac9565b8060005b83811015612b47578151612b2e8782612ad3565b9650612b3983612aeb565b925050600181019050612b1a565b505050505050565b6000819050919050565b6000612b74612b6f612b6a84612b4f565b61224e565b6119c0565b9050919050565b612b8481612b59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612bb182612b8a565b612bbb8185612b95565b9350612bcb818560208601611c0c565b612bd481611c36565b840191505092915050565b6000610140820190508181036000830152612bfa818b612738565b9050612c09602083018a611a49565b612c166040830189612af8565b612c236080830188612af8565b612c3060c0830187612b7b565b612c3d60e0830186611c8c565b612c4b610100830185611c8c565b818103610120830152612c5e8184612ba6565b90509998505050505050505050565b600081519050612c7c816119ca565b92915050565b600060208284031215612c9857612c976118a6565b5b6000612ca684828501612c6d565b91505092915050565b6000608082019050612cc46000830187611a49565b612cd16020830186611b6a565b612cde6040830185611a49565b612ceb6060830184611c8c565b95945050505050565b82818337600083830152505050565b6000612d0f8385611bfb565b9350612d1c838584612cf4565b612d2583611c36565b840190509392505050565b82818337505050565b612d4560608383612d30565b5050565b600060c0820190508181036000830152612d64818789612d03565b9050612d736020830186612d39565b612d806080830185611c8c565b81810360a0830152612d928184612ba6565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612dfa603183611bfb565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612e5682611bf0565b612e608185612837565b9350612e70818560208601611c0c565b612e7981611c36565b840191505092915050565b6000604083016000830151612e9c6000860182612828565b5060208301518482036020860152612eb48282612e4b565b9150508091505092915050565b6000612ecd8383612e84565b905092915050565b6000602082019050919050565b6000612eed82612e30565b612ef781856127c7565b935083602082028501612f0985612e3b565b8060005b85811015612f455784840389528151612f268582612ec1565b9450612f3183612ed5565b925060208a01995050600181019050612f0d565b50829750879550505050505092915050565b60006060820190508181036000830152612f7181866126da565b90508181036020830152612f858185612738565b90508181036040830152612f998184612ee2565b9050949350505050565b50565b6000612fb3600083612b95565b9150612fbe82612fa3565b600082019050919050565b6000610140820190508181036000830152612fe4818a612738565b9050612ff36020830189611a49565b6130006040830188612af8565b61300d6080830187612af8565b61301a60c0830186612b7b565b61302760e0830185611c8c565b613035610100830184611c8c565b81810361012083015261304781612fa6565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006130b1603383611bfb565b91506130bc82613055565b604082019050919050565b600060208201905081810360008301526130e0816130a4565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613143602483611bfb565b915061314e826130e7565b604082019050919050565b6000602082019050818103600083015261317281613136565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006131af601883611bfb565b91506131ba82613179565b602082019050919050565b600060208201905081810360008301526131de816131a2565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613241603a83611bfb565b915061324c826131e5565b604082019050919050565b6000602082019050818103600083015261327081613234565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126132a2576132a1613277565b5b80830191505092915050565b6132b78161281e565b81146132c257600080fd5b50565b600081356132d2816132ae565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613314846132db565b9350801983169250808416831791505092915050565b600061334561334061333b8461281e565b61224e565b61281e565b9050919050565b6000819050919050565b61335f8261332a565b61337261336b8261334c565b83546132e8565b8255505050565b6000808335600160200384360303811261339657613395613277565b5b80840192508235915067ffffffffffffffff8211156133b8576133b761327c565b5b6020830192506001820236038313156133d4576133d3613281565b5b509250929050565b6133e7838383612376565b505050565b6000810160008301806133fe816132c5565b905061340a8184613356565b505050600181016020830161341f8185613379565b61342a8183866133dc565b505050505050565b61343c82826133ec565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000613476601a83611bfb565b915061348182613440565b602082019050919050565b600060208201905081810360008301526134a581613469565b9050919050565b60006134b7826119c0565b91506134c2836119c0565b9250826134d2576134d1612a1f565b5b82820690509291505056fea2646970667358221220b458a481f8cfb527c58ba5cdb06c60b6b253e5e480b41b08975749aa6709ade564736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}