30 txs
63 calls
constructor
constructor(address _owner, address _pubhouse, address _oracle, address _quoteToken)
functions
disputeBond
viewfunction disputeBond() view returns (uint256)
disputeWindow
viewfunction disputeWindow() view returns (uint256)
marketResolutions
viewfunction marketResolutions(address) view returns (uint8 status, uint256 proposedPrice, uint256 proposedAt, address proposer, address disputer, uint256 disputedPrice, uint256 bond, string proposeReason, string disputeReason)
oracle
viewfunction oracle() view returns (address)
owner
viewfunction owner() view returns (address)
precision
viewfunction precision() view returns (uint256)
protocolTeam
viewfunction protocolTeam() view returns (address)
pubhouse
viewfunction pubhouse() view returns (address)
quoteToken
viewfunction quoteToken() view returns (address)
deployMarket
nonpayablefunction deployMarket(address _counterParty, uint256 _defaultSupply, uint256 _quoteReserve, string _description, uint256 _endTime) returns (address market)
disputeResolution
nonpayablefunction disputeResolution(address market, uint256 desiredPrice, string reason)
finalizeUncontested
nonpayablefunction finalizeUncontested(address market)
forceResolution
nonpayablefunction forceResolution(address market, uint256 price, string reason)
proposeResolution
nonpayablefunction proposeResolution(address market, uint256 price, string reason)
renounceOwnership
nonpayablefunction renounceOwnership()
setDisputeParams
nonpayablefunction setDisputeParams(uint256 _window, uint256 _bond)
setOracle
nonpayablefunction setOracle(address _oracle)
setProtocolTeam
nonpayablefunction setProtocolTeam(address _team)
teamResolveResolution
nonpayablefunction teamResolveResolution(address market, uint256 finalPrice, string reason)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ResolutionDisputed
event ResolutionDisputed(address indexed market, uint256 desiredPrice, address indexed disputer, uint256 bond, string reason)
ResolutionFinalized
event ResolutionFinalized(address indexed market, uint256 price)
ResolutionForced
event ResolutionForced(address indexed market, uint256 price, address indexed proposer, uint256 bond, string reason)
ResolutionProposed
event ResolutionProposed(address indexed market, uint256 price, address indexed proposer, string reason)
ResolutionReset
event ResolutionReset(address indexed market)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052620f4240600655615460600755600654606461002091906102d1565b60085534801561002e575f5ffd5b50604051615b31380380615b3183398181016040528101906100509190610370565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c1575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100b891906103e3565b60405180910390fd5b6100d0816101da60201b60201c565b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506103fc565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6102db8261029b565b91506102e68361029b565b92508282026102f48161029b565b9150828204841483151761030b5761030a6102a4565b5b5092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61033f82610316565b9050919050565b61034f81610335565b8114610359575f5ffd5b50565b5f8151905061036a81610346565b92915050565b5f5f5f5f6080858703121561038857610387610312565b5b5f6103958782880161035c565b94505060206103a68782880161035c565b93505060406103b78782880161035c565b92505060606103c88782880161035c565b91505092959194509250565b6103dd81610335565b82525050565b5f6020820190506103f65f8301846103d4565b92915050565b615728806104095f395ff3fe608060405234801561000f575f5ffd5b506004361061012a575f3560e01c80638da5cb5b116100ab578063cd5b0bd91161006f578063cd5b0bd9146102e2578063d3b5dc3b1461031a578063dcbae53514610338578063f2fde38b14610354578063fda78eda146103705761012a565b80638da5cb5b1461025057806391f89e0d1461026e5780639d0ab9911461028a578063a7375026146102a6578063aeb6097f146102c45761012a565b80633ddcf6d6116100f25780633ddcf6d6146101d4578063715018a6146101f05780637adbf973146101fa5780637dc0d1d01461021657806384dda208146102345761012a565b806306b9101d1461012e57806309bf5e061461014a578063117f5f921461017a57806317baaf2014610198578063217a4b70146101b6575b5f5ffd5b61014860048036038101906101439190611e73565b61038c565b005b610164600480360381019061015f919061201c565b610497565b60405161017191906120be565b60405180910390f35b6101826105f9565b60405161018f91906120e6565b60405180910390f35b6101a06105ff565b6040516101ad91906120e6565b60405180910390f35b6101be610605565b6040516101cb919061215a565b60405180910390f35b6101ee60048036038101906101e99190612173565b61062a565b005b6101f8610675565b005b610214600480360381019061020f9190612173565b610688565b005b61021e6106d3565b60405161022b91906120be565b60405180910390f35b61024e6004803603810190610249919061219e565b6106f8565b005b610258610712565b60405161026591906120be565b60405180910390f35b61028860048036038101906102839190611e73565b610739565b005b6102a4600480360381019061029f9190611e73565b610a43565b005b6102ae610b15565b6040516102bb91906120be565b60405180910390f35b6102cc610b3a565b6040516102d991906120be565b60405180910390f35b6102fc60048036038101906102f79190612173565b610b5f565b604051610311999897969594939291906122af565b60405180910390f35b610322610cff565b60405161032f91906120e6565b60405180910390f35b610352600480360381019061034d9190612173565b610d05565b005b61036e60048036038101906103699190612173565b6110f2565b005b61038a60048036038101906103859190611e73565b611176565b005b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290612392565b60405180910390fd5b610428848484845f6117c8565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f6148d552ec1927cf696fa09a17b21db2efa9c6048519227956a56da05cf44889858585604051610489939291906123dc565b60405180910390a350505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051e9061247c565b60405180910390fd5b5f8660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787878760405161055b90611d0f565b61056a9695949392919061249a565b604051809103905ff080158015610583573d5f5f3e3d5ffd5b5090505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff021916908360038111156105e7576105e66121dc565b5b02179055508091505095945050505050565b60075481565b60085481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106326119cb565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61067d6119cb565b6106865f611a52565b565b6106906119cb565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107006119cb565b81600781905550806008819055505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61074283611b13565b610781576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107789061254a565b60405180910390fd5b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050600160038111156107d5576107d46121dc565b5b815f015f9054906101000a900460ff1660038111156107f7576107f66121dc565b5b14610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906125b2565b60405180910390fd5b600754816002015461084991906125fd565b42111561088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108829061267a565b60405180910390fd5b806001015484036108d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c8906126e2565b60405180910390fd5b610921333060085460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b6c909392919063ffffffff16565b5f33905080826004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084826005018190555083838360080191826109839291906128fe565b505f826006015490506008548161099a91906125fd565b83600601819055506002835f015f6101000a81548160ff021916908360038111156109c8576109c76121dc565b5b02179055508173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167ffbde86c642e2bf9df963ef342a4e79bff9841a723e3accf29a80401708d0abf2886008548989604051610a3294939291906129cb565b60405180910390a350505050505050565b610a93333060085460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b6c909392919063ffffffff16565b610aa2848484846008546117c8565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f0c4ea21355cdfc4466adc05ab04f5dc9462032d1513b8c1111a72c0252de9811856008548686604051610b0794939291906129cb565b60405180910390a350505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052805f5260405f205f91509050805f015f9054906101000a900460ff1690806001015490806002015490806003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806004015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806005015490806006015490806007018054610bf290612737565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1e90612737565b8015610c695780601f10610c4057610100808354040283529160200191610c69565b820191905f5260205f20905b815481529060010190602001808311610c4c57829003601f168201915b505050505090806008018054610c7e90612737565b80601f0160208091040260200160405190810160405280929190818152602001828054610caa90612737565b8015610cf55780601f10610ccc57610100808354040283529160200191610cf5565b820191905f5260205f20905b815481529060010190602001808311610cd857829003601f168201915b5050505050905089565b60065481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905060016003811115610d5957610d586121dc565b5b815f015f9054906101000a900460ff166003811115610d7b57610d7a6121dc565b5b14610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612a53565b60405180910390fd5b6007548160020154610dcd91906125fd565b421015610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612abb565b60405180910390fd5b6003815f015f6101000a81548160ff02191690836003811115610e3557610e346121dc565b5b02179055505f816006015490505f826006018190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e58ee4488484600101546040518363ffffffff1660e01b8152600401610eab929190612ad9565b5f604051808303815f87803b158015610ec2575f5ffd5b505af1158015610ed4573d5f5f3e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663205fcbd08460035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16856003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb657846003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fd9565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b6040518363ffffffff1660e01b8152600401610ff6929190612b00565b5f604051808303815f87803b15801561100d575f5ffd5b505af115801561101f573d5f5f3e3d5ffd5b505050505f81111561109b5761109a826003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bee9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167f12386704bbae014323b5194ce5f7c892024a2d5aaa4067e0f6c41e81248b446d83600101546040516110e591906120e6565b60405180910390a2505050565b6110fa6119cb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361116a575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161116191906120be565b60405180910390fd5b61117381611a52565b50565b61117e6119cb565b61118783611b13565b6111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd9061254a565b60405180910390fd5b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090506002600381111561121a576112196121dc565b5b815f015f9054906101000a900460ff16600381111561123c5761123b6121dc565b5b1461127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390612b71565b60405180910390fd5b5f816004015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826003015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f836006015490505f84600601819055505f8460050154881490505f8560010154891490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff890361153e5760025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549060ff0219169055600182015f9055600282015f9055600382015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582015f9055600682015f9055600782015f6113dd9190611d1c565b600882015f6113ec9190611d1c565b50505f60025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083600381111561144f5761144e6121dc565b5b02179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86600101819055506114f6826114ac5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ae565b855b8460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bee9092919063ffffffff16565b8973ffffffffffffffffffffffffffffffffffffffff167f935dc2609cfe56743f714e73c7f080280e36b755fa2f28e8d69fa34845a8bb0660405160405180910390a26117bc565b6003865f015f6101000a81548160ff02191690836003811115611564576115636121dc565b5b021790555088866001018190555042866002018190555033866003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087878760070191826115d09291906128fe565b505f8161160a57826116035760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611605565b855b61160c565b845b905061165a818560055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bee9092919063ffffffff16565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663205fcbd08c836040518363ffffffff1660e01b81526004016116b6929190612b00565b5f604051808303815f87803b1580156116cd575f5ffd5b505af11580156116df573d5f5f3e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e58ee4488c8c6040518363ffffffff1660e01b815260040161173f929190612ad9565b5f604051808303815f87803b158015611756575f5ffd5b505af1158015611768573d5f5f3e3d5ffd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f12386704bbae014323b5194ce5f7c892024a2d5aaa4067e0f6c41e81248b446d8b6040516117b291906120e6565b60405180910390a2505b50505050505050505050565b5f60025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905061181185611b13565b611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118479061254a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85036118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990612bd9565b60405180910390fd5b5f60038111156118c5576118c46121dc565b5b815f015f9054906101000a900460ff1660038111156118e7576118e66121dc565b5b14611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90612c41565b60405180910390fd5b6001815f015f6101000a81548160ff0219169083600381111561194d5761194c6121dc565b5b021790555084816001018190555042816002018190555033816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083838260070191826119b99291906128fe565b50818160060181905550505050505050565b6119d3611c6d565b73ffffffffffffffffffffffffffffffffffffffff166119f1610712565b73ffffffffffffffffffffffffffffffffffffffff1614611a5057611a14611c6d565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a4791906120be565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f821480611b2957506706f05b59d3b2000082145b80611b3b5750670de0b6b3a764000082145b80611b6557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82145b9050919050565b611be8848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611ba193929190612c5f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c74565b50505050565b611c68838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611c21929190612ad9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c74565b505050565b5f33905090565b5f5f60205f8451602086015f885af180611c93576040513d5f823e3d81fd5b3d92505f519150505f8214611cac576001811415611cc7565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15611d0957836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611d0091906120be565b60405180910390fd5b50505050565b612a5e80612c9583390190565b508054611d2890612737565b5f825580601f10611d395750611d56565b601f0160209004905f5260205f2090810190611d559190611d59565b5b50565b5b80821115611d70575f815f905550600101611d5a565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dae82611d85565b9050919050565b611dbe81611da4565b8114611dc8575f5ffd5b50565b5f81359050611dd981611db5565b92915050565b5f819050919050565b611df181611ddf565b8114611dfb575f5ffd5b50565b5f81359050611e0c81611de8565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112611e3357611e32611e12565b5b8235905067ffffffffffffffff811115611e5057611e4f611e16565b5b602083019150836001820283011115611e6c57611e6b611e1a565b5b9250929050565b5f5f5f5f60608587031215611e8b57611e8a611d7d565b5b5f611e9887828801611dcb565b9450506020611ea987828801611dfe565b935050604085013567ffffffffffffffff811115611eca57611ec9611d81565b5b611ed687828801611e1e565b925092505092959194509250565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f2e82611ee8565b810181811067ffffffffffffffff82111715611f4d57611f4c611ef8565b5b80604052505050565b5f611f5f611d74565b9050611f6b8282611f25565b919050565b5f67ffffffffffffffff821115611f8a57611f89611ef8565b5b611f9382611ee8565b9050602081019050919050565b828183375f83830152505050565b5f611fc0611fbb84611f70565b611f56565b905082815260208101848484011115611fdc57611fdb611ee4565b5b611fe7848285611fa0565b509392505050565b5f82601f83011261200357612002611e12565b5b8135612013848260208601611fae565b91505092915050565b5f5f5f5f5f60a0868803121561203557612034611d7d565b5b5f61204288828901611dcb565b955050602061205388828901611dfe565b945050604061206488828901611dfe565b935050606086013567ffffffffffffffff81111561208557612084611d81565b5b61209188828901611fef565b92505060806120a288828901611dfe565b9150509295509295909350565b6120b881611da4565b82525050565b5f6020820190506120d15f8301846120af565b92915050565b6120e081611ddf565b82525050565b5f6020820190506120f95f8301846120d7565b92915050565b5f819050919050565b5f61212261211d61211884611d85565b6120ff565b611d85565b9050919050565b5f61213382612108565b9050919050565b5f61214482612129565b9050919050565b6121548161213a565b82525050565b5f60208201905061216d5f83018461214b565b92915050565b5f6020828403121561218857612187611d7d565b5b5f61219584828501611dcb565b91505092915050565b5f5f604083850312156121b4576121b3611d7d565b5b5f6121c185828601611dfe565b92505060206121d285828601611dfe565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6004811061221a576122196121dc565b5b50565b5f81905061222a82612209565b919050565b5f6122398261221d565b9050919050565b6122498161222f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6122818261224f565b61228b8185612259565b935061229b818560208601612269565b6122a481611ee8565b840191505092915050565b5f610120820190506122c35f83018c612240565b6122d0602083018b6120d7565b6122dd604083018a6120d7565b6122ea60608301896120af565b6122f760808301886120af565b61230460a08301876120d7565b61231160c08301866120d7565b81810360e08301526123238185612277565b90508181036101008301526123388184612277565b90509a9950505050505050505050565b7f4f6e6c79206f7261636c650000000000000000000000000000000000000000005f82015250565b5f61237c600b83612259565b915061238782612348565b602082019050919050565b5f6020820190508181035f8301526123a981612370565b9050919050565b5f6123bb8385612259565b93506123c8838584611fa0565b6123d183611ee8565b840190509392505050565b5f6040820190506123ef5f8301866120d7565b81810360208301526124028184866123b0565b9050949350505050565b7f4f6e6c7920707562686f7573652063616e2063616c6c20746869732066756e635f8201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f612466602483612259565b91506124718261240c565b604082019050919050565b5f6020820190508181035f8301526124938161245a565b9050919050565b5f60c0820190506124ad5f8301896120af565b6124ba60208301886120af565b6124c760408301876120d7565b6124d460608301866120d7565b81810360808301526124e68185612277565b90506124f560a08301846120d7565b979650505050505050565b7f496e76616c6964207072696365000000000000000000000000000000000000005f82015250565b5f612534600d83612259565b915061253f82612500565b602082019050919050565b5f6020820190508181035f83015261256181612528565b9050919050565b7f4e6f7420696e2070726f706f73656420737461746500000000000000000000005f82015250565b5f61259c601583612259565b91506125a782612568565b602082019050919050565b5f6020820190508181035f8301526125c981612590565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61260782611ddf565b915061261283611ddf565b925082820190508082111561262a576126296125d0565b5b92915050565b7f57696e646f77206f7665720000000000000000000000000000000000000000005f82015250565b5f612664600b83612259565b915061266f82612630565b602082019050919050565b5f6020820190508181035f83015261269181612658565b9050919050565b7f53616d652061732070726f706f736564000000000000000000000000000000005f82015250565b5f6126cc601083612259565b91506126d782612698565b602082019050919050565b5f6020820190508181035f8301526126f9816126c0565b9050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061274e57607f821691505b6020821081036127615761276061270a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026127c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612788565b6127cd8683612788565b95508019841693508086168417925050509392505050565b5f6127ff6127fa6127f584611ddf565b6120ff565b611ddf565b9050919050565b5f819050919050565b612818836127e5565b61282c61282482612806565b848454612794565b825550505050565b5f5f905090565b612843612834565b61284e81848461280f565b505050565b5b81811015612871576128665f8261283b565b600181019050612854565b5050565b601f8211156128b65761288781612767565b61289084612779565b8101602085101561289f578190505b6128b36128ab85612779565b830182612853565b50505b505050565b5f82821c905092915050565b5f6128d65f19846008026128bb565b1980831691505092915050565b5f6128ee83836128c7565b9150826002028217905092915050565b6129088383612700565b67ffffffffffffffff81111561292157612920611ef8565b5b61292b8254612737565b612936828285612875565b5f601f831160018114612963575f8415612951578287013590505b61295b85826128e3565b8655506129c2565b601f19841661297186612767565b5f5b8281101561299857848901358255600182019150602085019450602081019050612973565b868310156129b557848901356129b1601f8916826128c7565b8355505b6001600288020188555050505b50505050505050565b5f6060820190506129de5f8301876120d7565b6129eb60208301866120d7565b81810360408301526129fe8184866123b0565b905095945050505050565b7f4e6f742070726f706f73656400000000000000000000000000000000000000005f82015250565b5f612a3d600c83612259565b9150612a4882612a09565b602082019050919050565b5f6020820190508181035f830152612a6a81612a31565b9050919050565b7f57696e646f77206f70656e0000000000000000000000000000000000000000005f82015250565b5f612aa5600b83612259565b9150612ab082612a71565b602082019050919050565b5f6020820190508181035f830152612ad281612a99565b9050919050565b5f604082019050612aec5f8301856120af565b612af960208301846120d7565b9392505050565b5f604082019050612b135f8301856120af565b612b2060208301846120af565b9392505050565b7f4e6f7420696e20646973707574656420737461746500000000000000000000005f82015250565b5f612b5b601583612259565b9150612b6682612b27565b602082019050919050565b5f6020820190508181035f830152612b8881612b4f565b9050919050565b7f43616e6e6f7420666f726365207769746820544f4f5f4541524c5900000000005f82015250565b5f612bc3601b83612259565b9150612bce82612b8f565b602082019050919050565b5f6020820190508181035f830152612bf081612bb7565b9050919050565b7f4d61726b6574206e6f7420756e7265736f6c76656400000000000000000000005f82015250565b5f612c2b601583612259565b9150612c3682612bf7565b602082019050919050565b5f6020820190508181035f830152612c5881612c1f565b9050919050565b5f606082019050612c725f8301866120af565b612c7f60208301856120af565b612c8c60408301846120d7565b94935050505056fe608060405234801561000f575f5ffd5b50604051612a5e380380612a5e8339818101604052810190610031919061042a565b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361009f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161009690610529565b60405180910390fd5b85600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600e8190555084600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016101c3929190610565565b6020604051808303815f875af11580156101df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020391906105c1565b508360058190555083600781905550826006819055508260088190555081600a908161022f91906107f3565b505f811161023d575f61023f565b805b600b819055505050505050506108c2565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61028a82610261565b9050919050565b61029a81610280565b81146102a4575f5ffd5b50565b5f815190506102b581610291565b92915050565b5f819050919050565b6102cd816102bb565b81146102d7575f5ffd5b50565b5f815190506102e8816102c4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61033c826102f6565b810181811067ffffffffffffffff8211171561035b5761035a610306565b5b80604052505050565b5f61036d610250565b90506103798282610333565b919050565b5f67ffffffffffffffff82111561039857610397610306565b5b6103a1826102f6565b9050602081019050919050565b8281835e5f83830152505050565b5f6103ce6103c98461037e565b610364565b9050828152602081018484840111156103ea576103e96102f2565b5b6103f58482856103ae565b509392505050565b5f82601f830112610411576104106102ee565b5b81516104218482602086016103bc565b91505092915050565b5f5f5f5f5f5f60c0878903121561044457610443610259565b5b5f61045189828a016102a7565b965050602061046289828a016102a7565b955050604061047389828a016102da565b945050606061048489828a016102da565b935050608087015167ffffffffffffffff8111156104a5576104a461025d565b5b6104b189828a016103fd565b92505060a06104c289828a016102da565b9150509295509295509295565b5f82825260208201905092915050565b7f436f756e74657270617274792063616e6e6f74206265203020616464726573735f82015250565b5f6105136020836104cf565b915061051e826104df565b602082019050919050565b5f6020820190508181035f83015261054081610507565b9050919050565b61055081610280565b82525050565b61055f816102bb565b82525050565b5f6040820190506105785f830185610547565b6105856020830184610556565b9392505050565b5f8115159050919050565b6105a08161058c565b81146105aa575f5ffd5b50565b5f815190506105bb81610597565b92915050565b5f602082840312156105d6576105d5610259565b5b5f6105e3848285016105ad565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061063a57607f821691505b60208210810361064d5761064c6105f6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610674565b6106b98683610674565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6106f46106ef6106ea846102bb565b6106d1565b6102bb565b9050919050565b5f819050919050565b61070d836106da565b610721610719826106fb565b848454610680565b825550505050565b5f5f905090565b610738610729565b610743818484610704565b505050565b5b818110156107665761075b5f82610730565b600181019050610749565b5050565b601f8211156107ab5761077c81610653565b61078584610665565b81016020851015610794578190505b6107a86107a085610665565b830182610748565b50505b505050565b5f82821c905092915050565b5f6107cb5f19846008026107b0565b1980831691505092915050565b5f6107e383836107bc565b9150826002028217905092915050565b6107fc826105ec565b67ffffffffffffffff81111561081557610814610306565b5b61081f8254610623565b61082a82828561076a565b5f60209050601f83116001811461085b575f8415610849578287015190505b61085385826107d8565b8655506108ba565b601f19841661086986610653565b5f5b828110156108905784890151825560018201915060208501945060208101905061086b565b868310156108ad57848901516108a9601f8916826107bc565b8355505b6001600288020188555050505b505050505050565b61218f806108cf5f395ff3fe608060405234801561000f575f5ffd5b5060043610610135575f3560e01c806372c9f3dd116100b6578063d7771d3a1161007a578063d7771d3a14610379578063de29278914610397578063e349ba59146103b5578063eaaf0108146103d3578063eff38f92146103f2578063f0912a661461041057610135565b806372c9f3dd146102bf5780637ed10275146102dd578063986e6bad146102fb578063c26f78b314610319578063d2b0b0f21461034957610135565b80634170cd5e116100fd5780634170cd5e146101f3578063463a98d914610223578063651d69861461025357806366adcbf014610283578063691b99f7146102a157610135565b806313ed2ecc14610139578063217a4b70146101695780632c453bdf146101875780633667a038146101a5578063408b8898146101d5575b5f5ffd5b610153600480360381019061014e919061162f565b610440565b604051610160919061168e565b60405180910390f35b610171610506565b60405161017e9190611721565b60405180910390f35b61018f61052b565b60405161019c919061175a565b60405180910390f35b6101bf60048036038101906101ba9190611796565b610550565b6040516101cc919061168e565b60405180910390f35b6101dd610666565b6040516101ea919061168e565b60405180910390f35b61020d600480360381019061020891906117e6565b61066c565b60405161021a919061168e565b60405180910390f35b61023d60048036038101906102389190611796565b6106ec565b60405161024a919061168e565b60405180910390f35b61026d60048036038101906102689190611859565b610803565b60405161027a91906118c1565b60405180910390f35b61028b6109c5565b604051610298919061168e565b60405180910390f35b6102a96109ca565b6040516102b6919061168e565b60405180910390f35b6102c76109d0565b6040516102d4919061168e565b60405180910390f35b6102e56109d6565b6040516102f2919061168e565b60405180910390f35b6103036109dc565b604051610310919061168e565b60405180910390f35b610333600480360381019061032e919061162f565b6109e5565b604051610340919061168e565b60405180910390f35b610363600480360381019061035e91906117e6565b610aab565b604051610370919061168e565b60405180910390f35b610381610b2b565b60405161038e919061168e565b60405180910390f35b61039f610b31565b6040516103ac919061194d565b60405180910390f35b6103bd610b46565b6040516103ca91906118c1565b60405180910390f35b6103db610c51565b6040516103e9929190611966565b60405180910390f35b6103fa610c61565b60405161040791906119fd565b60405180910390f35b61042a60048036038101906104259190611a40565b610cf1565b604051610437919061168e565b60405180910390f35b5f5f840361045757610450610f51565b90506104ff565b5f61046b8484610f5890919063ffffffff16565b90505f6104818685610f7990919063ffffffff16565b90505f6104978284610f9390919063ffffffff16565b90505f6104b56104a68361103d565b8861106790919063ffffffff16565b90505f6104db6104c48461103d565b6104cd8761103d565b61108190919063ffffffff16565b146104f7576104f460018261106790919063ffffffff16565b90505b809450505050505b9392505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f3373ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d790611ab5565b60405180910390fd5b5f83036105f6576105ef610f51565b905061065f565b5f610601858561066c565b90505f831461064e578281101561064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490611b1d565b60405180910390fd5b5b61065a855f83876110aa565b809150505b9392505050565b60065481565b5f6106e4825f6001811115610684576106836118da565b5b856001811115610697576106966118da565b5b146106a4576007546106a8565b6005545b5f60018111156106bb576106ba6118da565b5b8660018111156106ce576106cd6118da565b5b146106db576008546106df565b6006545b6109e5565b905092915050565b5f3373ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077390611ab5565b60405180910390fd5b5f83036107925761078b610f51565b90506107fc565b5f61079d8585610aab565b90505f83146107ea57828110156107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e090611b1d565b60405180910390fd5b5b6107f785600186846110aa565b809150505b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90611ab5565b60405180910390fd5b5f826109495761094484600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108f7919061175a565b602060405180830381865afa158015610912573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109369190611b4f565b610f7990919063ffffffff16565b61094d565b6004545b90505f8561095d57600354610961565b6002545b90505f8661097157600154610974565b5f545b90505f61098a82856113a790919063ffffffff16565b90505f830361099f575f9450505050506109be565b5f6109b38483610f9390919063ffffffff16565b905080955050505050505b9392505050565b5f5481565b60075481565b60015481565b60055481565b5f600b54905090565b5f5f84036109fc576109f5610f51565b9050610aa4565b5f610a108484610f5890919063ffffffff16565b90505f610a268686610f7990919063ffffffff16565b90505f610a3c8284610f9390919063ffffffff16565b90505f610a5a610a4b8361103d565b8761106790919063ffffffff16565b90505f610a80610a698461103d565b610a728761103d565b61108190919063ffffffff16565b14610a9c57610a9960018261106790919063ffffffff16565b90505b809450505050505b9392505050565b5f610b23825f6001811115610ac357610ac26118da565b5b856001811115610ad657610ad56118da565b5b14610ae357600754610ae7565b6005545b5f6001811115610afa57610af96118da565b5b866001811115610b0d57610b0c6118da565b5b14610b1a57600854610b1e565b6006545b610440565b905092915050565b60085481565b5f60095f9054906101000a900460ff16905090565b5f3373ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd90611ab5565b60405180910390fd5b5f6004549050610c04600154610bf65f548461106790919063ffffffff16565b61106790919063ffffffff16565b90505f610c1e600354600254610f7990919063ffffffff16565b90505f8103610c31575f92505050610c4e565b5f610c458284610f9390919063ffffffff16565b90508093505050505b90565b5f5f600254600354915091509091565b6060600a8054610c7090611ba7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9c90611ba7565b8015610ce75780601f10610cbe57610100808354040283529160200191610ce7565b820191905f5260205f20905b815481529060010190602001808311610cca57829003601f168201915b5050505050905090565b5f3373ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7890611ab5565b60405180910390fd5b5f6003811115610d9457610d936118da565b5b60095f9054906101000a900460ff166003811115610db557610db46118da565b5b14610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90611c21565b60405180910390fd5b8160095f6101000a81548160ff02191690836003811115610e1957610e186118da565b5b02179055505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e79919061175a565b602060405180830381865afa158015610e94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb89190611b4f565b9050600380811115610ecd57610ecc6118da565b5b836003811115610ee057610edf6118da565b5b03610ef557806004819055505f915050610f4c565b5f60016003811115610f0a57610f096118da565b5b846003811115610f1d57610f1c6118da565b5b14610f2a57600154610f2d565b5f545b90505f8103610f3e57819250610f42565b5f92505b8160048190555050505b919050565b5f5f905090565b5f5f610f6d838561144290919063ffffffff16565b90508091505092915050565b5f5f8284610f879190611c6c565b90508091505092915050565b5f81807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10156040518060600160405280603381526020016121276033913990611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a91906119fd565b60405180910390fd5b505f61103061102185611457565b866114e190919063ffffffff16565b9050809250505092915050565b5f5f5f83121561105a57825f6110539190611c9f565b905061105e565b8290505b80915050919050565b5f5f82846110759190611cdf565b90508091505092915050565b5f8161108d6012611502565b846110989190611d12565b6110a29190611d80565b905092915050565b5f60018111156110bd576110bc6118da565b5b8460018111156110d0576110cf6118da565b5b036111ba57821561114a576110f082600654610f7990919063ffffffff16565b60068190555061110b8160055461106790919063ffffffff16565b600581905550611125825f54610f7990919063ffffffff16565b5f8190555061113f81600254610f7990919063ffffffff16565b6002819055506111b5565b61115f8260065461106790919063ffffffff16565b60068190555061117a81600554610f7990919063ffffffff16565b600581905550611194825f5461106790919063ffffffff16565b5f819055506111ae8160025461106790919063ffffffff16565b6002819055505b61129f565b8215611231576111d582600854610f7990919063ffffffff16565b6008819055506111f08160075461106790919063ffffffff16565b60078190555061120b82600154610f7990919063ffffffff16565b60018190555061122681600354610f7990919063ffffffff16565b60038190555061129e565b6112468260085461106790919063ffffffff16565b60088190555061126181600754610f7990919063ffffffff16565b60078190555061127c8260015461106790919063ffffffff16565b6001819055506112978160035461106790919063ffffffff16565b6003819055505b5b7fdbfa5b9c54947518171df329170e9ca28454a4045f8b1459a8cdda705bcf4366848484846112ef6005546112e1600e54600654610f5890919063ffffffff16565b61151a90919063ffffffff16565b61131a60075461130c600e54600854610f5890919063ffffffff16565b61151a90919063ffffffff16565b61134c60055461133e61132d6012611502565b600654610f5890919063ffffffff16565b61151a90919063ffffffff16565b61137e60075461137061135f6012611502565b600854610f5890919063ffffffff16565b61151a90919063ffffffff16565b5f546001546040516113999a99989796959493929190611e05565b60405180910390a150505050565b5f81807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10156040518060600160405280603381526020016121276033913990611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e91906119fd565b60405180910390fd5b505f83856114359190611c9f565b9050809250505092915050565b5f61144f8383600661153b565b905092915050565b5f81807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff101560405180606001604052806033815260200161212760339139906114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce91906119fd565b60405180910390fd5b5082915050919050565b5f5f6114f6838561156490919063ffffffff16565b90508091505092915050565b5f8160ff16600a6115139190611fce565b9050919050565b5f5f61152f838561157990919063ffffffff16565b90508091505092915050565b5f61154582611502565b83856115519190611d12565b61155b9190612018565b90509392505050565b5f6115718383600661158e565b905092915050565b5f611586838360066115b7565b905092915050565b5f82611599836115e0565b856115a49190612048565b6115ae91906120be565b90509392505050565b5f826115c283611502565b856115cd9190611d12565b6115d79190612018565b90509392505050565b5f8160ff16600a6115f19190611fce565b9050919050565b5f5ffd5b5f819050919050565b61160e816115fc565b8114611618575f5ffd5b50565b5f8135905061162981611605565b92915050565b5f5f5f60608486031215611646576116456115f8565b5b5f6116538682870161161b565b93505060206116648682870161161b565b92505060406116758682870161161b565b9150509250925092565b611688816115fc565b82525050565b5f6020820190506116a15f83018461167f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6116e96116e46116df846116a7565b6116c6565b6116a7565b9050919050565b5f6116fa826116cf565b9050919050565b5f61170b826116f0565b9050919050565b61171b81611701565b82525050565b5f6020820190506117345f830184611712565b92915050565b5f611744826116a7565b9050919050565b6117548161173a565b82525050565b5f60208201905061176d5f83018461174b565b92915050565b6002811061177f575f5ffd5b50565b5f8135905061179081611773565b92915050565b5f5f5f606084860312156117ad576117ac6115f8565b5b5f6117ba86828701611782565b93505060206117cb8682870161161b565b92505060406117dc8682870161161b565b9150509250925092565b5f5f604083850312156117fc576117fb6115f8565b5b5f61180985828601611782565b925050602061181a8582860161161b565b9150509250929050565b5f8115159050919050565b61183881611824565b8114611842575f5ffd5b50565b5f813590506118538161182f565b92915050565b5f5f5f606084860312156118705761186f6115f8565b5b5f61187d86828701611845565b935050602061188e8682870161161b565b925050604061189f86828701611845565b9150509250925092565b5f819050919050565b6118bb816118a9565b82525050565b5f6020820190506118d45f8301846118b2565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60048110611918576119176118da565b5b50565b5f81905061192882611907565b919050565b5f6119378261191b565b9050919050565b6119478161192d565b82525050565b5f6020820190506119605f83018461193e565b92915050565b5f6040820190506119795f83018561167f565b611986602083018461167f565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6119cf8261198d565b6119d98185611997565b93506119e98185602086016119a7565b6119f2816119b5565b840191505092915050565b5f6020820190508181035f830152611a1581846119c5565b905092915050565b60048110611a29575f5ffd5b50565b5f81359050611a3a81611a1d565b92915050565b5f60208284031215611a5557611a546115f8565b5b5f611a6284828501611a2c565b91505092915050565b7f63616c6c6572206973206e6f7420636f756e74657250617274790000000000005f82015250565b5f611a9f601a83611997565b9150611aaa82611a6b565b602082019050919050565b5f6020820190508181035f830152611acc81611a93565b9050919050565b7f536c69707061676520746f6f206c6f77000000000000000000000000000000005f82015250565b5f611b07601083611997565b9150611b1282611ad3565b602082019050919050565b5f6020820190508181035f830152611b3481611afb565b9050919050565b5f81519050611b4981611605565b92915050565b5f60208284031215611b6457611b636115f8565b5b5f611b7184828501611b3b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611bbe57607f821691505b602082108103611bd157611bd0611b7a565b5b50919050565b7f4d61726b657420616c726561647920736574746c6564000000000000000000005f82015250565b5f611c0b601683611997565b9150611c1682611bd7565b602082019050919050565b5f6020820190508181035f830152611c3881611bff565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c76826115fc565b9150611c81836115fc565b9250828201905080821115611c9957611c98611c3f565b5b92915050565b5f611ca9826118a9565b9150611cb4836118a9565b925082820390508181125f8412168282135f851215161715611cd957611cd8611c3f565b5b92915050565b5f611ce9826115fc565b9150611cf4836115fc565b9250828203905081811115611d0c57611d0b611c3f565b5b92915050565b5f611d1c826115fc565b9150611d27836115fc565b9250828202611d35816115fc565b91508282048414831517611d4c57611d4b611c3f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611d8a826115fc565b9150611d95836115fc565b925082611da557611da4611d53565b5b828206905092915050565b60028110611dc157611dc06118da565b5b50565b5f819050611dd182611db0565b919050565b5f611de082611dc4565b9050919050565b611df081611dd6565b82525050565b611dff81611824565b82525050565b5f61014082019050611e195f83018d611de7565b611e26602083018c611df6565b611e33604083018b61167f565b611e40606083018a61167f565b611e4d608083018961167f565b611e5a60a083018861167f565b611e6760c083018761167f565b611e7460e083018661167f565b611e8261010083018561167f565b611e9061012083018461167f565b9b9a5050505050505050505050565b5f8160011c9050919050565b5f5f8291508390505b6001851115611ef457808604811115611ed057611ecf611c3f565b5b6001851615611edf5780820291505b8081029050611eed85611e9f565b9450611eb4565b94509492505050565b5f82611f0c5760019050611fc7565b81611f19575f9050611fc7565b8160018114611f2f5760028114611f3957611f68565b6001915050611fc7565b60ff841115611f4b57611f4a611c3f565b5b8360020a915084821115611f6257611f61611c3f565b5b50611fc7565b5060208310610133831016604e8410600b8410161715611f9d5782820a905083811115611f9857611f97611c3f565b5b611fc7565b611faa8484846001611eab565b92509050818404811115611fc157611fc0611c3f565b5b81810290505b9392505050565b5f611fd8826115fc565b9150611fe3836115fc565b92506120107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611efd565b905092915050565b5f612022826115fc565b915061202d836115fc565b92508261203d5761203c611d53565b5b828204905092915050565b5f612052826118a9565b915061205d836118a9565b925082820261206b816118a9565b91507f800000000000000000000000000000000000000000000000000000000000000084145f841216156120a2576120a1611c3f565b5b82820584148315176120b7576120b6611c3f565b5b5092915050565b5f6120c8826118a9565b91506120d3836118a9565b9250826120e3576120e2611d53565b5b60015f0383147f80000000000000000000000000000000000000000000000000000000000000008314161561211b5761211a611c3f565b5b82820590509291505056fe4d69786564446563696d616c3a2075696e742076616c756520697320626967676572207468616e205f494e543235365f4d4158a2646970667358221220624d6d44f66ca9d23cfe4d6b25240a90d34fad94ffdb821fbcb6ae8987d5b26b64736f6c634300081c0033a2646970667358221220f9b0600534df7240ced2f45b12e5fcb435aa4f309093c41bd626c32a01b867af64736f6c634300081c003300000000000000000000000030ef5100f6363daf9efffef474968778f8f0512c000000000000000000000000a6d03fb62e7b6f9bfe75d90d7b22830a2c2265ea000000000000000000000000173e0505b63f1e41c1c6318494377981680b836e000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913